Hướng dẫn tổng quát về lập trình hệ thống cơ bản phần 5

5 14 0
Hướng dẫn tổng quát về lập trình hệ thống cơ bản phần 5

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

Thông tin tài liệu

Bài 4 – Nhập xuất số dạng BIN-HEX-DEC xdong DB 10, 13, ‘$’ kytu DB ? DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG, DS:DSEG begin: MOV AX, DSEG MOV DS, AX inchuoi msg1 MOV AH, 01h INT 21h MOV kytu, AL ; cất ký tự nhận được inchuoi xdong inchuoi msg2 MOV BH, kytu ; Ký tự cần in CALL hex_out MOV AH, 02

Bài – Nhập xuất số dạng BIN-HEX-DEC xdong DB 10, 13, ‘$’ kytu DB ? DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG, DS:DSEG begin: MOV AX, DSEG MOV DS, AX inchuoi msg1 MOV AH, 01h INT 21h MOV kytu, AL ; cất ký tự nhận inchuoi xdong inchuoi msg2 MOV BH, kytu ; Ký tự cần in CALL hex_out MOV AH, 02 ; in ký tự h sau số Hex MOV DL, ‘h’ INT 21h MOV AH, 01 INT 21h MOV AH, 4Ch ; thoat khỏi chương trình INT 21h hex_out PROC MOV CX, xuat:PUSH CX MOV CL, MOV DL, BH SHR DL, CL CMP DL, 09h JA kytu ADD DL, 30h JMP inra kytu:ADD DL, 37h inra:MOV AH, 02h INT 21h SHL BX, CL POP CX LOOP xuat RET hex_out ; Đổi thành ký số ‘0’-‘9’ ; Đổi thành ký tự ‘A-‘F’ ; In hình ký tự đổi ; Quay trái BX bit ENDP CSEG ENDS END begin 3.3 Xuất số thập phân nguyên dương: Chương trình sau cho phép nhập ký tự từ bàn phím, sau in hình mã ASCII ký tự nhận dạng thập phân ThS Nguyễn Hứa Duy Khang, Ks Trần Hữu Danh 30 Bài – Nhập xuất số dạng BIN-HEX-DEC - Soạn thảo, Biên dịch cho chạy file BAI_6C.ASM để kiểm tra kết - Đọc thủ tục DEC_OUT để tìm hiểu giải thuật xuất giá trị AX hình dạng thập phân Từ đưa giải thuật nhập số thập phân từ bàn phím - Viết lại chương trình để nhập số thập phân A B có chữ số, sau in hình kết A + B dạng thập phân - Nhập xuất số thập phân ÂM nào? inchuoi MACRO chuoi MOV AH, 9h LEA DX, chuoi INT 21h ENDM DSEG SEGMENT msg1 DB "Hay nhap ky tu: $" msg2 DB "Ma ASCII o dang Dec: $" xdong DB 10, 13, ‘$’ kytu DB ? DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG, DS:DSEG begin: MOV AX, DSEG MOV DS, AX inchuoi msg1 MOV AH, 01h INT 21h MOV kytu, AL ; cất ký tự nhận inchuoi xdong inchuoi msg2 XOR AX, AX MOV AL, kytu ; Ký tự cần in CALL dec_out MOV AH, 01 INT 21h MOV AH, 4Ch ; thoat khỏi chương trình INT 21h dec_out PROC XOR CX,CX ; CX đếm số chữ số thập phân MOV BX,10 chia10: XOR DX,DX DIV BX ; DX:AX÷BX => AX: Thương, DX: số dư PUSH DX ; Cất số dư vào stack INC CX CMP AX, JNZ chia10 ; AX>0 chia tiếp cho 10 inra: MOV AH,2 ; in hình POP DX ; lấy chữ số thập phân ThS Nguyễn Hứa Duy Khang, Ks Trần Hữu Danh 31 Bài – Nhập xuất số dạng BIN-HEX-DEC dec_out ADD DL,30h INT 21h LOOP inra RET ; đổi thành ký số ENDP CSEG ENDS END begin Bài tập kiểm tra: 4.1 Viết chương trình nhập số nhị phân 16 bit A B Sau in hình kết dạng nhị phân: A + B, A – B, A and B, A or B Ví dụ: Nhập số nhị phân A: 10101010 Nhập số nhị phân B: 01010101 A + B = 11111111 A – B = 01010101 A and B = 00000000 A or B = 11111111 4.2 Viết chương trình nhập ký tự từ bàn phím, sau in hình mã ASCII ký tự nhận dạng thập lục phân, thập phân nhị phân Ví dụ: Nhập ký tự: A Mã ASCII dạng Hex: 41h Mã ASCII dạng Dec: 65 Mã ASCII dạng Bin: 01000001b 4.3 Viết lại chương trình 4.1 số A B nhập theo dạng thập lục phân Các kết in hình dạng nhị phân 4.4 Viết lại chương trình 4.1 số A B nhập theo dạng thập phân In kết dạng thập phân: A + B, A – B 4.5 Viết chương trình tính giai thừa n! Với n số ngun dương nhập từ bàn phím In kết hình dạng thập phân Cho biết, khả 8086 tính n lớn bao nhiêu? ThS Nguyễn Hứa Duy Khang, Ks Trần Hữu Danh 32 Bài – Xử lý tập tin Bài 5: Xử Lý Tập Tin 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 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 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 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 END begin - 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 ? ThS Nguyễn Hứa Duy Khang - Ks Trần Hữu Danh 21 Bài – Xử lý tập tin - 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 đ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: 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 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 ThS Nguyễn Hứa Duy Khang - Ks Trần Hữu Danh 22 ... trình 4.1 số A B nhập theo dạng thập lục phân Các kết in hình dạng nhị phân 4.4 Viết lại chương trình 4.1 số A B nhập theo dạng thập phân In kết dạng thập phân: A + B, A – B 4 .5 Viết chương trình. .. có tên thư mục ổ đĩa với đường dẫn sau: “D:TT_ASMDATA.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... 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ự

Ngày đăng: 11/05/2021, 02:56

Từ khóa liên quan

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

Tài liệu liên quan