Assembly 如何获取Qtspim中第二个字符串的地址?
在上面的代码中,我能够得到“字符串”的内存地址,即“输入您的号码:”。是否有任何方法可以在不使用伪指令(如la)的情况下获取“string2”的内存地址。我正在使用Qtspim来运行代码。谢谢你们 是的,对低16位使用Assembly 如何获取Qtspim中第二个字符串的地址?,assembly,mips,qtspim,Assembly,Mips,Qtspim,在上面的代码中,我能够得到“字符串”的内存地址,即“输入您的号码:”。是否有任何方法可以在不使用伪指令(如la)的情况下获取“string2”的内存地址。我正在使用Qtspim来运行代码。谢谢你们 是的,对低16位使用ori,即ori$a0、$a0、19(如果我计算正确),或者使用汇编程序用于访问低16位的任何辅助函数,例如%lo(string2)是否有更好的方法在不计算或查看数据段的情况下计算出地址。你不想计算第一个字符串是否长。正如我说的,如果你的汇编程序支持一个特殊的函数,那么是的。否则,
ori
,即ori$a0、$a0、19
(如果我计算正确),或者使用汇编程序用于访问低16位的任何辅助函数,例如%lo(string2)
是否有更好的方法在不计算或查看数据段的情况下计算出地址。你不想计算第一个字符串是否长。正如我说的,如果你的汇编程序支持一个特殊的函数,那么是的。否则,您也可以尝试减法,即string2 string
或string2-.data
。
.text
.globl main
main:
ori $v0,4 #code 4 == print string
lui $a0,0x1001 #$a0 == address of the string
syscall
ori $v0, 10 #code 10 = exit the program
syscall
.data
string: .asciiz "Enter your number: "
string2: .asciiz "wrong number! "