这是学校的作业。我被要求用汇编编写一个 I/O 映射程序。
我被困在第 1 级,我只是从键盘读取并使用轮询方法写入监视器。
###########################################################
.text 0x00400000
main:
addi $s0, $0, 0 # save address for transmitter data
lui $s0, 0xffff
poll_read:
lw $t0, 0($s0) # read transmitter data word
andi $t0, $t0, 0x1 # keep the 1st bit
beq $t0, $0, poll_read # not ready, go back
lw $t1, 4($s0) # read transmitter control word
andi $t1, $t1, 0xff # keep the 1st 8 bits
addi $t1, $t1, 1
poll_write:
lw $t0, 8($s0) # read receiver data word
andi $t0, $t0, 0x1 # keep the 1st bit
beq $t0, $0, poll_write # not ready, go back
sw $t1, 0xc($s0) # display monitor
j poll_read
问题是 0xffff 0000 的就绪位始终为 0。
所以,我不能做任何其他事情。
有什么技巧可以让它起作用吗?更改一些设置?