You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MIPS汇编16位数字转二进制及最高位位置计算问题求解

MIPS汇编程序修复方案

现有代码问题

  • 缺失最高位位置的计算逻辑,遍历二进制位时没有记录第一个置1位的位置
  • 打印结果提示文本后没有输出位置值就直接退出程序
  • 流程逻辑错误:prtbin函数内直接调用退出系统调用,无法返回main执行后续逻辑;main末尾的jal main会导致程序无限循环要求用户输入

修复后完整代码

# 1 - Request a number
# 2 - Read the number
# 3 - Display Binary msg
# 4 - Display the number as binary
# 5 - Find the left-most bit (loop)
# 6 - Display the result msg
# 7 - Display the position


.data 
    prompt:    .asciiz "Enter a 16 bit number: "
    binaryMsg: .asciiz "\nBinary: "
    results:   .asciiz "\nThe left most bit is in position(zero based): "
.text
.globl main
    
main:
    # 输出输入提示
    li $v0, 4
    la $a0, prompt
    syscall
        
    # 读取用户输入的数字
    li $v0, 5
    syscall 
    move $a1, $v0
        
    # 输出二进制提示
    li $v0, 4
    la $a0, binaryMsg
    syscall
        
    # 调用打印二进制+计算最高位位置函数
    jal prtbin
    
    # 程序正常退出
    li $v0, 10
    syscall
        
prtbin:
    add $t0, $zero, $a1 # 把输入值存入$t0
    add $t1, $zero, $zero # 清零$t1
    addi $t3, $zero, 1 # 加载掩码初始值1
    sll $t3, $t3, 15 # 掩码左移15位,从最高位开始遍历
    addi $t4, $zero, 16 # 循环计数器,共16位
    addi $t5, $zero, -1 # 初始化最高位位置为-1,适配输入为0的情况
        
loop:
    and $t1, $t0, $t3 # 输入值和掩码做与运算
    beq $t1, $zero, print # 结果为0直接跳转到打印
    
    # 首次碰到置1位时记录位置
    bne $t5, -1, skip_record
    subi $t5, $t4, 1 # 零基位置=当前计数器值-1
skip_record:
    add $t1, $zero, $zero 
    addi $t1, $zero, 1 # 准备打印1
    j print
        
print:
    # 打印当前位的值
    li $v0, 1
    move $a0, $t1
    syscall
        
    srl $t3, $t3, 1 # 掩码右移1位,遍历下一位
    addi $t4, $t4, -1 # 计数器减1
    bne $t4, $zero, loop # 16位没遍历完就继续循环
    
    # 输出最高位位置提示
    li $v0, 4
    la $a0, results
    syscall
    
    # 输出最高位位置值
    li $v0, 1
    move $a0, $t5
    syscall
    
    jr $ra # 返回main函数

关键改动说明

  • 新增$t5寄存器存储最高位位置,初始值设为-1,当首次遍历到置1位时,通过$t4-1计算得到零基位置存入$t5,输入为0时保持-1
  • 移除prtbin内的退出系统调用,改为jr $ra返回调用点
  • 移除main末尾的jal main逻辑,避免程序无限循环要求输入
  • 新增最高位位置值的打印逻辑,输出结果提示后直接打印$t5存储的位置值

内容的提问来源于stack exchange,提问作者JACKERHAIDAN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 03:36:04