– XỬ LÝ TẬP TIN - TẠI SAO TRONG TRƯỜNG HỢP NÀY, CHÚNG TA KHÔNG...
Bài 5 – Xử lý tập tin
-
Tại sao trong trường hợp này, chúng ta không phải dùng hàm 08h của int 21h
đứng trước hàm 4ch của int 21h ?
-
Tại sao phải cất thẻ file. Nếu chúng ta không cần đóng file thì chúng ta có cần
cất thẻ file hay không ?
-
Trong đoạn chương trình mẫu trên có cần thiết phải
đóng tập tin hay không ?
Có thể bỏ biến thefile trong đoạn chương trình mẫu trên không ?. Khi đó chúng
ta phải dùng các lệnh gì để thay thế điều đó. Nếu có thay đổi, hãy biên dịch và
cho chạy chương trình để kiểm chứng lại kết quả.
-
Hãy sửa
đổi file BAI_5A.ASM và lưu với tên BAI_5A1.ASM để có thể thực
hiện được yêu cầu sau: tạo một tập tin mới, tên tập tin được nhập từ bàn phím.
Gợi ý: dùng hàm 0ah của int 21h để nhập vào tên file, chú ý cuối chuỗi chứa tên
file phải có zero, nhưng khi dùng hàm 0ah thì chúng ta không thể nào nhập zero
vào cuối chuỗi được, nếu ta nhập ký tự ‘0’ vào thì đó là mã ascii của ký tự ‘0’
chứ không phải là zero (con số 0). Do đó, để thực hiện được điều này chúng ta
hãy dùng giải thuật đưa 0 về cuối chuỗi như sau:
xor cx, cx
; dua zero ve cuoi chuoi
mov cl, len ;khai bao bien de dung ham 0ah cua int 21h dang
lea bx, tenfile;
max db 250
; so ky tu toi da duoc nhap
mov dl,0
;
len db ?
; chieu dai chuoi da nhap
mov [bx], dl ;
tenfile db 250 dup(?); chua noi dung
duoc nhap
3.2. Ghi nội dung của biến string1 vào một tập tin mới có tên trong thư mục và ổ
đĩa với đường dẫn như sau: “D:\TT_ASM\DATA.TXT”.
Soạn thảo như đoạn chương trình mẫu phía dưới và lưu với tên là BAI_5B.ASM.
-
Biên dịch và cho chạy file BAI_5B.ASM để kiểm tra và xem kết quả. (vào
D:\TT_ASM để xem tập tin DATA.TXT có trong đó hay chưa và có nội dung
hay chưa ?, nếu có là OK.)
-
Xem xét đoạn chương trình mẫu, hãy đưa ra giải thuật ghi nội dung của vùng
dữ liệu vào một tập tin vừa tạo.
-
Lệnh len db $ - string1 được dùng để làm gì ?.
-
Lệnh
XOR CX, CX có ý nghĩa gì? Sau khi thực hiên xong lệnh này, thanh ghi
CX có giá trị bằng bao nhiêu? Có thể thay thế nó bằng lệnh nào khác được
không ?
-
Tại sao dùng lệnh
MOV CL, LEN mà không dùng MOV CX, LEN hay
MOV CH, LEN ? Khi dùng lệnh MOV CX, LEN thì cần phải thay đổi khai báo
biến len như thế nào ? nếu không thay đổi thì sẽ có vấn đề gì xảy ra hay không ?
Hãy thay đổi, biên dịch và chạy chương trình để kiểm chứng lại kết quả so với
chương trình mẫu.
-
Hãy sửa
đổi file BAI_5B.ASM và lưu với tên BAI_5B1.ASM để có thể thực
hiện được yêu cầu sau: nhập từ một chuỗi ký tự bất kỳ, sau đó lưu vào tập tin có
tên là “d:\tt_asm\solieu.txt”. Gợi ý: dùng hàm 0Ah của int 21h để nhập vào một
chuỗi ký tự, sau đó áp dụng toàn bộ giải thuật của BAI_5B.ASM.
-
Hãy sửa đổi file BAI_5B1.ASM và lưu với tên BAI_5B2.ASM để có thể thực
hiện được yêu cầu sau: tạo tên tập tin mới, tên tập tin được nhập từ bàn phím.