Câu 1Câu hỏi: Viết đoạn chương trình chuyển mảng dữ liệu từ vùng nhớ bufer1 có địa chỉ offset bắt đầu từ 200h lên vùng nhớ buffer2 có địa chỉ offset bắt đầu từ 300h. Biết rằng địa chỉ mảng của cả 2 vùng nhớ này đều do DS quản lý, kích thước 2 vùng nhớ bằng nhau và bằng 100 byte.5.0Đáp án: MOV SI, 200H MOV DI, 300H MOV CX, 100LAP100: MOV AL, SI MOV DI, AL INC SI INC DI LOOP LAP1005.0Câu 2Câu hỏi: Viết đoạn chương trình chuyển mảng dữ liệu từ vùng nhớ bufer1 có địa chỉ offset bắt đầu từ 500h lên vùng nhớ buffer2 có địa chỉ offset bắt đầu từ 700h. Biết rằng địa chỉ mảng của cả 2 vùng nhớ này đều do DS quản lý, kích thước 2 vùng nhớ bằng nhau và bằng 50 byte.5.0Đáp án. MOV SI, 500H MOV DI, 700H MOV CX, 50LAP50: MOV AL, SI MOV DI, AL INC SI INC DI LOOP LAP505.0
Trang 1Câu 1
Câu hỏi: Viết đoạn chương trình chuyển mảng dữ liệu từ vùng nhớ bufer1 có địa chỉ offset bắt đầu từ 200h lên vùng nhớ buffer2 có địa chỉ offset bắt đầu từ 300h Biết rằng địa chỉ mảng của cả 2 vùng nhớ này đều do DS quản lý, kích thước 2 vùng nhớ bằng nhau và bằng 100 byte
5.0
Đáp án:
MOV SI, 200H
MOV DI, 300H
MOV CX, 100
LAP100:
MOV AL, [SI]
MOV [DI], AL
INC SI
INC DI
LOOP LAP100
5.0
Câu 2
Câu hỏi: Viết đoạn chương trình chuyển mảng dữ liệu từ vùng nhớ bufer1 có địa
chỉ offset bắt đầu từ 500h lên vùng nhớ buffer2 có địa chỉ offset bắt đầu từ 700h Biết rằng địa chỉ mảng của cả 2 vùng nhớ này đều do DS quản lý, kích thước 2 vùng nhớ bằng nhau và bằng 50 byte
5.0
Đáp án.
MOV SI, 500H
MOV DI, 700H
MOV CX, 50
LAP50:
MOV AL, [SI]
MOV [DI], AL
INC SI
INC DI
LOOP LAP50
5.0
Câu 3
Câu hỏi: Viết đoạn chương trình để chuyển 1 byte mã BCD chứa trong thanh ghi
AL thành các byte mã ASCII rồi lưu vào 2 byte nhớ có địa chỉ mảng là 500H, địa chỉ offset là 300H và 301H Biết rằng 1 byte mã BCD bao gồm 2 từ mã BCD chứa
ở 4 bit cao và 4 bit thấp
5.0
Đáp án.
MOV AH, AL
AND AL, 0FH; lọc bỏ 4 bit cao
ADD AL, 30H; chuyển sang mã ASCII (số 0 là 30H)
MOV 500H: 300H, AL
MOV AL, AH
MOV CL, 4; bước nhảy là 4 bit
SHR AL, CL; dịch phải 4 bit, lấy lại 4 bit cao
ADD AL, 30H
MOV 500H: 301H, AL
5.0
Trang 2Câu 4
Câu hỏi: Viết đoạn chương trình để chuyển 1 byte mã BCD chứa trong thanh ghi
BL thành các byte mã ASCII rồi lưu vào 2 byte nhớ có địa chỉ mảng là 700H, địa
chỉ offset là 500H và 501H Biết rằng 1 byte mã BCD bao gồm 2 từ mã BCD chứa
ở 4 bit cao và 4 bit thấp
5.0
Đáp án.
MOV BH, BL
AND BL, 0FH
ADD BL, 30H
MOV 700H: 500H, BL
MOV BL, BH
MOV CL, 4
SHR BL, CL
ADD BL, 30H
MOV 700H: 501H, BL
5.0
Câu 5
Câu hỏi: Viết đoạn chương trình để chuyển 1 byte mã hexa chứa trong thanh ghi BH thành các byte mã ASCII rồi chuyển ra ngoài qua cổng 8 bit có địa chỉ là 600h Biết rằng 1 byte mã hexa bao gồm 2 từ mã hexa chứa ở 4 bit cao và 4 bit thấp
5.0
Đáp án.
MOV DX, 600H
MOV BL, BH
AND BH, 0FH; lọc bỏ 4 bit cao
CMP BH, 10; so sánh với 10 nếu lớn hơn nhảy tới BCD1
JAE BCD1
ADD BH, ‘0’
BCD1:
ADD BH, ‘A’ – 10
MOV AL, BH
OUT DX, AL
MOV BH, BL
MOV CL, 4
SHR BH, CL
CMP BH, 10
JAE BCD1
ADD BH, ‘0’
MOV AL, BH
OUT DX, AL
5.0
Câu 6
Câu hỏi: Viết đoạn chương trình để chuyển 1 byte mã hexa chứa trong thanh ghi
AH thành các byte mã ASCII rồi chuyển ra ngoài qua cổng 8 bit có địa chỉ là 300h Biết rằng 1 byte mã hexa bao gồm 2 từ mã hexa chứa ở 4 bit cao và 4 bit thấp
5.0
Trang 3Đáp án.
MOV DX, 300H
MOV BL, AH
AND AH, 0FH
CMP AH, 10
JC BCD1
ADD AH, ‘A’ – 10
MOV AL, AH
OUT DX, AL
MOV AH, BL
MOV CL, 4
SHR AH, CL
CMP AH, 10
JC BCD2
ADD AH, ‘A’ -10
MOV AL, AH
OUT DX, AL
5.0
Câu 7
Câu hỏi: Xét hệ vi xử lý cần đọc các byte từ cổng dữ liệu 8 bit có địa chỉ 200h vào
bộ vi xử lý Biết rằng để xác định cổng đó có dữ liệu hay không, người ta dùng
thêm một cổng trạng thái có địa chỉ 201h Trong đó bit D3 của cổng này bằng 1
báo rằng có dữ liệu, ngược lại D3 bằng 0 báo rằng không có dữ liệu
Yêu cầu: Viết đoạn chương trình để đọc 1 byte dữ liệu từ cổng đã cho vào bộ
vi xử lý và lưu vào trong thanh ghi BH.
5.0
Đáp án.
Đoạn chương trình đọc 1 byte trong bài tập chuyển mã Chương 3 – Giáo trình kỹ thuật vi xử lý – Tác giả Đỗ Xuân Tiến
Port_STATUS 201h
Port_DATA 200h
MOV DX, Port_STATUS
READ_AGAIN:
IN AL,DX
AND AL,08h
JZ READ_AGAIN
MOV DX,Port_DATA
IN AL,DX
MOV BH,AL
5.0
Câu 8
Câu hỏi: Xét hệ vi xử lý cần đọc các byte từ cổng dữ liệu 8 bit có địa chỉ 400h vào
bộ vi xử lý Biết rằng để xác định cổng đó có dữ liệu hay không, người ta dùng
thêm một cổng trạng thái có địa chỉ 401h Trong đó bit D5 của cổng này bằng 1
báo rằng có dữ liệu, ngược lại D5 bằng 0 báo rằng không có dữ liệu
Yêu cầu: Viết đoạn chương trình để đọc 1 byte dữ liệu từ cổng đã cho vào bộ
vi xử lý và lưu vào trong thanh ghi BH.
5.0
Đáp án.
Đoạn chương trình đọc 1 byte trong bài tập chuyển mã Chương 3 – Giáo trình kỹ
5.0
Trang 4thuật vi xử lý – Tác giả Đỗ Xuân Tiến
Port_STATUS 401H
Port_DATA 400H
MOV DX,Port_STATUS
READ_AGIAN:
IN AL,DX
AND AL,20H
JZ READ_AGAIN
MOV DX,Port_DATA
IN AL,DX
MOV BH,AL
Câu 9
Câu hỏi: Viết chương trình chuyển mảng dữ liệu từ vùng nhớ có địa chỉ offset DISPLAY_VIDEO = 900h và có địa chỉ mảng là DISPLAY_BASE = 5000h tới vùng dữ liệu BUFFER_SAVE có địa chỉ mảng do DS quản lý Biết rằng vùng nhớ DISPLAY_VIDEO chứa 2 kbyte ký tự
5.0
Đáp án.
Chương trình chuyển mảng trong chương 3 – Giáo trình kỹ thuật vi xử
lý – Tác giả Đỗ Xuân Tiến
BUFFER_SAVE DB 2*1024 DUP(?)
DISPLAY_VIDEO = 900h
DISPLAY_BASE = 5000h
MOV SI, DISPLAY_BASE
LEA DI BUFFER_SAVE
MOV AX, DISPLAY_VIDEO
MOV DS,AX
MOV AX,DS
MOV ES,DS
CLD
LOOP_2KB
MOVS
LOOP LOOP_2KB
5.0
Câu 10
Câu hỏi: Viết chương trình chuyển mảng dữ liệu từ vùng nhớ Buffer1 có địa chỉ offset bắt đầu là 128h tới vùng nhớ Buffer2 có địa chỉ offset bắt đầu là 512h Biết rằng cả hai vùng nhớ đều nằm trong mảng có địa chỉ Segment là 200h và kích thước 2 vùng nhớ bằng nhau và bằng 500 byte
5.0
Đáp án.
MOV AX, 200H
MOV DS, AX
MOV SI, 128H
MOV DI, 512H
MOV CX, 500
BACK:
MOV AL, [SI]
MOV [DI], AL
5.0
Trang 5INC SI
INC DI
LOOP BACK
Câu 11
Câu hỏi:Viết đoạn chương trình để thu và xử lý tin trong bài toán thu tin đa kênh Biết sơ đồ ngoại vi thu tin như sau:
5.0
Đáp án.
Chương trình con Thu_xulytin trong chương 4 – giáo trình kỹ thuật vi xử lý – Tác giả Đỗ Xuân Tiến
IN AL,FLOPS
MOV AH,AL
NOT AL
OUT FLOPS,AL
MOV AL,FFH
OUT FLOPS,AL
MOV CX,6
MOV BX,RAM
LOOP_6K:
MOV AL,AH
SHR AL,1
MOV AH,AL
MOV AL,00H
ADC AL,[BX]
ADD AL
MOV [BX],AL
INC BX
MOV AL,00H
ADC AL,[BX]
ADD AL
5.0
D Q Clk
R
Vc c Sensor 0
Bộ đệm vào 367
Bộ đệm
ra 174
D Q
Clk
R
c
/FLOP_In
/ FLOP_Out
K 0
K 5
Data Bus
D5 D1 D0
Rst 5
Rst 0
FlipFop 7474
Trang 6MOV [BX],AL
INC BX
MOV AL,00H
ADC AL,[BX]
ADD AL
MOV [BX],AL
INC BX
MOV AL,00H
ADC AL,[BX]
ADD AL
MOV [BX],AL
INC BX
LOOP LOOP_6K
POPA
Câu 12
Câu hỏi:Viết đoạn chương trình để hiển thị dữ liệu của kênh 0 trong bài toán thu tin đa kênh Biết rằng dữ liệu kênh 0 gồm 3 byte có địa chỉ offset bắt đầu từ 8000h,
sơ đồ ngoại vi hiển thị như sau
5.0
Đáp án.
5.0
G m BCD7Seg
A B C D
a b c d e f g
Giải mã tuyến tính
d5d4d3d2d1d0
D
15
D5 D4 D3 D2 D1 D0
é kh
Kªnh d÷ liÖu 16
bit
DATAPOS
N5 N4 N3 N2 N1 N0
N5 N4 N3 N2 N1 N0
/DATAVALUE
FNA 5520
Trang 7Chương trình con HT_BF trong chương 4 – giáo trình kỹ thuật vi xử lý – Tác giả Đỗ
Xuân Tiến
Câu 13
Câu hỏi:Viết đoạn chương trình để xác định phím được nhấn theo sơ đồ tổ chức bàn phím sau:
5.0
Đáp án.
Chương trình con HT_BF trong chương 4 – giáo trình kỹ thuật vi xử lý – Tác giả Đỗ Xuân Tiến
5.0
Câu 14
Diode
Vcc
KBD In
KBD In
/KBD_Out
/KBD_In
D6
D0
D0
D1
D1
D2
D2
D3
D3
D4
D4
D5
Minh họa cấu trúc phím ấn
Kênh dữ liệu
Trang 8Câu hỏi:Viết đoạn chương trình để khởi tạo cho đơn PIC 8259, biết rằng địa chỉ
CS của PIC = 10h, vector ngắt cơ sở = 40h, khoảng cách 4 byte/ vector, hệ dùng EOI thường, không đệm kệnh Biết dạng thức các từ điều khiển khởi đầu như sau:
ICW1:
ICW2:
ICW4:
5.0
Đáp án.
MOV AL, 17H
OUT 10H, AL
MOV AL, 40H
5.0
Trang 9OUT 11H, AL
MOV AL, 01H
OUT 11H, AL
m
m
Mov al,00h
Out 10h,al
Sti;cho phép ngắt hoạt động trở lại
Câu 15
Câu hỏi:
A 1 5
A 4
V c c
A 0 / R D / W R / I N T A
I N T R
A 0
/ I O R D
/ I O W R
/ I N T A
I N T R
S P / E N
V c c
/ C S
C a s 0
C a s 1
C a s 2
I R 0
I R 1
I R 2
I R 3
I R 4
I R 5
I R 6
I R 7
N V 0
N V 1
N V 2
N V 3
N V 4
N V 5
N V 6
N V 7
H ? V X L
8 0 2 8 6
K ê n h d ? li? u 8 b it c ? a P I C 8 2 5 9 A
đ ư ? c n ? i v ? i b y t e t h ? p c ? a k ê n h d ? li? u h ? v i x ? lý 8 0 2 8 6
A E N
A 1
A 2
A 3
A
B C
/ Q 0
7 4 1 3 8
/ E 3 / E 2
E 1
7 4 1 3 8
/ Q 7
Cho sơ đồ ghép nối giữa PIC 8259 với hệ vi xử lý như trên, yêu cầu viết đoạn chương trình để cài đặt ngắt NV5 vào bảng vector ngắt của bộ vi xử lý 80286 Biết rằng số hiệu ngắt cơ sở của PIC là 30h và đã có sẵn chương trình con phục vụ ngắt IR5_Service
5.0
Trang 10Đáp án.
MOV AX, 00H
MOV ES, AX
MOV DX, OFFSET IR5_SERVICE
MOV WORD PTR ES: [35H*4], DX
MOV DX, CS
MOV WORD PTR ES: [35H * 4 + 2], DX
5.0
Câu 16
Câu hỏi: Cho sơ đồ ghép nối ADC 0809 với hệ vi xử lý như sau:
Biết rằng địa chỉ chọn chip của ADC là 200h Viết đoạn chương trình để đọc 1 byte dữ liệu sau lấy mẫu của kênh 3 vào bộ vi xử lý và lưu trong thanh ghi BL
5.0
Đáp án.
Chương trình trong bài tập ADC 8 bit – chương 8 – Giáo trình kỹ thuật vi xử lý – Tác giả Đỗ Xuân Tiến
5.0
Câu 17
Câu hỏi: Cho sơ đồ ghép nối ADC 0809 với hệ vi xử lý như sau: 5.0
A B C
/ IORD
/ IOWR
/CS 0809 có địa chỉ xác định từ bộ giải mã địa chỉ
8 kênh vào
3 bit địa chỉ kênh vào
START
ALE
OE
vi xử lý biết:
đã biến đổi xong
Kênh dữ liệu hệ thống
A B C
/ IORD
/ IOWR
/CS 0809 có địa chỉ xác định từ bộ giải mã địa chỉ
8 kênh vào
3 bit địa chỉ kênh vào
START
ALE
OE
xử lý biết: đã biến đổi xong
Kênh dữ liệu
hệ thống
Trang 11Biết rằng địa chỉ chọn chip của ADC là 100h Viết đoạn chương trình để đọc 1 byte dữ liệu sau lấy mẫu của kênh 5 vào bộ vi xử lý và lưu trong thanh ghi BH
Đáp án.
Chương trình trong bài tập ADC 8 bit – chương 8 – Giáo trình kỹ thuật vi xử lý – Tác giả Đỗ Xuân Tiến
5.0
Câu 18
Câu hỏi: Viết đoạn chương trình Assembly cho Onchip 80c51 để thức hiện đọc 1
byte từ ROM có địa chỉ 200h và đưa byte giá trị đó ra cổng P1
5.0
Đáp án.
MOV A, #0
MOV DPTR, #200H
MOVC A, @A+DPTR
MOV P1, A
5.0
Câu 19
Câu hỏi: Viết đoạn chương trình Assembly cho Onchip 80c51 để thực hiện đọc 1
byte từ ROM có địa chỉ 100h và lưu giá trị đó vào ô nhớ có địa chỉ 40h trên RAM
trong
5.0
Đáp án.
MOV A, #0
MOV DPTR, #100H
MOVC A, @A+DPTR
MOV 40H, A
5.0
Câu 20
Câu hỏi: Hệ đo độ rộng xung trên hệ vi xử lý on-chip 80C51 với focs= 12 MHZ,
xung cần đo độ rộng được đưa vào chân tín hiệu INT0 (bit P3.2 – chân IC 12), kết
quả đo phải chuyển vào máy tính PC qua đường truyền UART của hệ vi xử lý
on-chip 80C51 với tốc độ = 9600 baud, khung tin = 8 bit DATA, 1 bit STOP, không
5.0
Trang 12PARITY Giữa các giá trị kết quả phải có dấu “,” ngăn cách.
Yêu cầu: Phân tích phương pháp đo độ rộng xung và trình bày lưu đồ thuật toán cho bài toán này (không yêu cầu viết chương tình).
Đáp án.
Bài toán đo độ rộng xung – Chương 11 - Giáo trình kỹ thuật vi xử lý – Tác giả Đỗ Xuân Tiến
5.0
Câu 21
Câu hỏi: Hệ đo độ rộng xung trên hệ vi xử lý on-chip 80C51 với focs= 12 MHZ,
xung cần đo độ rộng được đưa vào chân tín hiệu INT0 (bit P3.2 – chân IC 12), kết quả đo phải chứa trong hai thanh ghi: R1 chứa byte cao của kết quả, R0 chứa byte thấp của kết quả
Yêu cầu: Hãy phân tích phương pháp đo độ rộng xung và trình bày thuật
toán cho bài toán này (không yêu cầu viết chương trình).
5.0
Đáp án.
Bài toán đo độ rộng xung – Chương 11 - Giáo trình kỹ thuật vi xử lý – Tác giả Đỗ Xuân Tiến
5.0
Câu 22
Câu hỏi: Viết đoạn chương trình bằng ngôn ngữ Assembly cho Onchip 80c51 thực hiện:
Khởi tạo cho UART làm việc ở MODE 1, cho phép UART nhận dữ liệu, tốc độ baud = 9600 baud/s Biết tần số dao động đưa vào Onchip là 11,059 MHz
Khởi tạo để Timer 0 chạy ở MODE 2, với giá trị bắt đầu của bộ đếm (giá trị reload) là 156
Cho biết dạng thức của các thanh ghi SCON và TMOD lần lượt là:
Và
5.0
Đáp án.
MOV SCON, #50H
MOV TMOD, #22H
MOV TH1, #0FDH
MOV TH0, #156
SETB TR1
SETB TR0
5.0
Trang 13Câu 23
Câu hỏi: Hệ đo độ rộng xung trên hệ vi xử lý on-chip 80C51 với focs= 12 MHZ,
xung cần đo độ rộng được đưa vào chân tín hiệu INT0 (bit P3.2 – chân IC 12), kết quả đo phải chuyển vào máy tính PC qua đường truyền UART của hệ vi xử lý on-chip 80C51 với tốc độ = 9600 baud, khung tin = 8 bit DATA, 1 bit TOP, không
PARITY Giữa các giá trị kết quả phải có dấu “,” ngăn cách
Yêu cầu: Viết chương trình cho hệ vi xử lý thực hiện chức năng trên, cho sẵn lưu đồ thuật toán như sau:
a/ Lưu đồ thuật toán chương trình con phát 1 byte
b/ Lưu đồ thuật toán chương trình chính:
5.0
Trang 14Đáp án.
Bài toán đo độ rộng xung – Chương 11 - Giáo trình kỹ thuật vi xử lý – Tác giả Đỗ Xuân Tiến
5.0
Câu 24
Câu hỏi: Hệ đo độ rộng xung trên hệ vi xử lý on-chip 80C51 với focs= 12 MHZ,
xung cần đo độ rộng được đưa vào chân tín hiệu INT0 (bit P3.2 – chân IC 12), kết quả đo phải chứa trong hai thanh ghi: R1 chứa byte cao của kết quả, R0 chứa byte thấp của kết quả
Yêu cầu: Viết chương trình cho hệ vi xử lý thực hiện chức năng trên, cho sẵn lưu đồ thuật toán như sau:
5.0
Trang 15Đáp án.
Bài toán đo độ rộng xung – Chương 11 - Giáo trình kỹ thuật vi xử lý – Tác giả Đỗ Xuân Tiến
5.0
Câu 25
Câu hỏi: Cho bài toán dùng hệ vi xử lý Onchip 80c51 với nguồn dao động thạch anh 12 MHz để tạo ra đồng hồ Hãy trình bày ý tưởng sử dụng tài nguyên của Onchip và viết đoạn chương trình để tạo ra đơn vị là 1 giây
5.0
Đáp án.
Ý 1: Sử dụng Timer0 ở Mode 2 với giá trị TH0 = 6 Như vậy chu kỳ ngắt là 250 us Ta cần đếm 40 * 100 chu kỳ ngắt để có được đơn vị là 1 giây
Ý 2: ORG 0BH
INC R0
CJNE R0, #40, END_
MOV R0, #0
INC R1
CJNE R1, #100, END_
MOV R1, #0
5.0
Trang 16INC R2 ; R2 chứa biến giây CJNE R2, #60, END_
MOV R2, #0