Lab 13
Lab 13
LABORATORY 13 REPORT
Course: Assembly language and computer architecture lab
Name: Ngo Minh Ngoc
Student’s ID: 20235984
Week 15: Lab 13. Assembly Programming in ESP32-C3 – using Wokwi Simulation
Assignment 1:
- For GPIO2:
+ Source code:
# Cần định nghĩa hàm init để Wokwi thực hiện chương trình hợp ngữ
.global init
# (Tùy chọn) Sử dụng chỉ thị .eqv để định nghĩa các hằng
.eqv GPIO_ENABLE_REG, 0x60004020 # Thanh ghi cấu hình vào/ra các chân
GPIO
.eqv GPIO_OUT_W1TS_REG, 0x60004008 # Thanh ghi thiết lập chân GPIO
.text
init:
li a1, GPIO_ENABLE_REG
li a2, 0x04
sw a2, 0(a1)
li a1, GPIO_OUT_W1TS_REG
li a2, 0x04
sw a2, 0(a1)
+ Result:
GPIO Source code Result
GPIO2 .text
init:
li a1, GPIO_ENABLE_REG
li a2, 0x04
sw a2, 0(a1)
li a1, GPIO_OUT_W1TS_REG
li a2, 0x04
sw a2, 0(a1)
GPIO3 .text
init:
li a1, GPIO_ENABLE_REG
li a2, 0x08
sw a2, 0(a1)
li a1, GPIO_OUT_W1TS_REG
li a2, 0x08
sw a2, 0(a1)
GPIO4 .text
init:
li a1, GPIO_ENABLE_REG
li a2, 0x10
sw a2, 0(a1)
li a1, GPIO_OUT_W1TS_REG
li a2, 0x10
sw a2, 0(a1)
Assignment 2:
- Source code update:
GPIO Source code
GPIO2 init:
li a1, GPIO_ENABLE_REG # Setup GPIO0 as output
li a2, 0x04
sw a2, 0(a1)
main_loop:
li a1, GPIO_OUT_W1TS_REG # GPIO0 -> HIGH
li a2, 0x04
sw a2, 0(a1)
call delay_asm # Delay
j main_loop # Loop
GPIO3 init:
li a1, GPIO_ENABLE_REG # Setup GPIO0 as output
li a2, 0x08
sw a2, 0(a1)
main_loop:
li a1, GPIO_OUT_W1TS_REG # GPIO0 -> HIGH
li a2, 0x08
sw a2, 0(a1)
call delay_asm # Delay
j main_loop # Loop
GPIO4 init:
li a1, GPIO_ENABLE_REG # Setup GPIO0 as output
li a2, 0x10
sw a2, 0(a1)
main_loop:
li a1, GPIO_OUT_W1TS_REG # GPIO0 -> HIGH
li a2, 0x10
sw a2, 0(a1)
call delay_asm # Delay
Assignment 3:
Number 7-digit hex equivalent Result
0 0xC0
1 0xF9
2 0x24
3 0x30
4 0x19
5 0x12
6 0x02
7 0xF8
8 0x0
9 0x10
Assignment 4:
Assignment 5:
- Source code:
.global init
li a1, IO_MUX_GPIO5_REG
sw a2, 0(a1)
li a1, IO_MUX_GPIO6_REG
sw a2, 0(a1)
# Display 0
li a2, DIGIT_0
sw a2, 0(a1)
call delay_asm
# Display 1
li a2, DIGIT_1
sw a2, 0(a1)
call delay_asm
# Display 2
li a2, DIGIT_2
sw a2, 0(a1)
call delay_asm
# Display 3
li a2, DIGIT_3
sw a2, 0(a1)
call delay_asm
# Display 4
li a2, DIGIT_4
sw a2, 0(a1)
call delay_asm
# Display 5
li a2, DIGIT_5
sw a2, 0(a1)
call delay_asm
# Display 6
li a2, DIGIT_6
sw a2, 0(a1)
call delay_asm
# Display 7
li a2, DIGIT_7
sw a2, 0(a1)
call delay_asm
# Display 8
li a2, DIGIT_8
sw a2, 0(a1)
call delay_asm
# Display 9
li a2, DIGIT_9
sw a2, 0(a1)
call delay_asm
# Loop again
j count_loop