输入输出显示
用数组存储
代码如下:有详细的注释讲解
.text
.globl main
main:
la $t6,array # 将数组地址其实地址放到 t6位置上
move $t7 $zero # 用于计数 控制输入
addi $t8 $zero 10
input:
la $a0 input_msg # 将输入信息放到a0 这个寄存器上
li $v0 4 # 将命令符寄存器中放入立即数4 用于字符输出
syscall # 输入提示符的输入完成
li $v0 5 # 调用了输入命令 5 装载到$v0上
syscall # 系统调用 输入的数被放到了v0上
move $t0 $t7 # 将临时的计数寄存器中的内容放到临时寄存器t0上
mul $t0 $t0 4 # 得到了在该点的地址偏移值
addu $t0 $t0 $t6 # 将数组地址加上了偏移量t0,得到当前地址
sw $v0 0($t0) # 将$vo中的数放到t0对应的地址中
addi $t7 $t7 1 # 对计数的$t7进行加一操作
blt $t7 $t8 input # 如果不相等,就循环该进程
output:
move $t7 $zero # 用于计数 控制输入
addi $t8 $zero 10 # 总共有10个数
print_all:
move $t0,$t7 # 将 t7的数放到这个临时的t0上
mul $t0,$t0,4 # 得到偏移量
addu $t0,$t0,$t6 # 这里使用add也是一样的 只是add 会检验下溢出问题
lw $a0,0($t0) # 所得到的地址的的数 load到 a0上
li $v0,1
syscall
addi $t7,$t7,1
blt $t7,$t8,print_all
li $v0 10 # 退出
syscall
.data
array:
.space 1024 # 开辟数组空间
input_msg:
.ascii "Input number: " # 输入数字提示符
space_str:
.ascii " " # 输出空格信息