【问题标题】:MIPS 3000 assembly, load and print 32-bit unsigned integerMIPS 3000 汇编、加载和打印 32 位无符号整数
【发布时间】:2013-05-03 22:21:03
【问题描述】:

我的程序必须接受介于 0 和 2^32 或 4,294,967,295 之间的输入。

按位 32 字节应该能够做到,但我溢出到负数,因为我不确定如何使它成为一个无符号整数。我看到我有可以通过算术执行的指令,但是如果我只想将它加载到寄存器中并打印呢?它现在总是打印出负数。

【问题讨论】:

    标签: assembly printing loading mips unsigned-integer


    【解决方案1】:

    int 是有符号还是无符号与它在寄存器中的存在方式无关。无论哪种方式,它都只是一个位序列。 2^32 -1 = 0xFFFFFF。如果将其解释为无符号整数,则为 4,294,967,295 或 2^32-1。如果您使用二进制补码将其读取为有符号整数,则 0xFFFFFFFF 为 -1。我猜问题出在您的打印命令中。尝试将您的打印输出格式化为无符号。

    【讨论】:

    • 我理解你所说的第一部分,但似乎没有用于 MIPS 3000 的打印无符号整数的系统调用,所以不确定。
    • 我建议您出示您用于打印收银机的代码。我不认为这是关于 MIPS,而是关于你对操作系统的系统调用,然后你对结果做了什么。
    • @A.E.Drew:您可以自己将其转换为字符串(在 SO 上必须有几十个问题才能做到这一点),然后使用 print_string 系统调用 (4)。
    【解决方案2】:

    http://courses.missouristate.edu/KenVollmar/mars/Help/SyscallHelp.html

    尝试服务调用 36。它会打印一个无符号整数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      • 2013-09-21
      相关资源
      最近更新 更多