这个MIPS汇编程序中lw和la有什么区别?

问题描述 投票:-1回答:1
#enter a string and show it 

.data 
prompt: .asciiz "enter a string >"
input_str: .space 81
input_sz: .word 80

.text

main:

# display the prompt
li $v0, 4
la $a0, prompt
syscall

# type a string, and save the input
li $v0, 8 # store the string in $v0
la $a0, input_str
lw $a1, input_sz 
syscall

# display the inputted string
li $v0, 4
la $a0, input_str
syscall

#terminate the program
li $v0, 10  
syscall

上面的程序显然工作正常。 将lw改为la没有任何区别。 即该计划仍然有效。

那么,在这个MIPS汇编程序中,lwla有什么区别?

assembly mips
1个回答
2
投票

将lw改为la不会有任何区别。 即该计划仍然有效。

......但这并不意味着说明具有相同的效果。

如果你在下面的C指令中用100替换10000fgets(fl,buffer,100),程序仍然很有可能工作!

那么,在这个MIPS汇编程序中,lwla有什么区别?

如果

lw加载存储在某个地址的值。所以lw $a1, input_sz会将值80加载到寄存器a1中,因为值80存储在由标签input_sz指定的地址处。

la将标签本身的地址加载到寄存器中。示例:如果标签input_sz位于地址100,则值100将通过指令a1加载到la $a1, input_sz寄存器中。

存储在此地址的内容无关紧要。 CPU不会读它。

© www.soinside.com 2019 - 2024. All rights reserved.