– 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.