mips - MIPS 写数字列表的练习
问题描述
正如下面要求的问题,
用 MIPS32 汇编语言编写一个程序,读取一个正整数 N 并打印出以下内容: 1 12 123 1234 12345 ... 1 2 3 4 5 6 ... N
这是我的代码如下所示:
.data
word: .asciiz "Please enter a random row: \n"
.text
.globl main
main:
la $a0, word # load word
li $v0, 4
syscall
li $v0, 1 # service 1 is print integer
move $a0, $t0 # move register to be printed into argument
register $a0
syscall
lw $s0, row # $s0 = row
addi $s0, $s0, -1 # for accommodating loop condition
li $s1, 1 # set i = 1
li $s2, 1 # set j = 1
loop1:
blt $s0, $s1, Exit # for(i = 0; i < row; i++)
addi $s1, $s1, 1 # i++
li $s2, 1 # resets j to 1 after every iteration of for
loop
move $a0, $t0 # move register to be printed into argument
register $a0
j loop2 # executing the nested for loop
loop2:
blt $s1, $s2, loop1 # for(i = 0; i < j; i++)
li $v0, 1 # read_double => scanf("%d")
move $a0, $t0 # move register to be printed into argument $a0
syscall
j loop2
li $v0, 10 # loading exit code
syscall # execute exit
由于我倾向于通过它,然后我仍然无法达到预期的结果。
解决方案
以下是您将如何编写代码来执行此操作:
向用户询问 N 值,然后保存。
创建一个将持续到 N 次迭代的循环(请参阅条件分支)
对于 N 次迭代,将值 1, 1+=1, ... N 保存在寄存器中。
请记住,每个字是 4 个字节。确保您正在更改访问寄存器的位置以正确保存您的值,否则它们将相互覆盖。
使用另一个循环打印所有值(再次,条件分支)。
如果您需要代码方面的帮助,请先尝试编写一些代码。:-)
推荐阅读
- sql - 如何删除此 NULLS 并将用户的日期放在同一行
- java - 在 Java 中检查值类型
- html - 使用 microsoft graph 在 onedrive 上显示/编辑文件
- rest - 在 SAP 数据服务中使用 REST Web 服务
- amazon-web-services - 使用 pyspark 从 AWS s3 Bucket 读取 csv 时出错
- html - 如何在 Mapping API 上创建网格地图?
- julia - 计算并绘制 Distributions.jl 中分布的中心可信和最高后验密度区间
- python - 使用信号时出错,Django 看不到内置用户模型 app_label
- node.js - 如何在 aws lambda 中使用 ffmeg 层在视频上添加字幕?
- c++ - 有没有办法同时使用 std::less<> 的转发和自定义比较与 std::set/std::map?