Câu hỏi 1: Lập trình hợp ngữ Assembly file có phần mở rộng là .COM thực hiện đặt mode màn hình là 00h, xoá màn hình và hiển thị lên màn hình máy tính dòng chữ: “LOP TIN HOC” có thuộc tín
Trang 1Đề thi và đáp án phần 5 môn học cấu trúc máy tính: Bài tập
Số câu hỏi: 12 câu
Số điểm cho mỗi câu: 2 điểm
A Câu hỏi.
Câu hỏi 1: Lập trình hợp ngữ Assembly file có phần mở rộng là COM thực hiện đặt
mode màn hình là 00h, xoá màn hình và hiển thị lên màn hình máy tính dòng chữ:
“LOP TIN HOC” có thuộc tính là nền vàng chữ đỏ tại vị trí hiện thời của con trỏ
Câu hỏi 2: Lập trình hợp ngữ Assembly file có phần mở rộng là COM hiển thị lên
màn hình bắt đầu tại vị trí cột 20, dòng 5 một cột 5 chữ H có thuộc tính nền trắng, chữ màu vàng
Câu hỏi 3: Giả sử có 1 dãy ký tự (mã ASCII) nhận từ bàn phím được nhớ trong 1
vùng nhớ có địa chỉ DS:SI, độ dài của dãy ký tự đó được lưu giữ trong thanh ghi CX Lập trình hợp ngữ Assembly file có phần mở rộng là COM truyền dãy ký tự đó ra cổng COM1 của máy tính với tốc độ truyền là 19200bps, 7 bits số liệu, 2 bit stop, không kiểm tra chẵn lẻ, tần số làm việc đưa vào chân Xin của vi mạch 8250 là 1,842*106 hz
Câu hỏi 4: Lập trình hợp ngữ Assembly file có phần mở rộng là COM thực hiện vẽ
trên màn hình ở chế độ đồ hoạ 1 đường dọc có độ dày 4 điểm sáng bắt đầu từ toạ độ hàng 80 cột 60-63 đến toạ độ hàng 40 cột 60-63
Câu hỏi 5: Lập trình hợp ngữ Assembly file có phần mở rộng là COM hiển thị
thông báo: “Phim nhan duoc la:” thuộc tính nền trắng, chữ xanh lục tại ví trí hiện thời của con trỏ Sau đó chương trình sẽ chờ nhận phím từ bàn phím và hiện ra màn hình Xuống dòng, về đầu dòng rồi lại hiển thị thông báo trên Quá trình cứ lặp liên tục cho đến khi bạn ấn phím ESC có mã ASCII là 1Bh chương trình sẽ kết thúc Mã ASCII của ký tự xuống dòng là 0dh, mã ASCII của ký tự về đầu dòng là 0ah.?
Câu hỏi 6: Lập trình hợp ngữ Assembly file có phần mở rộng là COM đặt Card
Video làm việc ở chế độ 02, sau đó hiển thị lên màn hình bắt đầu tại ví trí có toạ độ là hàng 5 cột 12 lần lượt 6 ký tự có mã ASCII như sau: 3fh, 3eh, 3dh, 3ch, 3bh, 3ah, mỗi
ký tự cách nhau 1 khoảng trống với thuộc tính nền đỏ chữ trắng
Câu hỏi 7: Lập trình hợp ngữ Assembly file có phần mở rộng là COM xác định
tham số truyền cho vi mạch 8250 trên máy tính có địa chỉ giải mã là 3f8h như sau: 7 bit data, 1 bits stop, no parity, tốc độ truyền là 9600 bps, với tần số clock là 1,843Mhz
Câu hỏi 8: Lập trình hợp ngữ Assembly file có phần mở rộng là COM thực hiện:
Trang 2Máy tính sẽ liên tục hỏi xem có phím được ấn hay không Nếu có phím được ấn thì hiện thị thông báo:
"phim duoc an la:" và ký tự Xuống dòng, về đầu dòng rồi lại đợi nhận 1 phím mới Chương trình kết thúc khi ấn phím ESC
Câu hỏi 9: Lập trình hợp ngữ Assembly file có phần mở rộng là COM thực hiện:
Xoá màn hình Thiết lập chế độ màn hình 06 (đồ hoạ, phân giải 640x200, 2màu),
Vẽ 1 đường chéo màu trắng từ điểm ảnh có toạ độ (60,60) đến toạ độ (40,20)
Câu hỏi 10: Lập trình hợp ngữ Assembly file có phần mở rộng là COM cho vi mạch
vào/ra Intel 8255A giả sử có địa chỉ giải mã là 04f0 làm công việc sau:
Máy tính sẽ liên tục đọc trạng thái của một mạch điện qua cổng B của 8255 Nếu bit D2 của cổng B có mức logic là “1” thì sẽ tạo ra trên cổng PC 4 của 8255 một xung vuông có độ rộng 33% (Phần xung dương bằng 1/3 phần xung âm) Giả sử chương trình tạo độ rộng được cho trước dưới dạng một chương trình con có tên là: DELAY
Câu hỏi 11: Lập trình hợp ngữ Assembly file có phần mở rộng là COM thực hiện
nhận số liệu từ cổng COM1 (dưới dạng mã ASCII) Cất số liệu nhận được vào vùng nhớ có địa chỉ DS:DI Nếu mã ASCII nhận được có giá trị là 1dh thì kết thúc chương trình Với định dạng đường truyền như sau 7 bit data, 1 bits stop, no parity, tốc độ truyền là 19,200 bps, với tần số clock là 1,843Mhz
Câu hỏi 12: Giả sử vi mạch 8255 cắm trên 1 Card vào slot ISA của máy tính IBM PC
có địa chỉ giải mã CS là 0154h Lập trình hợp ngữ Assembly file có phần mở rộng
là COM cho vi mạch này làm việc như sau: Hai nhóm làm việc ở mode 0, cổng A là cổng vào, cổng B là cổng ra và tất cả các bit của cổng C là ra Máy tính sẽ liên tục đọc
và kiểm tra bit D6 của cổng A Nếu bit này có mức logic “1” thì đưa ra trên cổng B các bit D0, D2, D4, D6 mức logic “1”
Trang 3B Đáp án.
Câu 1
Câu hỏi: Lập trình hợp ngữ Assembly file có phần mở rộng là COM thực hiện
đặt mode màn hình là 00h, xoá màn hình và hiển thị lên màn hình máy tính
dòng chữ: “LOP TIN HOC” có thuộc tính là nền vàng chữ đỏ tại vị trí hiện
thời của con trỏ
2 điểm
; Hien thi dong chu "LOP TIN HOC" nen do chu vang tai vi tri hien thoi cua
con tro
code segment
assume cs:code, ds:code
org 100h
begin:
; Dat mode man hinh: Su dung Int 10h voi Ah = 0; Al = che do
mov ah,00 ;
mov al,00
int 10h ; Dat che do xong
0.5
; Hien thi dong chu: Sư dung Int 13h voi al =00 (kh cap nhat vi tri) Bl chưa
byte thuoc tinh
mov ah,13h ; dung int 10h voi ah = 13h
mov al,00 ; cap nhat thuoc tinh cua xau, khong cap nhat vi tri
con tro
mov cx,0bh ; do dai xau ky tu là 11 ky tu
mov bh,00 ; trang hien thi la trang 0
0.5
mov bl, 0e4h ; thuoc tinh nen vang chu do
lea bp,str ; nap dia chi dau cua xau
int 10h ; Hien thi ky tu ra man hinh
0.5
; Ket thuc chuong trinh: Su dụng ham Int 21h voi Ah = 4ch
mov ah,4ch
int 21h
str db "LOP TIN HOC"
code ends
end begin
0.5
Câu 2
Câu hỏi : Lập trình hợp ngữ Assembly file có phần mở rộng là COM hiển thị
lên màn hình bắt đầu tại vị trí cột 20, dòng 5 một cột 5 chữ H có thuộc tính nền
trắng, chữ màu vàng
2 điểm
; Hien thi ra man hinh tai vi tri (20,5) mot cot 5 chu H nen trang, chu vang 0.5
Trang 4code segment
assume cs:code, ds:code
org 100h
begin:
; Dat mode man hinh: Su dung Int 10h voi Ah = 0; Al = che do
mov al,02 ; che do 80 cot * 25 hang
int 10h ; Dat che do xong
; Dua con tro ve vi tri cot 20 dong 5: Su dung ham Int 10h voi ah =02,
; Dh= toa do hang, Dl = toa do cot,
; su dung SI la thanh ghi dem so dong hien thi
mov dh,05h ; toa do tai hang 5
mov dl,14h ; toa do cot 20
mov si,05 ; hien thi mot cot 5 ky tu
lap:
int 10h ; dat con tro ve vi tri trong dh va dl
0.5
; Hien thi mot cot 5 chu H tai vi tri con tro vua dat
; Su dung ham Int 10h voi ah = 09h; bl thuoc tinh, cx so lan hien thi
mov cx, 01 ; so ky tu hien thi là 1
mov al, "H" ; Al chua ma ASCII cua ky tu H
mov ah,09 ; Hien thi ky tu
mov bl,7eh ; thuoc tinh nen trang chu vang
int 10h ; hien thi 1 chu H
inc dh ; tang toa do hang len 1
dec si ; giam thanh ghi dem so lan hien thi 1 don vi
jnz lap ; neu chua du 5 hang thi lam lai
0.5
; Ket thuc chuong trinh: Su dung ham Int 21h voi Ah = 4ch
code ends
end begin
0.5
Câu 3
Câu hỏi: Giả sử có 1 dãy ký tự (mã ASCII) nhận từ bàn phím được nhớ trong
1 vùng nhớ có địa chỉ DS:SI, độ dài của dãy ký tự đó được lưu giữ trong thanh
ghi CX Lập trình hợp ngữ Assembly file có phần mở rộng là COM truyền
dãy ký tự đó ra cổng COM1 của máy tính với tốc độ truyền là 19200bps, 7 bits
số liệu, 2 bit stop, không kiểm tra chẵn lẻ, tần số làm việc đưa vào chân Xin
2 điểm
Trang 5của vi mạch 8250 là 1,842*106 hz
với tốc độ truyền là 19,200 bps thì số chia được sẽ được xác định như sau:
0.4
; Truyen day so lieu tu bo nho ra cong COM1 voi toc do 19,200bps
code segment
assume cs:code, ds:code
org 100h
begin:
; Thiet lap duong truyen: dat bits D7 cçṡ thanh ghi 3fbh len 1
mov al,80h ; dat DLAB = 1
mov dx, 3fbh ; napdia chi thanh ghi dieu khien duong truyen
0.4
; gui so chia: khi bit D7 của thanh ghi 3fb =1, thanh ghi
mov ax, 0006 ; toc do truyen la 19,200 bps
mov dx, 3f8h ; dia chi phan thap so chia
out dx,al ; nap phan thap so chia
mov al, ah ; chuyen phan cao so chia sang al
inc dx ; dia chi phan cao so chia
out dx, al ; nap phan cao so chia
; thiet lâp tham so truyen: nap vao thanh ghi dieu khien duong truyen 3fbh
mov al,86h ; tham so truyen 7 bit data, 2 bit stop, no parity
mov dx,03fbh ; dia chi thanh ghi dieu khien duong truyen
0.4
; Thuc hien truyen so lieu
mov al,03 ; DLAB = 0 de xac lap thanh ghi co dia chi
mov dx,03fbh ; 3f8h giu chuc nang thanh ghi chua du lieu
L1:
mov dx,3fdh ; dia chi thanh ghi LSR
L2:
in al,dx ; doc cac bit cua thanh ghi trang thai
and al,20h ; Neu so lieu da gui di thi bit D5=1,
cmp al,20h ; UART san sang gui byte tiep va TSR rong
jnz L2 ; neu chua thi doc lai va kiem tra
mov al,[si] ; dua byte tiep theo vao thanh ghi al
mov dx,03f8h ; gui di
0.4
Tốc độ truyền * 16
19,200* 16
Trang 6out dx,al
inc si ; tro den ky tu tiep theo cua xau
; Ket thuc chuong trinh: Su dung ham Int 21h voi Ah = 4ch
code ends
end begin
0.4
Câu 4
Câu hỏi: Lập trình hợp ngữ Assembly file có phần mở rộng là COM thực
hiện vẽ trên màn hình ở chế độ đồ hoạ 1 đường dọc có độ dày 4 điểm sáng bắt
đầu từ toạ độ hàng 80 cột 60-63 đến toạ độ hàng 40 cột 60-63
2 điểm
; Ve 1 duong doc tren man hinh bat dau tu toa do (80,60) den toa do (40,60)
code segment
assume cs:code, ds:code
org 100h
begin:
; xoa man hinh: su dung int 10h voi ah = 06
mov ax, 0600h ;
mov cx, 0000 ; toa do dau cua man hinh
mov dx, 184fh ; toa do cuoi man hinh
0.5
; dat che do do hoa cho man hinh: ah = 0, al = 06 (al = 13h)
mov ax, 0006h
int 10h
; ve duong doc tu (80,60-63) den (40,60-63)
mov dx, 80 ; toa do dau hang diem anh
L: mov cx, 60 ; toa do dau cot diem anh
0.5
lap:
mov ah, 0ch 0c viet vao diem anh
mov al,71h ; mo diem anh (che do 05 neu al=10 mau hong)
int 10h
inc cx ; viet diem sang thu 2
cmp cx,63 ; viet 4 diem anh
jnz lap ; neu chu du 4 diem anh thi viet tiep
dec dx ; giam vi tri hang
cmp dx, 40 kiem tra vi tri cuoi cung
jnz L ; lam lai neu chua bang
0.5
Trang 7; Ket thuc chuong trinh: Su dung ham Int 21h voi Ah = 4ch.
code ends
end begin
0.5
Câu 5
Câu hỏi: Lập trình hợp ngữ Assembly file có phần mở rộng là COM hiển thị
thông báo: “Phim nhan duoc la:” thuộc tính nền trắng, chữ xanh lục tại ví trí
hiện thời của con trỏ Sau đó chương trình sẽ chờ nhận phím từ bàn phím và
hiện ra màn hình Xuống dòng, về đầu dòng rồi lại hiển thị thông báo trên Quá
trình cứ lặp liên tục cho đến khi bạn ấn phím ESC có mã ASCII là 1Bh
chương trình sẽ kết thúc Mã ASCII của ký tự xuống dòng là 0dh, mã ASCII
của ký tự về đầu dòng là 0ah?
2 điểm
; hien thi thong bao: "phim duoc an la:" nhan phim va hien thi ra man hinh voi
thuoc tinh
; nen xanh chu trang, Xuong dong, ve dau dong roi lai hien thi dong chu tren,
doi nhan 1
; phim moi Chuong trinh ket thuc khi an phim ESC
code segment
assume cs:code, ds:code
org 100h
begin:
; Hien thi thong bao; su dung int 21h voi ah = 09h
mov ah,09h
lea dx,msg
int 21h
0.5
; Kiem tra co phim an: int 21h ah=08
mov ah,08
int 21h
; hien thi phim an co thuoc tinh int 10h, ah = 09
mov ah,09h
mov bl,72h ; thuoc tinh
mov cx,01 ; hien thi mot ky tu
int 10h
0.5
; Neu phim an la ESC: ket thuc
cmp al,1bh
je ket_thuc
; xuong dong ve dau dong: int 21h voi ah=02
mov ah,02
0.5
Trang 8mov dl,0dh
int 21h
mov dl,0ah
int 21h
jmp begin ; quay lai cho mot phim moi
; Ket thuc chuong trinh: Su dung ham Int 21h voi Ah = 4ch
ket_thuc:
mov ah,4ch
int 21h
msg db 'phim duoc an la: $'
code ends
end begin
0.5
Câu 6
Câu hỏi 6: Lập trình hợp ngữ Assembly file có phần mở rộng là COM đặt
Card Video làm việc ở chế độ 02, sau đó hiển thị lên màn hình bắt đầu tại ví trí
có toạ độ là hàng 5 cột 12 lần lượt 6 ký tự có mã ASCII như sau: 3fh, 3eh, 3dh,
3ch, 3bh, 3ah, mỗi ký tự cách nhau 1 khoảng trống với thuộc tính nền đỏ chữ
trắng
2 điểm
;hien thi 5 ky tu co ma ASCII 3fh, 3e, 3d,3c,3b bat dau tu dong 5 cot 12
; che do 02 co thuoc tinh nen do chu trang moi chu cach nhau 2 khoang trong
code segment
assume cs:code, ds:code, ss: code
org 100h
begin:
; su dung thanh ghi si lam con dem
mov si,05 ; hien thi 5 lan
;dat che do hien thi (AH = 00, AL = che do) int 10h
mov ax,0002h
int 10h
; dat vi tri con tro (ah=02, dh=hang; dl = cot)
mov dh,05
mov dl,0ch
call vitri
0.4
;hien ky tu co thuoc tinh (ah =09, bl=thuoc tinh,ma ASCII trong al)
mov al,3fh ; ma ASCII cua ky tu
mov bl,47h ; thuoc tinh
lap:
mov ah,03 ; xac dinh vi tri hien thoi cua con tro, dh=hang,
0.4
Trang 9dl=cot
int 10h
mov cx,01 ; hien 1 ky tu
mov ah,09
int 10h
inc dl ; tang vi tri con tro sang cot ben canh
dec al ; Al chua ma ASCII cua ky tu tiep theo
; dich vi tri con tro
call vitri
; tao 1 khoang trong
call khoangtrong
dec si
jnz lap
; ket thuc
mov ah,4ch
int 21h
0.4
; chuong trinh con dat con tro vao vi tri
vitri proc near
mov ah,02h
int 10h
ret
0.4
;chuong trinh con tao khoang trong(int 21h Ah=02, dl ma ASCII)
khoangtrong proc near
push ax
push dx
mov ah,02
mov dl,00
int 21h
pop dx
pop ax
ret
code ends
end begin
0.4
Câu 7
Câu hỏi 7: Lập trình hợp ngữ Assembly file có phần mở rộng là COM xác
định tham số truyền cho vi mạch 8250 trên máy tính có địa chỉ giải mã là 3f8h
như sau: 7 bit data, 1 bits stop, no parity, tốc độ truyền là 9600 bps, với tần số
clock là 1,843Mhz
2 điểm với tốc độ truyền là 9,600 bps thì số chia được sẽ được xác định như sau: 0.4
Trang 10; Truyen day so lieu tu bo nho ra cong COM1 voi toc do 9,600bps
code segment
assume cs:code, ds:code
org 100h
begin:
; Thiet lap duong truyen: dat bits D7 cçṡ thanh ghi 3fbh len 1
mov al,80h ; dat DLAB = 1
mov dx, 3fbh ; napdia chi thanh ghi dieu khien duong truyen
0.4
; gui so chia: khi bit D7 cçṡ thanh ghi 3fb =1, thanh ghi
mov ax, 000ch ; toc do truyen la 9,600 bps
mov dx, 3f8h ; dia chi phan thap so chia
out dx,al ; nap phan thap so chia
mov al, ah ; chuyen phan cao so chia sang al
out dx, al ; nap phan cao so chia
0.4
; thiet lâp tham so truyen: nap vao thanh ghi dieu khien duong truyen 3fbh
mov al,83h ; tham so truyen 7 bit data, 1 bit stop, no parity
mov dx,03fbh ; dia chi thanh ghi dieu khien duong truyen
0.4
; Ket thuc chuong trinh: Su dung ham Int 21h voi Ah = 4ch
code ends
end begin
0.4
Câu 8
Câu hỏi 8: Lập trình hợp ngữ Assembly file có phần mở rộng là COM thực
hiện: Máy tính sẽ liên tục hỏi xem có phím được ấn hay không Nếu có phím
được ấn thì hiện thị thông báo:
"phim duoc an la:" và ký tự Xuống dòng, về đầu dòng rồi lại đợi nhận 1 phím
mới Chương trình kết thúc khi ấn phím ESC
2 điểm
May tinh se lien tuc hoi xem co phim duoc an hay khong Neu co phim duoc
an thi hien thi thong bao:
; "phim duoc an la:" va ky tu Xuong dong, ve dau dong roi lai doi
0.4
Tốc độ truyền * 16
9,600* 16
Trang 11; nhan 1 phim moi Chuong trinh ket thuc khi an phim ESC
code segment
assume cs:code, ds:code
org 100h
begin:
; Hien thi thong bao; sau hanh dong nay al=$ (24h)
mov ah,09h
lea dx,msg
int 21h
; Kiem tra co phim an: int 21h ah=08
mov ah,08
int 21h
; hien thi phim an int 10h, ah = 09
mov ah,09h
mov bl,72h ; thuoc tinh
mov cx,01 ; hien thi mot ky tu
int 10h
0.4
; Neu phim an la ESC: ket thuc
cmp al,1bh
je ket_thuc
0.4
; xuong dong ve dau dong: int 21h voi ah=02
mov ah,02
mov dl,0dh
int 21h
mov dl,0ah
int 21h
jmp begin ; quay lai cho mot phim moi
0.4
ket_thuc:
mov ah,4ch
int 21h
msg db 'phim duoc an la: $'
code ends
end begin
0.4
Câu 9
Câu hỏi 9: Lập trình hợp ngữ Assembly file có phần mở rộng là COM thực
hiện:
Xoá màn hình Thiết lập chế độ màn hình 06 (đồ hoạ, phân giải 640x200,
2màu),
2 điểm