为mips程序添加一些控制指令

时间:2015-02-13 14:07:33

标签: mips instructions qtspim

我写了一个非常简单的mips程序,计算默认短语(在这种情况下单词是“esame”)出现在默认短语“Esame:Programma di riconoscimento parole,realizzato per l'esame”中的次数orale di calcolatori elettronici“。

以下是代码:

.data                   # 0x10000000 (indirizzo di partenza)

frase:  .asciiz "Esame: Programma di riconoscimento parole, realizzato per l'esame orale di calcolatori elettronici"
param:  .asciiz "esame"
out1:   .asciiz "Programma per il riconoscimento di una parola in una frase \n\n"
out2:   .asciiz "La parola inserita come parametro appare "
out3:   .asciiz " volta/e \n"

.text                    # 0x00400000 (indirizzo di partenza)

la $s0, frase            
la $s1, param           
li $t0, 0x20             # backspace              
li $t8, 0x27             # apostrophe
add $s5, $zero, $zero    

li $v0, 4               
syscall 
la $a0, out1            
syscall                  

car1:   
lbu $t1, 0($s0)          
lbu $t2, 0($s1)         
ori $t1, $t1, 0x20       
ori $t2, $t2, 0x20       
beq $t1, $t2, ok         
bne $t1, $t2, dive       

ok: 
addi $s0, $s0, 1         
addi $s1, $s1, 1         
lbu $t1, 0($s0)          
lbu $t2, 0($s1)          
beq $t1, $zero, stamp    
ori $t1, $t1, 0x20       
beq $t2, $zero, ctrl     
ori $t2, $t2, 0x20       

ctrl:   
beq $t1, $t2, ok        
beq $t1, $t0, risul     
bgt $t1, 0x7a, risul     
blt $t1, 0x61, risul     
bne $t1, $t2, dive       
#beq $t1, $zero, stamp

dive:   
addi $s0, $s0, 1        
lbu $t1, 0($s0)          
beq $t1, $t0, nuova      
beq $t1, $zero, stamp    
beq $t1, $t8, nuova      
j dive                  

nuova:  
la $s1, param            
addi $s0, $s0, 1          
#beq $s0, $s1, stamp     
j car1                   

risul:  
addi $s5, $s5, 1        
j nuova                 

stamp:  
li $v0, 4                
la $a0, out2             
syscall                  

li $v0, 1                
move $a0, $s5           
syscall                  

li $v0, 4                
la $a0, out3            
syscall                  

j fine                   

fine:   
j fine  

在这种情况下,“esame”一词出现在两次内 句子。 现在我想添加一个这样的控件:如果默认单词是由撇号形成的,如同'esame或esame',则不应计算这个单词。在第二种情况下,“esame”一词在句子中只出现一次。 我应该写什么指令来实现这个控件?谢谢。

0 个答案:

没有答案