0
如何从控制台输入无符号整数16(uint16
,半字)并将其存储在MIPS中? 我应该加载它作为字符串还是int? 我知道我可以使用系统调用与不同的陷阱代码输入,但我怎么输入uint16
?MIPS汇编程序uint16作为输入
read_int 5
read_float 6
read_double 7
read_string 8
如何从控制台输入无符号整数16(uint16
,半字)并将其存储在MIPS中? 我应该加载它作为字符串还是int? 我知道我可以使用系统调用与不同的陷阱代码输入,但我怎么输入uint16
?MIPS汇编程序uint16作为输入
read_int 5
read_float 6
read_double 7
read_string 8
正如Luu Vinh Phuc建议的那样,您可以使用read int syscall来获取无符号的16位整数。系统调用实际上将以32位有符号整数读取,但对于整个16位无符号整数范围,低16位将是相同的。您可以手动检查高16位是否为零,以确认没有溢出。
li $v0, 5 # this is the code for reading an integer
syscall # execute the syscall, and read the int into $v0
srl $t0, $v0, 16 # get just the high 16 bits
bne $t0, $0, input_overflow # branch somewhere else if you have an overflow
这将使您在寄存器$ v0中留下一个无符号的16位整数。
如果这类似于x86上的DOS/BIOS系统调用,我不得不说,MIPS专为具有自己的控制台驱动程序并将大部分功能委派给操作系统的现代系统而设计。所以这个问题必须是操作系统特定的,或者你需要编写你自己的控制台驱动程序。 –
我正在使用SPIM MIPS模拟器。谢谢。 – user2275785
只读为int并使用低16位 –