Giáo trình thực hành Lập trình hệ thống: Phần 2

7 9 0
Giáo trình thực hành Lập trình hệ thống: Phần 2

Đang tải... (xem toàn văn)

Thông tin tài liệu

[r]

(1)

Bài 5: X Lý Tp Tin

1 Mục Tiêu:

Viết chương trình xử lý tập tin tạo tập tin, xóa tập tin, ghi tập tin, đọc nội dung tập tin

2 Kiến thức cần chuẩn bị:

- Kết thí nghiệm 1, 2,

- Các hàm 3dh, 3ch, 3eh, 3fh, 40h, 41h, 42h 56h INT 21h đẻ xử lý tập tin

- Các hàm 01, 02h, 06h, 08h, 09h, 0Ah INT 21h lệnh CPU 8086

3 Nội dung thực hành:

3.1 Tạo tập tin mới:

Soạn thảo đoạn chương trình mẫu phía lưu với tên BAI_5A.ASM

- Biên dịch cho chạy file BAI_5A.ASM để kiểm tra xem kết Gợi ý: Thư mục TT_ASM phải có sẵn ổđĩa Để biết chương trình chạy hay sai, vào thư mục TT_ASM để xem có tập tin Data.txt hay khơng, có OK

- Tại thẻ file phải khai báo dạng thefile DW ? DSEG SEGMENT

tenfile db "d:\tt_asm\data.txt",0 thefile dw ?

DSEG ENDS CSEG SEGMENT

ASSUME cs:cseg, ds:dseg begin: mov ax, dseg

mov ds, ax

mov ah, 3ch ; tao tap tin moi lea dx, tenfile

mov cx, ; thuoc tinh tap tin int 21h

mov thefile, ax ; cat the file mov ah, 3eh ; dong tap tin mov bx, thefile

int 21h

mov ah, 4ch ; thoat ve Dos int 21h

CSEG ENDS

(2)

- Tại trường hợp này, dùng hàm 08h int 21h đứng trước hàm 4ch int 21h ?

- Tại phải cất thẻ file Nếu khơng cần đóng file có cần cất thẻ file hay không ?

- Trong đoạn chương trình mẫu có cần thiết phải đóng tập tin hay khơng ? Có thể bỏ biến thefile đoạn chương trình mẫu khơng ? Khi phải dùng lệnh để thay thếđiều Nếu có thay đổi, biên dịch cho chạy chương trình để kiểm chứng lại kết

- Hãy sửa đổi file BAI_5A.ASM lưu với tên BAI_5A1.ASM để thực yêu cầu sau: tạo tập tin mới, tên tập tin nhập từ bàn phím Gợi ý: dùng hàm 0ah int 21h để nhập vào tên file, ý cuối chuỗi chứa tên file phải có zero, dùng hàm 0ah khơng thể nhập zero vào cuối chuỗi được, ta nhập ký tự ‘0’ vào mã ascii ký tự ‘0’ khơng phải zero (con số 0) Do đó, để thực điều dùng giải thuật đưa cuối chuỗi sau:

3.2 Ghi nội dung biến string1 vào tập tin có tên thư mục ổ đĩa với đường dẫn sau: “D:\TT_ASM\DATA.TXT”

Soạn thảo đoạn chương trình mẫu phía lưu với tên BAI_5B.ASM - Biên dịch cho chạy file BAI_5B.ASM để kiểm tra xem kết (vào

D:\TT_ASM để xem tập tin DATA.TXT có hay chưa có nội dung hay chưa ?, có OK.)

- Xem xét đoạn chương trình mẫu, đưa giải thuật ghi nội dung vùng liệu vào tập tin vừa tạo

- Lệnh len db $ - string1 dùng để làm ?

- Lệnh XOR CX, CX có ý nghĩa gì? Sau thực hiên xong lệnh này, ghi CX có giá trị bao nhiêu? Có thể thay lệnh khác không ?

- Tại 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 cần phải thay đổi khai báo

biến len ? khơng thay đổi có vấn đề xảy hay khơng ? Hãy thay đổi, biên dịch chạy chương trình để kiểm chứng lại kết so với chương trình mẫu

- Hãy sửa đổi file BAI_5B.ASM lưu với tên BAI_5B1.ASM để thực yêu cầu sau: nhập từ chuỗi ký tự bất kỳ, sau lưu vào tập tin có tên “d:\tt_asm\solieu.txt” Gợi ý: dùng hàm 0Ah int 21h để nhập vào chuỗi ký tự, sau áp dụng tồn giải thuật BAI_5B.ASM

- Hãy sửa đổi file BAI_5B1.ASM lưu với tên BAI_5B2.ASM để thực yêu cầu sau: tạo tên tập tin mới, tên tập tin nhập từ bàn phím

xor cx, cx ; dua zero ve cuoi chuoi

(3)

Sau nhập vào chuỗi ký tự lưu chuỗi ký tựđã nhập vào tập tin vừa tạo Gợi ý: xem lại BAI_5A1.ASM để lấy lại giải thuật nhập vào tên file đưa zero (con số 0) cuối chuỗi trường hợp tên file nhập từ bàn phím vấn đề cịn lại xem lại file BAI_5B1.ASM

- Hãy sửa đổi file BAI_5B2.ASM lưu với tên BAI_5B3.ASM để thực yêu cầu sau: tạo tên tập tin mới, tên tập tin nhập từ bàn phím Sau nhập vào chuỗi ký tự thường, sau đổi hoa ký tự đầu từ lưu chuỗi ký tựđã thay đổi vào tập tin vừa tạo Gợi ý: xem lại tập làm xử lý ký tự file BAI_5B2.ASM

3.3 Đọc nội dung tập tin (đã tồn đĩa có nội dung) Hiển thị nội dung tập tin lên hình

Soạn thảo đoạn chương trình mẫu phía lưu với tên BAI_5C.ASM - Biên dịch cho chạy file BAI_5C.ASM để kiểm tra xem kết

dseg segment

string1 db "Chao em co gai Lam Hong" len db $ - string1

tenfile db "d:\tt_asm\data.txt",0 thefile dw ?

dseg ends cseg segment

assume cs:cseg, ds:dseg begin: mov ax, dseg

mov ds, ax

mov ah, 3ch ; tao tap tin moi lea dx, tenfile

mov cx, ; tap tin co thuoc tinh binh thuong int 21h

mov thefile, ax ; cat the file mov ah, 40h ; ghi file mov bx, thefile

xor cx, cx mov cl, len lea dx, string1 int 21h

mov ah, 3eh ; dong tap tin mov bx, thefile

int 21h

mov ah, 4ch ; thoat ve Dos int 21h

cseg ends

(4)

- Xem lại đoạn chương trình mẫu, đưa giải thuật đọc nội dung tập tin hiển thị nội dung hình

- Hãy thử thay đổi thuộc tính tập tin lệnh mov al, thành giá trị khác 0, 1, Biện dịch cho chạy chương trình để xem kết Có nhận xét giá trị ?

- Thẻ file có vai trị xử lý tập tin

- Nếu số byte cần đọc (giá trị chứa ghi cx) lớn kích thước thật tập tin có gây lỗi hay không ? Sau đọc nội dung tập tin vào vùng đệm hàm 3fh INT 21h, ghi ax có giá trị thay đổi hay khơng chứa (giá trị) ? Làm xác định đọc xong nội dung thành tập tin ? Hãy thửđưa hướng giải

- Hãy sửa đổi file BAI_5C.ASM lưu với tên BAI_5C1.ASM để thực yêu cầu sau: đọc nội dung tập tin hiển thị nội dung lên hình Tên tập tin nhập từ bàn phím Gợi ý: sử dụng lại giải thuật nhập tên file từ bàn phím đưa zero cuối chuỗi có liên quan

- Hãy sửa đổi file BAI_5C1.ASM lưu với tên BAI_5C2.ASM để thực yêu cầu sau: copy nội dung tập tin sau paste sang vị trí khác Gợi ý: giải thuật nhập tên file từ bàn phím có sẵn, giải thuật copy paste sau: trước hết phải mở tập tin có hàm 3dh, định nghĩa sẵn đường dẫn chứa tên file cần mở, đọc nội dung tập tin vào vùng đệm hàm 3fh, nhớ cất thẻ file; tạo tên tập tin hàm 3ch, định nghĩa sẵn đường dẫn chứa tên file cần tạo, nhớ cất thẻ file; ghi nội dung vùng đệm vào tập tin vừa tạo hàm 40h; đóng hai tập tin lại hàm 3eh, tất hàm int 21h

- Hãy sửa đổi file BAI_5C2.ASM lưu với tên BAI_5C3.ASM để thực yêu cầu sau: copy nội dung tập tin sau paste sang vị trí khác Tên tập tin copy tập tin sau paste nhập từ bàn phím Gợi ý: hoàn toàn tương tự BAI_5C2.ASM, cần tận dụng lại giải thuật nhập tên file từ bàn phím từ BAI_5B3.ASM

- Hãy sửa đổi file BAI_5C3.ASM lưu với tên BAI_5C4.ASM để thực yêu cầu sau: save as nội dung tập tin Tên tập tin copy save as nhập từ bàn phím Gợi ý: giống tương tự BAI_5C3.ASM

- Hãy sửa đổi file BAI_5C3.ASM lưu với tên BAI_5C4.ASM để thực yêu cầu sau: đọc nội dung tập tin sau nhập chuỗi ký tự ghi sau nội dung tập tin vừa mở Tên tập tin nhập từ bàn phím Gợi ý: xem lại BAI_5C1.ASM, BAI_5B1.ASM, BAI_5B2.ASM hàm 42h int 21h (dời vị trí trỏ tập tin)

(5)

về đầu tập tin hàm 42h; sau ghi nội dung vùng đệm trở lại tập tin ban đầu thông qua thẻ file Tất hàm sử dụng int 21h

- Hãy sửa đổi file BAI_5C5.ASM lưu với tên BAI_5C6.ASM để thực yêu cầu sau: giải mã nội dung tập tin mã hóa Tên tập tin cần giải mã nhập từ bàn phím Gợi ý: giải mã trường hợp ngược lại mã hóa, mã hóa theo phương thức giải mã phải làm ngược lại phương thức mã hố

3.4 Xóa tập tin

Soạn thảo đoạn chương trình mẫu phía lưu với tên BAI_5D.ASM - Biên dịch cho chạy file BAI_5D.ASM để kiểm tra xem kết

- Hãy sửa đổi file BAI_5D.ASM lưu với tên BAI_5D1.ASM để thực yêu cầu sau: xóa tên tập tin Tên tập tin cần nhập từ bàn phím Gợi ý: xem lại trước để lấy giải thuật nhập tên file từ bàn phím dseg segment

tenfile db "d:\tt_asm\data.txt",0 thefile dw ?

buffer db 251 dup ('$') dseg ends

cseg segment

assume cs:cseg, ds:dseg begin: mov ax, dseg

mov ds, ax

mov ah, 3dh ; mo tap tin da co lea dx, tenfile

mov al, ; thuoc tinh tap tin int 21h

mov thefile, ax ; cat the file

mov ah, 3fh ; doc noi dung file vao vung dem mov bx, thefile

lea dx, buffer

mov cx, 250 ; so byte can doc tu file da mo int 21h

mov ah, 3eh ; dong tap tin mov bx, thefile

int 21h

mov ah, 09h ; in noi dung cua file man hinh lea dx, buffer

int 21h

mov ah,08h ; dung man hinh de xem ket qua int 21h

mov ah, 4ch ; thoat ve Dos int 21h

cseg ends

(6)

3.5 Đổi tên tập tin cũ thành tập tin thư mục

Soạn thảo đoạn chương trình mẫu phía lưu với tên BAI_5E.ASM - Biên dịch cho chạy file BAI_5E.ASM để kiểm tra xem kết

- Hãy tạo thư mục có tên baitap nằm thư mục tt_asm Sửa đổi lệnh oldfile db “d:\tt_asm\data.txt”,0 newfile db “tt_asm\solieu.txt”,0 lại thành oldfile db “d:\tt_asm\solieu.txt”,0 newfile db “tt_asm\baitap\data.txt”,0 Biên dịch lại cho chạy chương trình để xem xét kết Có nhận xét kết nhận

- Hãy sửa đổi file BAI_5E.ASM lưu với tên BAI_5E1.ASM để thực yêu cầu sau: đổi tên tập tin Tên tập tin cũ nhập từ bàn phím Gợi ý: xem lại tập trước để lấy giải thuật nhập tên file từ bàn phím

dseg segment

tenfile db "d:\tt_asm\data.txt",0 dseg ends

cseg segment

assume cs:cseg, ds:dseg begin: mov ax, dseg

mov ds, ax

mov ah,41h ; xoa tap tin da co lea dx, tenfile

int 21h

mov ah, 4ch ; thoat ve Dos int 21h

cseg ends

end begin

dseg segment

oldfile db "d:\tt_asm\data.txt",0 newfile db "d:\tt_asm\solieu.txt",0 dseg ends

cseg segment

assume cs:cseg, ds:dseg, es: dseg begin: mov ax, dseg

mov ds, ax mov es, ax

mov ah,56h ; rename/remove tên file cu moi lea dx, oldfile

lea di, newfile int 21h

mov ah, 4ch ; thoat ve Dos int 21h

cseg ends

(7)

4 Bài tập kiểm tra:

4.1 Viết chương trình sử dụng hàm 41h/ INT 21h để xóa tập tin đĩa Tên tập tin cần xóa nhập từ bàn phím thực chương trình

4.2 Viết chương trình nhập chuỗi từ bàn phím, sau ghép chuỗi nhận vào cuối nội dung tập tin có đĩa Tên tập tin nhập từ bàn phím chạy chương trình

4.3 Viết chương trình nhập chuỗi từ bàn phím, sau chèn chuỗi nhận vào đầu nội dung tập tin có đĩa Tên tập tin nhập từ bàn phím chạy chương trình

4.4 Viết chương trình ghép nội dung tập tin có sẳn đĩa thành tập tin Tên tập tin nhập từ bàn phím chạy chương trình

Ngày đăng: 09/03/2021, 06:26

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan