Tải bản đầy đủ (.doc) (16 trang)

Câu hỏi thi cấu trúc máy tính phần 5 Học viện KTQS MTA

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (84.81 KB, 16 trang )

Đề 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:


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



B. Đá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
2
dòng chữ: “LOP TIN HOC” có thuộc tính là nền vàng chữ đỏ tại vị trí hiện điểm
thời của con trỏ.
; 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
0.5
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
; 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
0.5

con tro
mov cx,0bh
; do dai xau ky tu là 11 ky tu
mov bh,00
; trang hien thi la trang 0
mov bl, 0e4h
; thuoc tinh nen vang chu do
lea bp,str
; nap dia chi dau cua xau
0.5
int
10h
; Hien thi ky tu ra man hinh
; Ket thuc chuong trinh: Su dụng ham Int 21h voi Ah = 4ch.
mov ah,4ch
int
21h
0.5
str
db "LOP TIN HOC"
code ends
end begin
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ị
2
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
điểm
trắng, chữ màu vàng.
; Hien thi ra man hinh tai vi tri (20,5) mot cot 5 chu H nen trang, chu vang.
0.5



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,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:
mov
ah,02

int
10h
; dat con tro ve vi tri trong dh va dl
; 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
; Ket thuc chuong trinh: Su dung ham Int 21h voi Ah = 4ch.

mov
ah,4ch
int
21h
code ends
end begin

0.5

0.5

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
2
1 vùng nhớ có địa chỉ DS:SI, độ dài của dãy ký tự đó được lưu giữ trong thanh điểm
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 X in


củ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:
Số chia =

Xin
Tốc độ truyền * 16

=


1,8432 * 106
19,200* 16

= 6

; 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
out
dx, al
; DLAB = 1
; 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
out
dx,al
; 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
out
dx,al
; se phat

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

0.4

0.4


0.4


out
dx,al
inc
si
; tro den ky tu tiep theo cua xau
loop
L1
; Ket thuc chuong trinh: Su dung ham Int 21h voi Ah = 4ch.
mov
ah,4ch
int
21h
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
2
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
điểm
đầu từ toạ độ hàng 80 cột 60-63 đến toạ độ hàng 40 cột 60-63.
; 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
0.5
mov
ax, 0600h ;
mov
bh, 07h
;
mov
cx, 0000
; toa do dau cua man hinh
mov
dx, 184fh
; toa do cuoi man hinh
int
10h
; dat che do do hoa cho man hinh: ah = 0, al = 06 (al = 13h)
mov ax, 0006h
int
10h
0.5
; 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
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
0.5
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


; Ket thuc chuong trinh: Su dung ham Int 21h voi Ah = 4ch.
mov
ah,4ch
int
21h
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à
2
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á
điểm
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?
; 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
0.5
org 100h
begin:
; Hien thi thong bao; su dung int 21h voi ah = 09h
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 co thuoc tinh. int 10h, ah = 09
0.5
mov ah,09h
mov bl,72h
; thuoc tinh
mov cx,01
; hien thi mot ky tu
int
10h
; Neu phim an la ESC: ket thuc
0.5
cmp al,1bh
je
ket_thuc
; xuong dong ve dau dong: int 21h voi ah=02
mov ah,02


mov
int
mov
int
jmp

dl,0dh
21h
dl,0ah

21h
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í
2
có toạ độ là hàng 5 cột 12 lần lượt 6 ký tự có mã ASCII như sau: 3fh, 3eh, 3dh,
điểm
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.
;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
0.4
;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
;hien ky tu co thuoc tinh (ah =09, bl=thuoc tinh,ma ASCII trong al)
0.4
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,


dl=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
; chuong trinh con dat con tro vao vi tri
vitri proc near
mov
ah,02h
int
10h
ret
;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

0.4

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
2
như sau: 7 bit data, 1 bits stop, no parity, tốc độ truyền là 9600 bps, với tần số điểm
clock là 1,843Mhz.
với tốc độ truyền là 9,600 bps thì số chia được sẽ được xác định như sau:
0.4


Số chia =

Xin
Tốc độ truyền * 16

=

1,8432 * 106

9,600* 16

= 12

; 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
out
dx, al
; DLAB = 1
; 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
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,83h
; tham so truyen 7 bit data, 1 bit stop, no parity
mov
dx,03fbh
; dia chi thanh ghi dieu khien duong truyen
out
dx,al
; Ket thuc chuong trinh: Su dung ham Int 21h voi Ah = 4ch.
mov
ah,4ch
int
21h
code ends
end begin

0.4

0.4


0.4

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
2
được ấn thì hiện thị thông báo:
điểm
"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
May tinh se lien tuc hoi xem co phim duoc an hay khong. Neu co phim duoc
0.4
an thi hien thi thong bao:
; "phim duoc an la:" va ky tu. Xuong dong, ve dau dong roi lai 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; 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
; 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
mov dl,0dh
int
21h
mov dl,0ah
int
21h
jmp begin
; quay lai cho mot phim moi
ket_thuc:
mov ah,4ch
int
21h
msg db 'phim duoc an la: $'

code ends
end begin

0.4

0.4

0.4

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
2
hiện:
điểm
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).
; dat mode do hoa cho man hinh.
; ve mot duong cheo tren man hinh tu toa do (60,60) den (40,20)
code segment
assume
cs:code, ds:code
org 100h
begin:
; xoa man hinh
mov ax, 0600h

;
mov bh, 07h ;
mov cx, 0000
mov dx, 184fh
int
10h
; dat che do cho man hinh che do 06
mov ax, 0013h
int
10h
; ve duong cheo tu (60,60) den (40,20)
mov cx, 60
mov dx, 60
lap:
mov ah, 0ch
; 0c viet vao diem anh
mov al, 01
; mo diem anh (che do 05 neu al=10 mau hong)
int
10h
dec dx
; giam vi tri hang di 1
dec cx
; giam vi tri cot di 2
dec cx
cmp cx,20
; kiem tra vi tri cuoi cung
jnz lap
; Nhay neu nho hon hoac bang
ket_thuc:

mov ah,4ch
int
21h

0.5

0.5

0.5

0.5

code ends
end begin
Câu 10
Câu hỏi: Lập trình hợp ngữ Assembly file có phần mở rộng là .COM cho vi
2
mạch vào/ra Intel 8255A giả sử có địa chỉ giải mã là 04f0 làm công việc sau:
điểm
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.
Phân tích: Để đọc trạng thái của bit 2 cổng B của 8255 cần phải thiết lập cho vi
mạch này làm việc ở chế độ 0, cổng B là cổng đọc vào.
Để tạo xung trên đầu ra trên đầu ra PC4 ta thiết lập vimạch làm việc ở chế độ
đặt và xoá mức (BSR). Xung trên đầu ra PC 4 có dang sau:


1/3T

2/3T

Thiết lập cho 8255 mode 0, cổng B là cổng vào; Thanh ghi điều khiển có giá
trị: 82h
để thiết lập mức 1 trên PC 4 Thanh ghi điều khiển có giá trị: 89h
để thiết lập mức 0 trên PC 4 Thanh ghi điều khiển có giá trị: 88h
; Chuong trinh thiet lap mode cho 8255
code segment
assume
cs:code, ds:code
org 100h
begin:
; dat 8255 mode 0, cong B la cong vao
mov dx, 04f3h
; dia chi cua thanh ghi dieu khien
mov al, 82h
;
out dx,al
; dat mode vao thanh ghi dieu khien
; hoi trang thai bit D2
lap:
mov dx, 04f1h
; dia chi cong B
in
al,dx
and al,02h
; nhan logic al voi 02 (bit D2=1)

cmp al,02h
jnz lap
; neu bit D2 kh co muc 1 thi doc lai
; nang PC4 1 len muc logic 1
mov dx,04f3h
dia chi cua thanh ghi dieu khien
mov al,09h
; xac dinh muc 1 tren PC4
out dx,al
; nap thanh ghi dieu khien
call dellay
; giu cham 1 khoang dellay
; ha PC4 xuong muc 0
mov dx,04f3h
;
mov al,08h
; ha muc tren PC4 xuong 0
out dx,al

0.4

0.4

0.4
0.4


call dellay
call delay
; nang PC4 len muc logic 1

mov dx,04f3h
mov al,09h
out dx,al

; giu cham muc 0 2 khoang dellay
; dia chi cua thanh ghi dieu khien
; xac dinh muc 1 tren PC4
; nap thanh ghi dieu khien
0.4

ket_thuc:
mov ah,4ch
int
21h
code ends
end begin
Câu 11

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 nhận số liệu từ cổng COM1 (dưới dạng mã ASCII). Cất số liệu nhận được
2
vào vùng nhớ có địa chỉ DS:DI. Nếu mã ASCII nhận được có giá trị là 1dh thì
điểm
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.
với tốc độ truyền là 9,600 bps thì số chia được sẽ được xác định như sau:
Số chia =

Xin
Tốc độ truyền * 16


=

1,8432 * 106
9,600* 16

= 12

; Nhan day so lieu tu cong COM1 voi toc do 9,600bps
code segment
assume
cs:code, ds:code
org 100h
begin:
; Thiet lap duong truyen: dat bits D7 cua thanh ghi 3fbh len 1
mov
al,80h
; dat DLAB = 1
mov
dx, 3fbh
; napdia chi thanh ghi dieu khien duong truyen
out
dx, al
; DLAB = 1
; gui so chia: khi bit D7 cua 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
inc
dx
; dia chi phan cao so chia
out
dx, al
; nap phan cao so chia

0.4

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
out
dx,al
; hoi bit trang thai cua thanh ghi trang thai duong truyen
mov

dx,03fdh
; dia chi thanh ghi trang thai duong truyen
lap1:
in
al,dx
cmp
al,60h
; neu 2 bit D5, D6 cung = 1san sang nhan
jnz
lap1
; nhan so lieu tu cong
mov
cx,00
; dung cx lam thanh ghi so byte thong tin nhan
mov
dx,03f8h
; dia chi bo dem thu
in
al,dx
; nhan so lieu tu cong COM
mov
[di], al
; cat byte nhan duoc vao [DI]
inc
di
; tang con tro di len 1 tro sang byte tiep theo
inc
cx
; tang cx len 1 bao co them 1 bit nua vua nhan
cmp

al,0dh
; hoi ky tu nhan co phai la xuong dong kh?
jnz
lap1
; neu kh phai, nhan tiep byte tiep theo
; Ket thuc chuong trinh: Su dung ham Int 21h voi Ah = 4ch.
mov
ah,4ch
int
21h
code ends
end begin

0.4

0.4

0.4

Câu 12
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ó
2
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à điểm
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”.
Phân tích: để thiết lập mode 0 cho 8255 với cổng A: vào, cổng B: ra và cổng
0.5
C: ra thì giá trị của thanh ghi điều khiển là 90h



Chọn Mode - nhóm B
0 - Mode 0
1 - Mode 1

D0 = 0: Nửa thấp Port C - Out
D0 = 1: Nửa thấp Port C - In

10010000
Chọn Mode - nhóm A
00 - Mode 0
01 - Mode 1
1x - Mode 2

D4 = 0: Port A - Out
D4 = 1: Port A - In

D1 = 0: Port B - Out
D1 = 1: Port B - In

D3 = 0: nửa cao Port C - Out
D3 = 1: Nửa cao Port C - In

Định nghĩa thanh ghi điều khiển của 8255A

; Chuong trinh thiet lap mode cho 8255
code segment
assume
cs:code, ds:code

org 100h
begin:
; dat 8255 mode 0, cong A la ra, cong B, C là vao
mov dx, 0157h
; dia chi cua thanh ghi dieu khien
mov al, 90h
;
out dx,al
; dat mode vao thanh ghi dieu khien
; hoi trang thai bit D6 cua cong A
lap:
mov dx, 0154h
; dia chi cong A
in
al,dx
and al,20h
; nhan logic al voi 20 (bit D6=1)
cmp al,20h
jnz lap
; neu bit D2 kh co muc 1 thi doc lai
; nang cac bit D0, D2, D4, D6 cong B len muc logic 1
mov dx,0155h
; dia chi cua cong B
mov al,55h
; cac bits D0, D2, D4, D6 co muc logic 1
out dx,al
; out ra cong B
ket_thuc:
mov ah,4ch
int

21h

0.5

0.5

0.5



×