Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 字符串转换成MIPS_String_Loops_Assembly_Mips - Fatal编程技术网

String 字符串转换成MIPS

String 字符串转换成MIPS,string,loops,assembly,mips,String,Loops,Assembly,Mips,我必须在MIPS中制作一个字符串转换器,该转换器接收输入中的字符串并按照以下规则打印其翻译: 子字符串“uno”“due”“tre”“quattro”“cinque”“sei”“sette”“otto”“nove”翻译为“1”、“2”、“3”、“9”。 输入字符串中的空格(空字符)表示子字符串的结尾。 所有未在此处写入的子字符串都翻译为“?”。 这是我的代码: .data msg: .asciiz "Inserisci una stringa \n" output: .asciiz "La tr

我必须在MIPS中制作一个字符串转换器,该转换器接收输入中的字符串并按照以下规则打印其翻译:

子字符串“uno”“due”“tre”“quattro”“cinque”“sei”“sette”“otto”“nove”翻译为“1”、“2”、“3”、“9”。 输入字符串中的空格(空字符)表示子字符串的结尾。 所有未在此处写入的子字符串都翻译为“?”。 这是我的代码:

.data
msg: .asciiz "Inserisci una stringa \n"
output: .asciiz "La traduzione è: \n"
string: .space 100
uno: .asciiz "uno"
due: .asciiz "due"
tre: .asciiz "tre"
quattro: .asciiz "quattro"
cinque: .asciiz "cinque"
sei: .asciiz "sei"
sette: .asciiz "sette"
otto: .asciiz "otto"
nove: .asciiz "nove"
.text
.globl main
main:
li $s7,0
la $t4,uno
la $t5,due
la $t6,tre
la $t8,quattro
la $t9,cinque
la $s3,sei
la $s4,sette
la $s5,otto
la $s6,nove
la $a0,msg
li $v0,4
syscall
input: 
la $a0,string
li $a1,100
li $v0,8
syscall
li $s0, 0
scorriStringa: 
move $t7,$s0
lb $t1, string($s0)
addi $s0,$s0,1
bne $t1,32,scorriStringa #here there's always a loop
beq $t1,'o',uscita
controlloSpazi:
lb $t2,string($s0)
addi $s0,$s0,1
beq $t2,32,controlloSpazi
subi $s0,$s0,1
traduzione:
move $s1,$t7
scorriSS:
lb $t3,string($s1)
confrontoUno:
addi $s7,$s7,1
bne $t3,$t4,confrontoDue
confrontoDue:
addi $s7,$s7,1
bne $t3,$t5,confrontoTre
confrontoTre:
addi $s7,$s7,1
bne $t3,$t6,confrontoQuattro
confrontoQuattro:
addi $s7,$s7,1
bne $t3,$t8,confrontoCinque
confrontoCinque:
addi $s7,$s7,1
bne $t3,$t9,confrontoSei
confrontoSei:
addi $s7,$s7,1
bne $t3,$s3,confrontoSette
confrontoSette:
addi $s7,$s7,1
bne $t3,$s4,confrontoOtto
confrontoOtto:
addi $s7,$s7,1
bne $t3,$s5,confrontoNove
confrontoNove:
addi $s7,$s7,1
bne $t3,$s6,confrontoNull
confrontoNull:
li $s7,0
j stampaNull
dopoConf:
addi $s1,$s1,1
beq $s1,$s0 stampaN
bne $s1,$s0, scorriSS
j scorriStringa
stampaN:
beq $s7,0,stampaUno
beq $s7,1,stampaDue
beq $s7,2,stampaTre
beq $s7,3,stampaQuattro
beq $s7,4,stampaCinque
beq $s7,5,stampaSei
beq $s7,6,stampaSette
beq $s7,7,stampaOtto
beq $s7,8,stampaNove
dopoStampe:
li $s1,0
li $s2,0
j scorriStringa
uscita:
li $v0,10
syscall
stampaUno:
li $a0,1
li $v0,1
syscall
j dopoStampe
stampaDue:
li $a0,2
li $v0,1
syscall
j dopoStampe
stampaTre:
li $a0,3
li $v0,1
syscall
j dopoStampe
stampaQuattro:
li $a0,4
li $v0,1
syscall
j dopoStampe
stampaCinque:
li $a0,5
li $v0,1
syscall
j dopoStampe
stampaSei:
li $a0,6
li $v0,1
syscall
j dopoStampe
stampaSette:
li $a0,7
li $v0,1
syscall
j dopoStampe
stampaOtto:
li $a0,8
li $v0,1
syscall
j dopoStampe
stampaNove:
li $a0,9
li $v0,1
syscall
j dopoStampe
stampaNull:
li $a0,'?'
li $v0,4
syscall
j dopoStampe

我不知道为什么我的代码会这样循环!有什么建议吗?谢谢大家!

格式化你的问题@我编辑了它。也许下一次你也能经历一下麻烦:)谢谢你!你是在我编辑帖子的时候做的;)为什么所有这些标签和
BEQ
s?您可以将所有字符串的大小设为8字节,并计算要打印的字符串的地址为
first_string+(数字“this loop”指的是什么?结尾的跳转,j dopoStampe?您的程序应该做什么来代替循环?