MIPS 轮询在 QtSpim 中有效吗? (垃圾邮件模拟器)
Does MIPS polling work in QtSpim? (spim simulator)
这是学校的作业。
我被要求用汇编编写一个 I/O 映射程序。
我卡在第 1 级,我只是简单地从键盘读取并使用轮询方法写入监视器。
###########################################################
.text 0x00400000
main:
addi $s0, [=10=], 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, [=10=], 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, [=10=], poll_write # not ready, go back
sw $t1, 0xc($s0) # display monitor
j poll_read
问题是 0xffff 0000 的就绪位始终为 0。
所以,我无能为力。
有没有什么技巧可以让它起作用?改变一些设置?
您必须在 PCSpim 设置中 select "Mapped I/O"。据此:http://www.cs.nott.ac.uk/~psztxa/g51csa/l12-hand.pdf好像是需要的
我查看了您的代码,它似乎是正确的。
但是,虽然代码是正确的,但注释是相反的。也就是说,你第一个lw
的评论是"read transmitter data word"。评论应该说的是"read receiver control word"。还有一些其他的。
这是学校的作业。 我被要求用汇编编写一个 I/O 映射程序。
我卡在第 1 级,我只是简单地从键盘读取并使用轮询方法写入监视器。
###########################################################
.text 0x00400000
main:
addi $s0, [=10=], 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, [=10=], 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, [=10=], poll_write # not ready, go back
sw $t1, 0xc($s0) # display monitor
j poll_read
问题是 0xffff 0000 的就绪位始终为 0。
所以,我无能为力。
有没有什么技巧可以让它起作用?改变一些设置?
您必须在 PCSpim 设置中 select "Mapped I/O"。据此:http://www.cs.nott.ac.uk/~psztxa/g51csa/l12-hand.pdf好像是需要的
我查看了您的代码,它似乎是正确的。
但是,虽然代码是正确的,但注释是相反的。也就是说,你第一个lw
的评论是"read transmitter data word"。评论应该说的是"read receiver control word"。还有一些其他的。