我试图将加密输出移到不同的温度。注册,然后我将这些字节加载到另一个新的临时。寄存器。将地址重置为0x10010000,然后让第三个临时寄存器从'a'开始然后如果它不等于那个字母并加上地址以查看每个字节中是否有'a',如果没有添加哪个将停止在null或换行符,然后将'a'加到'b'等等。然后我有第四个临时值。注册为'z'做同样的事情,但不是添加'z'而是减去它。我试过这种方式,但似乎不正确。以下是我正在做的事情的样本。
la $t6,str1 #str1 is the string I just encrypted and now lb moving it to a new register $t6.
lb $t2,($t6) # I am loading the address bytes to this new temp. register $t2
li $t8, 'a' # making $t8 to be 'a'
i: ble $t6, 0x10010000,i1 #I am resetting the address back to zero
subi $t6,$t6,1
j i
i1: beq $t8,$t2, kvt # I am testing to see if $t8 equals $t2
addi $t6,$t6,1 # if not add the address by 1
beq $t2,0x00,i2 # which ever one comes first, branch it to i2
beq $t2,'/n',i2
i2: addi $t8,$t8,1 # adds up t8
j i
kvt: sb $t8,($t6) #now I am saving the new value of t6
li $v0,4
lb $a0,($t8) #load the byte value of t8, and have it print.
syscall
我是否必须将str1
加载到另一个字符串中,这样的话? range: .space 2
,如果是这样,如何将str1
的字符分配到该范围并让它读取值?
答案 0 :(得分:0)
这是一个简单循环的例子:
.data
array: .word 1,2,3,4
size: .word 16
.text
MAIN:
la $t0 array
li $t1 0
lw $t2 array #max
lw $t3 array #min
lw $t5 size
LOOP:
add $t0 $t0 $t1
lw $t4 ($t0)
bge $t4 $t2 MAX
j MINTEST
Max:
move $t2 $t4
MINTEST:
blt $t4 $t2 MIN
j ENDLOOP
MIN:
move $t3 $t4
ENDLOOP:
addi $t1 $t1 4
beq $t1 $t5 END
j LOOP
END: