15:07, 10/01/2026
VXL HK231 DE1 DA Final Exam Solutions and Code Explanations - Studocu
Câu h 2i ) (2.0 :đ)
a. (0.5đ) ảnh hưởng đế ạt độK tên ít nht 5 lnh n ho ng ca vùng STACK.
PUSH, POP, RCALL, ICALL, CALL, RET, RETI
b. (1.5đ) Cho đoạn chương trình con sau đây:EXAM
EXAM: LDI R16, 0XC2
LSL R16
PUSH R16
RET
MSSV: ....................................... H và tên SV: ...................................................................................................... Trang 1
15:07, 10/01/2026
VXL HK231 DE1 DA Final Exam Solutions and Code Explanations - Studocu
i) (0.) Tìm ni dung ca R16 sau khi th c hi n xong l nh giá tr các c N, C LSL R16
c a thanh ghi SREG sau khi c thi xong l nh RET i thích cách làm. th . Gi
R16 = N C Z = 84H = 1 = 1 0
ii) (1.0đ) ết khi vào đầu chương trình con Cho bi EXAM, ni dung SP = 03FDH và n i dung các ô
nh SRAM cho dưới đây, tìm ni dung PC và SP sau thc hin xong lnh RET, gii thích.
Câu h 3i ) (2.0 : đ)
Cho đoạn chương trình sau: ng h p i) ng h p ii) ;Trườ ;Trườ
LDI R27,0x01 ;R27 = 0x01 R27 = 0x01
LDI R26,0x00 ;R26 = 0x00 R26 = 0x00
LD R24,X+ ;R24 = (0x0100) = 0x39, X = 0x0101 R24 = 0xC7, X = 0x0101
LD R25,X ;R25 = (0x0101) = 0x30 R25 = 0xCF
SBRS R25,7 ;R25(7) = 0 5(7) = 1R2
RJMP TT
COM R25 ; R25 = 0x30
COM R24 ; R24 = 0x38
ADIW R24,1 ; R25 = 0x30, R24 = 0x39
TT: MOVW R22,R24 ;R22 = 0x39, R23 = 0x30 R22 = 0x39, R23 = 0x30
a. (1.5đ) Cho biết ni dung thanh ghi R23 R22 (trình bày cách làm khong trng phía trên) sau
th c th ng hực đoạn chương trình trên trong 2 trườ p sau:
i) (0.75đ) Ni dung các ô nh SRAM (0x0100) = 0x39 và (0x0101) = 0x30.
ii) (0.75đ) Ni dung các ô nh SRAM (0x0100) = 0xC7 và (0x0101) = 0xCF.
b. (0.5đ) Cho biế ức năng đoạn chương trình trên.t ch
Tính giá tr tuy i c a s 16 bit d u 2 n i dung c a c p ô nh SRAM a ch 0x101 (b ệt đố đị
cao), 0x100 (byte th p). K t qu ế được lưu trong cặp thanh ghi R23 (byte cao) và R22 (byte th p).
Câu h 4i ) (2.0 : đ)
a. (1.) ết chương trình con ức năng kiểVi tên có chKTRA m tra ni dung thanh ghi R0 thc th
tác v sau: n u ế 30H n i dung c a thanh ghi R0 39H (mã ASCII c a các ký t s t n 9) thì 0 đế
Sau l nh RET:
PC = 8410H
SP = 03FEH
Gii thích: Lnh PUSH R16: (0x03FD) = R16 = 84H
SP = 0x03FC. L nh RET: SP = 0x03FD, PCH =
84H; SP = 0x03FE, PCL = 10H.
15:07, 10/01/2026
VXL HK231 DE1 DA Final Exam Solutions and Code Explanations - Studocu
T = 1; ngược li c T = 0.
Lưu ý: nội dung các thanh ghi đư ảo toàn sau khi thoát chương trình con.c b
MSSV: ....................................... H và tên SV: ...................................................................................................... Trang 2
KTRA: PUSH R16
MOV R16,R0
CPI R16,$30
BRLO T_0
CPI R16,$3A
BRSH T_0
SET
RJMP KT
T_0: CLT
KT: POP R16
RET
15:07, 10/01/2026
VXL HK231 DE1 DA Final Exam Solutions and Code Explanations - Studocu
b. (1.0đ) S d (CTC) ụng chương trình con câu a (Sinh viên không c n vi t l CTC, ch c n vi ế i ết
CTC l nh k t thúc), vi hoàn ch nh có ch ế ết chương trình ức năng kim tra 100 ô nh S a c RAM đị
đầ ếu 0x100: n u 30H ni dung ô nh 39H đang xét thì đổi sang BCD tương ng (00H 09H)
(Ví d : 30H 00H) c t l i vào ô nh c l i thì gi nguyên n i dung ô nh . đó; ngượ đó Chương trìn
s d ng t i ch sau khi th c hi n xong vi c ki m tra.
.ORG 0
LDI XH,0x01
LDI XL,0x00
LDI R16,100
LP: R0,X LD
RCALL KTRA
BRTS ASCII_SO
RJMP TT
ASCII_SO:
MOV R17,R0
SUBI R17,0x30
ST X,R17
TT: INC XL
DEC R16
BRNE LP
HR: RJMP HR
KTRA:
RET
Câu h 5i ) (2.0 :đ)
Cho mạch điện như hình bên, với PD1, PD2 là các ngõ
vào nh n d ng SW nh ấn. SW0, SW1 các đin tr
kéo lên ngu n bên trong chip; PortB các ngõ ra lái
LED n. Gi s các SW c ch ng rung ti7 đoạ đã đượ ếp
điểm. Ban đu LED xu t s 0.
a. (0.75đ) Viết chương trình con LOOKUP_7SEG
dùng để ảng LED 7 đoạ tra b n loi anode chung.
Giá tr c trong thanh ghi R16. Giá tr ần tra được lưu
b ng sau khi tra trong thanh ghi R17. được lưu
Khai báo b n anode chung các s 0 ảng tra mã 7 đo 9
có tên trong Flash ROM.TAB_LED
15:07, 10/01/2026
VXL HK231 DE1 DA Final Exam Solutions and Code Explanations - Studocu
LOOKUP_7SEG:
LDI ZH,HIGH(TAB_LED<<1)
LDI ZL,LOW(TAB_LED<<1)
ADD ZL,R16
LDI R18,0
ADC ZH,R18
LPM R17,Z
RET
TAB_LED: .DB 0XC0,0XF9,0XA4,0XB0,0X99,0X92
.DB 0X82,0XF8,0X80,0X90
MSSV: ....................................... H và tên SV: ...................................................................................................... Trang 3
15:07, 10/01/2026
VXL HK231 DE1 DA Final Exam Solutions and Code Explanations - Studocu
b. (0.5đ) Viết chương trình con ởi động các ngõ vào, ngõ ra theo đúng yêu cầu như trên. INIT_PORT kh
INIT_PORT:
LDI R16,$00
OUT DDRD,R16
LDI R16,$FF
OUT PORTD,R16
OUT DDRB,R16
RET
c. S d ng (0.75đ) chương trình con câu a câu b (Sinh viên không c n vi t l i CTC, ch c n vi ế ế
CTC l nh k t thúc), ế vi c hi n liên t c giá tr c c k t nết chương trình thự ục đọ ủa 2 SW đượ ế ối nh
hình v vào b ng sau và xu t giá tr n. . Sau khi đọc, căn cứ tương ứng ra LED 7 đoạ
SW1 SW0
Giá tr n th trên LED hi 7 đoạn
M M
1
M Đóng
3
Đóng M
5
Đóng Đóng
7
Xem SW m 1 0 thì b ng v i hàm giá tr c SW đóng ảng trên tương 7 𝑥 (vi 𝑥
SW1SW0 x 2).
.ORG 0
CALL INIT_PORT
LDI R16,$00 u LED hi n s 0 ;ban đầ
CALL LOOKUP_7SEG
OUT PORTB,R17
LOOP:
LDI R16,7
IN 7,PIND ; c PortD R1 đọ
ANDI R17,0b0000_0110 ;che PD2 và PD1
SUB R16,R17 ;R16 = 7 R17
CALL LOOKUP_7SEG
OUT PORTB,R17
RJMP LOOP
INIT_PORT:
RET
LOOKUP_7SEG:
SW1
(PD2)
SW0
(PD1)
R17 (sau khi th c th i
xong l nh A NDI
1 1 6
1 0 4
0 1 2
0 0 0
15:07, 10/01/2026
VXL HK231 DE1 DA Final Exam Solutions and Code Explanations - Studocu
RET
TAB_LED: .DB 0XC0,0XF9,0XA4,0XB0,0X99,0X92
.DB 0X82,0XF8,0X80,0X90
--- ---HT
MSSV: ....................................... H và tên SV: ...................................................................................................... Trang 4
15:07, 10/01/2026
VXL HK231 DE1 DA Final Exam Solutions and Code Explanations - Studocu

Preview text:

15:07, 10/01/2026
VXL HK231 DE1 DA Final Exam Solutions and Code Explanations - Studocu Câu hỏi 2) (2.0đ):
a. (0.5đ) Kể tên ít nhất 5 lệnh ảnh hưởng đến hoạt động của vùng STACK.
PUSH, POP, RCALL, ICALL, CALL, RET, RETI
b. (1.5đ) Cho đoạn chương trình con EXAM sau đây: EXAM: LDI R16, 0XC2 LSL R16 PUSH R16 RET
MSSV: ....................................... Họ và tên SV: ...................................................................................................... Trang 1 15:07, 10/01/2026
VXL HK231 DE1 DA Final Exam Solutions and Code Explanations - Studocu
i) (0.5đ) Tìm nội dung của R16 sau khi thực hiện xong lệnh LSL R16 và giá trị các cờ N, C và c a thanh ghi S ủ
REG sau khi thực thi xong lệnh RET. Giải thích cách làm. R16 = 84H N = 1 C = 1 Z = 0
ii) (1.0đ) Cho biết khi vào đầu chương trình con EXAM, nội dung SP = 03FDH và n i ộ dung các ô
nhớ SRAM cho dưới đây, tìm nội dung PC và SP sau thực hiện xong lệnh RET, giải thích. Sau lệnh RET: PC = 8410H SP = 03FEH
Giải thích: Lệnh PUSH R16: (0x03FD) = R16 = 84H
và SP = 0x03FC. Lệnh RET: SP = 0x03FD, PCH = 84H; SP = 0x03FE, PCL = 10H. Câu hỏi 3) (2.0đ):
Cho đoạn chương trình sau: ;Trường hợp i) ;Trường hợp ii) LDI R27,0x01 ;R27 = 0x01 R27 = 0x01 LDI R26,0x00 ;R26 = 0x00 R26 = 0x00 LD
R24,X+ ;R24 = (0x0100) = 0x39, X = 0x0101 R24 = 0xC7, X = 0x0101 LD R25,X ;R25 = (0x0101) = 0x30 R25 = 0xCF SBRS R25,7 ;R25(7) = 0 R25(7) = 1 RJMP TT COM R25 ; R25 = 0x30 COM R24 ; R24 = 0x38 ADIW R24,1 ; R25 = 0x30, R24 = 0x39 TT: MOVW
R22,R24 ;R22 = 0x39, R23 = 0x30 R22 = 0x39, R23 = 0x30
a. (1.5đ) Cho biết nội dung thanh ghi R23 và R22 (trình bày cách làm ở khoảng trống phía trên) sau
thực thực đoạn chương trình trên trong 2 trường hợp sau:
i) (0.75đ) Nội dung các ô nhớ SRAM (0x0100) = 0x39 và (0x0101) = 0x30.
ii) (0.75đ) Nội dung các ô nhớ SRAM (0x0100) = 0xC7 và (0x0101) = 0xCF.
b. (0.5đ) Cho biết chức năng đoạn chương trình trên. Tính giá trị tuyệt i đố c a ủ s
ố 16 bit có dấu bù 2 là n i ộ dung c a
ủ cặp ô nhớ SRAM ở địa chỉ 0x101 (b
cao), 0x100 (byte thấp). Kết quả được lưu trong cặp thanh ghi R23 (byte cao) và R22 (byte thấp). Câu hỏi 4) (2.0đ): a. (1.0đ) V ết
i chương trình con có tên KTRA có chức năng kiểm tra nội dung thanh ghi R0 và thực th tác v ụ sau: nếu 30H ≤ n i ộ dung c a
ủ thanh ghi R0 ≤ 39H (mã ASCII c a ủ các ký tự s ố từ 0 đến 9) thì 15:07, 10/01/2026
VXL HK231 DE1 DA Final Exam Solutions and Code Explanations - Studocu
T = 1; ngược lại cờ T = 0.
Lưu ý: nội dung các thanh ghi được bảo toàn sau khi thoát chương trình con. KTRA: PUSH R16 SET MOV R16,R0 RJMP KT CPI R16,$30 T_0: CLT BRLO T_0 KT: POP R16 CPI R16,$3A RET BRSH T_0
MSSV: ....................................... Họ và tên SV: ...................................................................................................... Trang 2 15:07, 10/01/2026
VXL HK231 DE1 DA Final Exam Solutions and Code Explanations - Studocu
b. (1.0đ) Sử dụng chương trình con (CTC) ở câu a (Sinh viên không cần viết lại CTC, chỉ cần viết tê
CTC và lệnh kết thúc), viết chương trình hoàn chỉnh có chức năng kiểm tra 100 ô nhớ SRAM có địa c
đầu là 0x100: nếu 30H ≤ nội dung ô nhớ đang xét ≤ 39H thì đổi sang mã BCD tương ứng (00H – 09H) (Ví d : ụ 30H
→ 00H) và cất lại vào ô nhớ đó; ngược lại thì giữ nguyên n i ộ dung ô nhớ . đó Chương trìn sẽ dừng tại ch
ỗ sau khi thực hiện xong việc kiểm tra. .ORG 0 LDI XH,0x01 LDI XL,0x00 LDI R16,100 LP: LD R0,X RCALL KTRA BRTS ASCII_SO RJMP TT ASCII_SO: MOV R17,R0 SUBI R17,0x30 ST X,R17 TT: INC XL DEC R16 BRNE LP HR: RJMP HR KTRA: … RET Câu hỏi 5) (2.0đ):
Cho mạch điện như hình bên, với PD1, PD2 là các ngõ
vào nhận dạng SW nhấn. SW0, SW1 có các điện trở kéo lên ngu n
ồ bên trong chip; PortB là các ngõ ra lái
LED 7 đoạn. Giả sử các SW đã được ch ng ố rung tiếp
điểm. Ban đầu LED xuất số 0.
a. (0.75đ) Viết chương trình con LOOKUP_7SEG
dùng để tra bảng mã LED 7 đoạn loại anode chung.
Giá trị cần tra được lưu trong thanh ghi R16. Giá trị
bảng mã sau khi tra được lưu trong thanh ghi R17.
Khai báo bảng tra mã 7 đoạn anode chung các s 0 ố – 9
có tên TAB_LED trong Flash ROM. 15:07, 10/01/2026
VXL HK231 DE1 DA Final Exam Solutions and Code Explanations - Studocu LOOKUP_7SEG: LDI ZH,HIGH(TAB_LED<<1) LDI ZL,LOW(TAB_LED<<1) ADD ZL,R16 LDI R18,0 ADC ZH,R18 LPM R17,Z RET
TAB_LED: .DB 0XC0,0XF9,0XA4,0XB0,0X99,0X92 .DB 0X82,0XF8,0X80,0X90
MSSV: ....................................... Họ và tên SV: ...................................................................................................... Trang 3 15:07, 10/01/2026
VXL HK231 DE1 DA Final Exam Solutions and Code Explanations - Studocu
b. (0.5đ) Viết chương trình con INIT_PORT khởi động các ngõ vào, ngõ ra theo đúng yêu cầu như trên. INIT_PORT: LDI R16,$00 OUT DDRD,R16 LDI R16,$FF OUT PORTD,R16 OUT DDRB,R16 RET
c. (0.75đ) Sử dụng chương trình con ở câu a và câu b (Sinh viên không cần viết lại CTC, chỉ cần viế
CTC và lệnh kết thúc), viết chương trình thực hiện liên tục đọc giá trị của 2 SW được kết nối nh
hình vẽ. Sau khi đọc, căn cứ vào bảng sau và xuất giá trị tương ứng ra LED 7 đoạn.
SW1 SW0 Giá trị hiển thị trên LED 7 đoạn Mở Mở 1 Mở Đóng 3 Đóng Mở 5 Đóng Đóng 7
Xem SW mở là 1 và SW đóng là 0 thì bảng trên tương ứng với hàm 7 − 𝑥 (với 𝑥 là giá trị c SW1SW0 x 2). .ORG 0 CALL INIT_PORT LDI R16,$00 ;ban đầu LED hiện s 0 ố CALL LOOKUP_7SEG OUT PORTB,R17 LOOP: LDI R16,7
SW1 SW0 R17 (sau khi thực thi IN R17,PIND ; c P đọ ortD (PD2) (PD1) xong lệnh ANDI ANDI R17,0b0000_0110 ;che PD2 và PD1 1 1 6 SUB R16,R17 ;R16 = 7 – R17 1 0 4 CALL LOOKUP_7SEG 0 1 2 OUT PORTB,R17 0 0 0 RJMP LOOP INIT_PORT: … RET LOOKUP_7SEG: 15:07, 10/01/2026
VXL HK231 DE1 DA Final Exam Solutions and Code Explanations - Studocu … RET
TAB_LED: .DB 0XC0,0XF9,0XA4,0XB0,0X99,0X92 .DB 0X82,0XF8,0X80,0X90 ---HẾT---
MSSV: ....................................... Họ và tên SV: ...................................................................................................... Trang 4 15:07, 10/01/2026
VXL HK231 DE1 DA Final Exam Solutions and Code Explanations - Studocu