







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