如何修改以下 mips 代码以移动数组中的元素 82

问题描述 投票:0回答:0

mips 中的数组中的以下内容 网格:字节

  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,32,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,16,16  

数组显示在 mips mmio 模拟器中。该代码的主要目的是当按下键盘输入时,元素 83 可以在数组中移动。为此,我制作了一个轮询功能来检查键盘输入,并制作了 4 个功能以在所有四个方向上移动。为了移动元素,我使用了数组中元素 83 的内存位置,元素 83 应该只在数组内移动,当它到达由元素 16 组成的边界时,程序将跳转到结束函数。当我运行我的代码时,我需要首先将元素在数组中向上移动,因为将它朝另一个方向移动会导致开始时出错,之后我可以朝其他方向移动。我的代码面临 2 个问题 1) 我只能将元素 83 向上移动一次,之后它不会向上移动 2) 当它到达边缘时程序不会跳转到结束函数并继续运行这里是我使用的代码我的程序 此代码对另一个方向重复,更改从地址中减去的数字 我如何修复代码来解决这些问题

la $t0,0x10010030 mo_up:

addi $t1,$t0,-11
li $s0,83
sb $s0,($t1)
li $s1,32         # replaces old postion 
sb $s1,($t0)
li $s2,16      
beq $t6,$s2,end

结束: 系统调用

debugging assembly mips mars-simulator mips64
© www.soinside.com 2019 - 2024. All rights reserved.