assembly - 在 MIPS 中访问 .space 元素(降序)
问题描述
我想从.space数组中逐字节获取,从最高索引开始。我有两个.space数组,一个供用户输入文本,第二个用于存储输入字符串中的小写字母。当我尝试在部分更改中存储字节时出现问题 - sb $t4,($t3)似乎没有存储正确的字符,或者更糟糕的是$t4似乎不再指向 tmp 的最后一个字符。有没有更好的方法从最后访问字符串中的字符?
我的代码旨在反转输入字符串中小写字母的顺序,
这里是:
arr: .space 100
tmp: .space 100
che: .asciiz "check\n"
text1: .asciiz "input string: \n"
text2: .asciiz "Output:\n"
.text
.globl main
main:
li $v0,4
la $a0, text1
syscall
la $a0, arr
li $a1, 100
li $v0, 8
syscall
li $t0, 'a'
li $t1, 'z'
la $t3,arr
la $t4,tmp
read_begin:
lb $t5,($t3)
lb $t6,($t4)
beq $t5,$zero,ch
blt $t5,$t0,increment
bgt $t5,$t1,increment
sb $t5,($t4)
addi $t4,$t4,1
b increment
increment:
addi $t3,$t3,1
b read_begin
ch:
la $t3,arr
b change
change:
lb $t5,($t3)
beq $t5,$zero,end
blt $t5,$t0,increment2
bgt $t5,$t1,increment2
sb $t4,($t3)
addi $t4,$t4,-1
increment2:
addi $t3,$t3,1
b change
end:
li $v0,4
la $a0, text2
syscall
la $a0, arr
li $v0, 4
syscall
li $v0, 10
syscall
解决方案
推荐阅读
- ethereum - 无法构建 Solidity 合约:exec:“solc”:$PATH 中找不到可执行文件
- c# - 使用什么数据服务 + 简单示例(WPF C# SQL)
- php - 替换字符串中单个字符的空格
- python - 如何改进它 - 数字生成器 + 从范围中猜测数字
- c++ - C++继承中名称隐藏的优先级
- javascript - 如何使用 Angular 7 项目使用 lightgallery?
- c# - 性能计数器与 .Net Core 的兼容性
- tensorflow - Tensorflow-keras:CNN 预测非常接近 1 或 0
- php - 如何在没有自定义查询的情况下从多表获取数据?
- android - 线性布局不等宽