在MIPS汇编程序中,lw和la有什么区别?

时间:2019-03-23 20:17:23

标签: assembly mips

#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有什么区别?

1 个答案:

答案 0 :(得分:2)

  

将lw更改为la没有区别。
  即该程序仍然有效。

...但是这并不意味着这些指令具有相同的效果。

如果在以下C指令100中将10000替换为fgets(fl,buffer,100),该程序仍然很有可能正常工作!

  

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

lw

lw加载存储在特定地址的值。因此lw $a1, input_sz会将值80加载到寄存器a1中,因为值80存储在标签input_sz指定的地址上。

la

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

此地址存储的内容无关紧要。 CPU无法读取它。

相关问题