arrays - 如何在 Mips 中打印出数组的最大值和最小值

标签 arrays assembly

我是 mips 的新手,我想打印出一个 8 元素数组的最大值和最小值。我看到了一个类似于我的问题,但它是通过调用函数 readArray 完成的,我想在没有它的情况下完成。这是我到目前为止所拥有的。我只想知道我现在拥有的是否正确以及如何结束循环。就像我写什么来打印正确的值

.data
  X: .word 1, 2, 3, 4, 5, 6, 7, 8

globl main  
.text

main:
  la $t0, X
  lw $s0, 0($t0) #Sets Max to first value in array
  move $s1, $s0  #Sets Min to first value in array
  addi $t1, $0, 0 #Sets the counter to 0
  li $t1, 0     #Index for the array

loop: 
  bge $t0, 8 EndLoop
  bgt X($t1), $s0, SetMax
  blt X($t1), $s1, SetMin
  addi $t1, $t1, 4 #Increases the index for the array
  addi $t0, $t0, 1 #Increments the counter
SetMax:
  move $s0, X($t1)
  j loop
SetMin: 
  move $s0, X($t1)
  j loop
EndLoop:
  li $v0, 1
  addi $s0, $s0, 0
  addi $si, $s1, 0
  syscall

我是不是做错了什么。这是原始问题: 编写 MIPS 代码来搜索数组 X[8] 中的单词以找到最小值和最大值。最大值存储在寄存器 $s0 中,最小值存储在 $s1 中。打印到屏幕最小值和最大值。 感谢您的帮助!

最佳答案

要打印一个整数,您需要 $v0 为 1 并且 $a0 等于您要打印的整数。因此指向您拥有的寄存器保存值。

li $v0 1 la $a0 ($s0) 系统调用

$s1 的过程相同。

结束程序:

li $v0 10 系统调用

你可能想让它更显眼,所以在它们之间打印一个空格或制表符。 Link一些系统调用

关于arrays - 如何在 Mips 中打印出数组的最大值和最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36828877/

相关文章:

php - 在数组中的每个数组之间放置字符串 - PHP

javascript - javascript 中 table.where 对象的运算符

c - VirtualBox 无法加载 .img 或 .flp 文件

linux - 在 Linux 上的 64 位进程中运行 32 位代码 - 内存访问

assembly - 为什么我从 mov ax, bx+si+1 得到零?

C++ - 1D 中的动态数组有效,2D 中的动态数组无效

python - 编辑 : how to declare array of struct in Python

mysql - 将数组存储到php中的变量中

c - 如何在 c x86 AT&T 内联汇编中访问和更改 char 数组

iphone - iPhone 的汇编 (.s) 代码中的条件编译 - 如何进行?