Professional Documents
Culture Documents
Mssv Họ và tên
/* restore registers */
ldw r2, 0(sp)
ldw r3, 4(sp)
ldw r5, 8(sp)
ldw r9, 12(sp)
ldw r10, 16(sp)
ldw r15, 20(sp)
ldw r16, 24(sp)
ldw r17, 28(sp)
addi sp, sp, 28
ret
.global PUT_JTAG
PUT_JTAG:
/* save any modified registers */
subi sp, sp, 4
stw r4, 0(sp)
END_PUT:
/* restore registers */
ldw r4, 0(sp)
addi sp, sp, 4
ret
LOOP:
br LOOP
.data
.skip 3
N: .byte 16
SEVEN_SEG_DECODE_TABLE:
.byte 0b00111111, 0b00000110, 0b01011011, 0b01001111
.byte 0b01100110, 0b01101101, 0b01111101, 0b00000111
.byte 0b01111111, 0b01100111, 0b01110111, 0b01111100
.byte 0b00111001, 0b01011110, 0b01111001, 0b01110001
HEX_SEGMENTS: .fill 1, 4, 0
.end
2. Giải thích tổng quan chương trình code:
#Tách lấy hàng trăm, chục, đơn vị ở thanh ghi r5 lưu vào r2 r3 r10 để hiển thị
LED 7 đoạn
andi r2, r5, 0xF
andi r3, r5, 0xF0
andi r10, r5,0xF00
srli r3, r3, 0x4
srli r10, r10, 0x8
#Hiển thị lên LED 7 đoạn
movia r9, HEX_SEGMENTS
add r15, r7, r2
ldb r16, 0(r15)
stb r16, 0(r9)
addi r9, r9, 1
#Trả lại giá trị ban đầu cho các thanh ghi lưu trong stack sau đó return
/* restore registers */
ldw r2, 0(sp)
ldw r3, 4(sp)
ldw r5, 8(sp)
ldw r9, 12(sp)
ldw r10, 16(sp)
ldw r15, 20(sp)
ldw r16, 24(sp)
ldw r17, 28(sp)
# reserve space on the stack
addi sp, sp, 28
ret
#Hàm con gửi dữ liệu lên màn hình
.global PUT_JTAG
PUT_JTAG:
/* save any modified registers */