assembly - 使用 mips 交换奇偶位
问题描述
要求用户输入一个无符号数字并读取它的程序。然后将奇数位置的位与偶数位置的位交换并显示结果数字。例如,如果用户输入数字 9,其二进制表示为 1001,那么位 0 与位 1 交换,位 2 与位 3 交换,产生二进制数 0110。因此,程序应显示 6 .
这只是将十进制转换为二进制
################### DATA SECTION #############################
.data
str1: .asciiz "Enter an integer please: "
.align 2
################## CODE SECTION #############################
.text
.globl main
main:
# ask and store the first number
li $v0, 4
la $a0, str1
syscall
li $v0, 5
syscall
move $a0, $v0
jal print_bin
print_bin:
add $t0, $zero, $a0 # put our input ($a0) into $t0
add $t1, $zero, $zero # Zero out $t1
addi $t3, $zero, 1 # load 1 as a mask
sll $t3, $t3, 3 # move the mask to appropriate position
addi $t4, $zero, 4 # loop counter
j loop
loop:
and $t1, $t0, $t3 # and the input with the mask
beq $t1, $zero, print # Branch to print if its 0
add $t1, $zero, $zero # Zero out $t1
addi $t1, $zero, 1 # Put a 1 in $t1
j print
print:
li $v0, 1
move $a0, $t1
syscall
srl $t3, $t3, 1
addi $t4, $t4, -1
bne $t4, $zero, loop
move $a0, $v0
解决方案
推荐阅读
- flutter - GetX 从 _history 替换页面 (_RouteEntry)。或在导航到页面之前处置控制器
- reactjs - 我如何在 react.js 中坚持 redux
- java - SpringBoot中JPA的使用
- django - URL 附加上一个 URL
- javascript - 如何在反应中显示元标记?
- flutter - 如何在颤动中覆盖主题样式
- fhe - Palisade:明文和密文之间的 EvalMult 导致塔大小不匹配
- javascript - 我正在尝试对创建 facebook 帐户进行自动化测试
- graph - 多层图/多层网络和图卷积网络
- python - 在 PythonAnywhere 中导入 Pywhatkit 时出现“Xlib.error.DisplayConnectionError:”