2013-12-15 1 views
0

이 코드는 행렬식이 0 인 부분 행렬을 찾습니다. 그러나 공백과 숫자 사이의 공백은 인쇄 할 수 없습니다.숫자 사이의 화면에 공백을 인쇄 할 수 없습니다.

줄과 공백을 숫자 사이에 어떻게 인쇄 할 수 있습니까?

다음
.text 
.globl main 
main: 

la $t0,blank 
add $t1,$t0,$zero 
li $s5,-1 

li $v0,5 
syscall 
add $s0,$v0,$zero #$s0=n 
mul $t2,$s0,$s0 #t2=n^2 
sub $t3,$t2,$s0 #t3=n^2-n, barya check nakardan e n taye akhar 

voroodi: 
beq $t2,0,process 
subi $t2,$t2,1 
li $v0,5 
syscall 
sw $v0,($t1) #save dar hafeze 
addi $t1,$t1,4 
j voroodi 
process: 

addi $s5,$s5,1 
div $a0,$s5,$s0 
mfhi $s6 
subi $a0,$s0,1 
beq $s6,$a0,process 
beq $s5,$t3,fi 
sll $s3,$s5,2 #shomarande khooneye i om e matrix 
add $t4,$t0,$s3 

lw $t9,($t4) #load e a1 
lw $t8,4($t4) #load e a2 
add $s4,$s0,$zero 
sll $s4,$s0,2 
add $s4,$s4,$t4 #dasresi be khoone 3vvom e determinan 
lw $t7,($s4) #load e a3 
lw $t6,4($s4) #load e a4 
mul $s7,$t9,$t6 
mul $s6,$t8,$t7 
sub $s7,$s7,$s6 
beq $s7,0,print 
j process 


print: 
beq $t5,0,skip 
la $a0,lines 
li $v0,4 
syscall 


skip: 

add $a0,$t9,$zero 
li $v0,1 
syscall 

la $a0,space 
li $v0,4 
syscall 

add $a0,$t8,$zero 
li $v0,1 
syscall 

la $a0,next_line 
li $v0,4 
syscall 

add $a0,$t7,$zero 
li $v0,1 
syscall 

li $v0,4 
la $a0,space 
syscall 

add $a0,$t6,$zero 
li $v0,1 
syscall 

addi $t5,$t5,1 


j process 



fi: 

bne $t5,0,finish 
li $v0,4 
la $a0,no_result 
finish: 

.data 
blank: 
.asciiz "" 
space: 
.asciiz " " 
next_line: 
.asciiz "\n" 
lines: 
.asciiz "--" 
no_result: 
.ascii "No such a matrix available" 

답변

2

당신이 두 숫자 사이에 공간을 인쇄 할 수있는 방법을 보여줍니다 샘플 코드입니다 :

이 전체 코드입니다. 그것을 당신의 필요에 맞게 조정하십시오.

# print number 1 
li $a0, 1 # number to print 
li $v0, 1 # syscall number for printing integer 
syscall 

# print space, 32 is ASCII code for space 
li $a0, 32 
li $v0, 11 # syscall number for printing character 
syscall 

# print number 2 
li $a0, 2 
li $v0, 1 
syscall