MIPS int逐字节读取十六进制
提示如下: 第一部分 编写一个MIPS汇编语言程序 1.提示用户输入整数(可以是正整数或负整数) 2.将该号码存储在标记为MyNumber的内存位置 3.将该数字逐字节读取到寄存器$t0中,然后以十六进制打印该字节,从低位地址开始,每个字节前面都有一个字符串,以指示字节位置。 例如: B0 0x 0A B1 0x 12 B2 0x 65 B30xBE 我不知道如何将int转换成4个字节,然后再转换成十六进制 这就是我到目前为止所做的:MIPS int逐字节读取十六进制,mips,Mips,提示如下: 第一部分 编写一个MIPS汇编语言程序 1.提示用户输入整数(可以是正整数或负整数) 2.将该号码存储在标记为MyNumber的内存位置 3.将该数字逐字节读取到寄存器$t0中,然后以十六进制打印该字节,从低位地址开始,每个字节前面都有一个字符串,以指示字节位置。 例如: B0 0x 0A B1 0x 12 B2 0x 65 B30xBE 我不知道如何将int转换成4个字节,然后再转换成十六进制 这就是我到目前为止所做的: .data prompt: .asciiz "Ent
.data
prompt: .asciiz "Enter an integer (positive or negative): "
MyNumber: .word 0
output: .word 0
space: .space 20
.text
main:
addi $v0, $zero, 4 #code 4 is to print string
la $a0, prompt #loads string into register
syscall
addi $v0, $zero, 5 #code 5 is to read an integer
syscall
sw $v0, MyNumber #stores value from $v0 to input
la $t1, MyNumber
我认为应该使用字节偏移量从寄存器加载连续字节。我试图用下面的MIPS代码解决这个问题。这个程序可能并不完美,但我认为它在火星上进行了正确的I/o
.data
prompt: .asciiz "Enter an integer (positive or negative): "
s1: .asciiz "B1:
s2: .asciiz " B2:
s3: .asciiz " B3:
s4: .asciiz " B4:
MyNumber: .word 0
output: .word 0
space: .space 20
.text
main:
addi $v0, $zero, 4 #code 4 is to print string
la $a0, prompt #loads string into register
syscall
addi $v0, $zero, 5 #code 5 is to read an integer
syscall
sw $v0, MyNumber #stores value from $v0 to input
addi $v0, $zero, 4 #code 4 is to print string
la $a0, s1 #loads string into register
syscall
la $t1, MyNumber
lb $a0, 0($t1)
lb $t0, MyNumber
addi $v0, $zero, 34
syscall
addi $v0, $zero, 4 #code 4 is to print string
la $a0, s2 #loads string into register
syscall
lb $a0, 1($t1)
addi $v0, $zero, 34 #print in hexadecimal
syscall
addi $v0, $zero, 4 #code 4 is to print string
la $a0, s3 #loads string into register
syscall
lb $a0, 2($t1)
addi $v0, $zero, 34
syscall
addi $v0, $zero, 4 #code 4 is to print string
la $a0, s4 #loads string into register
syscall
lb $a0, 3($t1)
addi $v0, $zero, 34
syscall
代码中没有转换为十六进制的内容,将整数传递到一个$t寄存器可能是一个好主意 此外,当它被转换时,也许使用lw而不是la是更好的选择。如果我是你,我会将数字转换成十六进制,然后打印输出,即除以16等 因此,基本上,您将使用相同的寄存器,例如$t3来进行数学运算。然后可以使用sw保存十六进制。然后你可以把它打印到屏幕上 我建议创建一个主要由j或jal调用的函数,用于十六进制计算。您是否尝试过使用偏移量和系统调用34(十六进制写入)的
lb
(加载字节)?