Professional Documents
Culture Documents
Bai Tap Vi X Lí
Bai Tap Vi X Lí
Viết chương trình nhận từng byte dữ liệu từ cổng có địa chỉ 10h và gửi ra cổng
có địa chỉ 20h
b.Cho tới khi gặp 2 byte dữ liệu liên tiếp = 0 thì dừng.
n1:
CMP AL, 0 ; So sánh nội dung AL (byte dữ liệu nhận được) với 0
JZ n2 ; Nhảy tới nhãn “n2” nếu cờ Z=1 (byte dl nhận được =0)
OUT 20h, AL ; Gửi nội dung AL ra cổng có địa chỉ 20h nếu cờ Z=0
n2:
MOV BL, AL ; cất nội dung của AL (byte dl nhận được bằng 0) vào BL
JZ thoat ; Nhảy tới nhãn “thoat” nếu cờ Z=1 (byte dl nhận được =0)
MOV DL, AL ; Chuyển nội dung AL (byte dl khác 0 vừa nhận) vào DL
OUT 20h , AL; Gửi nội dung AL ra cổng có địa chỉ 20h
thoat:
3.Viết chương trình nhận 1 byte dữ liệu từ cổng có địa chỉ 10h và kiểm tra bit D7.
Nếu D7=1 thì gửi nội dung ô nhớ có địa chỉ 1000Ah =1000h*16+0Ah ra
cổng có địa chỉ 20h
Nếu D7=0 thì gửi nội dung ô nhớ có địa chỉ 1000Bh ra cổng có địa chỉ
30h
Giải:
1 0 0 0 0 0 0 0
AND AL, 80h ; AND n.dung AL với giá trị 80h (giữ lại bit D7,
CMP AL, 80h ; So sánh ndung AL với 80h (kiểm tra bit D7)
Guira20h:
thoat:
5. Viết chương trình assembly nhập vào từ bàn phím các số (có một chữ số) cho tới
khi nhấn phím ESC thì dừng. Hiển thị lên màn hình giá trị MAX
ASCII
MAIN proc
MOV AH, 1
MOV DL, AL ; Chuyển số vừa nhập vào DL (chứa giá trị MAX).
nhaptiep:
JZ hienthi ; Nếu đúng, nhảy tới “hienthi” để hiển thị g.trị MAX
Nhan1:
hienthi:
MOV AH,2
INT 21h ; Hiển thị giá trị MAX lên màn hình
thoat:
INT 21h
MAIN Endp
END MAIN
Viết chương trình Assembler thực hiện công việc sau: nhập vào từ bàn phím lần lượt các
ký tự “a,b,c,d,e”, sau đó hiển thị lên màn hình theo thứ tự ngược lại.
MAIN proc
MOV AH,1
nhaptiep:
hienthi:
MOV AH,2
MOV AH,4Ch
INT 21h
MAIN Endp
END MAIN