Assembly MIPS汇编程序uint16作为输入

Assembly MIPS汇编程序uint16作为输入,assembly,mips,Assembly,Mips,如何从控制台输入无符号整数16(uint16,半字)并将其存储在MIPS中? 我应该将其加载为string还是int? 我知道我可以使用带有不同陷阱代码的系统调用进行输入,但是如何输入uint16 read_int 5 read_float 6 read_double 7 read_string 8 正如Luu Vinh Phuc所建议的,您可以使用read int系统调用来获取无符号16位整数。系统调用实际上将读取32位有符号整数,但对于

如何从控制台输入无符号整数16(
uint16
,半字)并将其存储在MIPS中? 我应该将其加载为string还是int? 我知道我可以使用带有不同陷阱代码的系统调用进行输入,但是如何输入
uint16

read_int        5   
read_float      6   
read_double     7 
read_string     8

正如Luu Vinh Phuc所建议的,您可以使用read int系统调用来获取无符号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模拟器。谢谢。只需读取int并使用低16位