assembly 如何使用syscall 42在mips中的阵列内的随机位置处显示元素98

zbdgwd5y  于 2023-04-21  发布在  其他
关注(0)|答案(1)|浏览(117)

下面是mips中的数组
.byte
16,16,16,16,16,16,16,16,16,16,16
16,12,12,12,41,22,22,22,22,25,16
16,12,12,12,21,22,22,22,22,25,16
16,12,12,12,21,22,22,22,22,25,16
16,12,14,14,83,42,24,24,24,24,16
16,12,21,12,98,32,32,43,34,34,16
16,12,11,13,12,32,34,23,42,32,16
16、16、16、16、16、16、16、16、16、I6
我做了mips代码,当提供键盘输入时,元素83将在阵列内沿4个方向中的任何一个移动,因此当元素83到达元素98时,元素98需要再次随机显示在阵列内的新位置。我确实阅读了一个堆栈溢出的答案,用于生成随机数,但这些并不完全有帮助,因为这些生成随机数,我想生成元素我假设数组中的元素总数和t的外界试图使用syscall42编写代码t=,但我在完成代码时被卡住了

t0是数组地址

li $a0,98 la $a1,88 #outterbounds li $v0,42 syscall sb $a0,($t0)addi $t0,$t0,1 #增加数组地址

fjaof16o

fjaof16o1#

请注意,根据the documentation I found,随机数在$a0中返回,因此您不应将其用于98

li $a0, some-random-id # for random generator
li $a1, 88             # upper limit
li $v0, 42             # syscall number
syscall                # get random in $a0
addu $a0, $a0, $t0     # add base address to $a0
li $t1, 98             # the value
sb $t1, ($a0)          # store

相关问题