我试图计算10个数字的范围,但是在我开始之前我已经陷入困境。我能够使用我的LW命令将集合加载到内存中,但是在NOTHING工作之后。当我执行转储后,NOTHING工作。有10个值,但就是这样。我该如何添加,减去或执行任何命令呢?期间没有任何东西存储。
# This program computes and prints the span of a set of ten integers Set.
.data
Set: .word 9, 17, -7, 3, -27, 25, 42, 26, 8, -60
Span: .alloc 1
.text
lw $1, Set($0)
lw $2, Set($1)
lw $3, Set($2)
lw $4, Set($3)
lw $5, Set($4)
lw $6, Set($5)
lw $7, Set($6)
lw $8, Set($7)
lw $9, Set($8)
lw $10, Set($9)
add $11,$2,$3
sw $11, Span($0)
jr $31
我的add命令在此示例中不执行任何操作,stor命令也不执行任何操作。我究竟做错了什么?我是否必须预先分配我想在内存中使用的每一个位置? (11美元)例如。我已经尝试了很多命令,除了我最后的lw命令之外没有做任何事情。
答案 0 :(得分:1)
以下是我为了尝试创建等效代码而编写的内容:
.data
Set: .word 9, 17, -7, 3, -27, 25, 42, 26, 8, -60
Span: .space 4 #allocate 4 bytes
.set noat #needed to use $1
.text
main:
la $12 Set #load the address of set
lw $1, 0($12) #load first number into $1
lw $2, 4($12) #load second number into $2
lw $3, 8($12) #etc
lw $4, 12($12)
lw $5, 16($12)
lw $6, 20($12)
lw $7, 24($12)
lw $8, 28($12)
lw $9, 32($12)
lw $10, 36($12)
add $11,$2,$3 #add second and third number, store in $11
la $13 Span #load the address of Span
sw $11, 0($13) #store the sum in Span
jr $31
你真的没有确切地说出了什么问题(程序崩溃了?拒绝组装?)所以我不确定给出什么建议,但你对寄存器的使用是可疑的 - 特别是$ 1即$汇编程序甚至不会让我使用而不转动警告;该寄存器保留供汇编程序使用。