You are on page 1of 1

F:\My ASM CODE\Truyen nhieu bien dung stack.

asm Thursday, March 31, 2011 9:41 AM

1 # Chuong trinh SUM rat nhieu bien nho vao viec su dung stack
2 # Author: huahongquan2007
3 .data
4 prompt:
5 .ascii "Hay nhap cac so nguyen can tinh tong \n"
6 .asciiz "Nhap so 0 de ket thuc qua trinh nhap "
7
8 output:
9 .asciiz "Tong can tinh la :\n"
10 .text
11 main:
12 la $a0,prompt # load address toi prompt
13 addi $v0,$0,4
14 syscall
15
16 addi $a0,$0,0 # cai nay dung giong nhu la 1 bien COUNT
17 nhap:
18 addi $v0,$0,5 # load opcode 5
19 syscall
20 beqz $v0,thoat_nhap # neu nhap vao 0 thi se thoat nhap
21 addi $sp,$sp,-4 # tao ROOM 4 byte trong stack
22 sw $v0,0($sp) # Luu bien vua nhap vao stack
23 addi $a0,$a0,1 # tang bien COUNT len 1
24 j nhap
25 #-------------------------------------------------------------------------
26 # Tung bien da duoc luu vao stack. Do stack la last-in-first-out nen ta cong tu sau
ra truoc
27 # Moi lan tinh tong ta tang sp len 4
28 #-------------------------------------------------------------------------
29 thoat_nhap:
30 addi $s1,$0,0 # Dung $s1 de tinh tong
31 Loop:
32 beqz $a0,Xuat_KQ # Neu count == 0 thi ket thuc loop
33 lb $t1,0($sp) # Load gia tri vao $t1
34 add $s1,$s1,$t1 # $s1 = $s1 + $t1
35 addi $sp,$sp,4 # phuc hoi lai stack
36 addi $a0,$a0,-1 # giam count di 1
37 j Loop
38
39 Xuat_KQ:
40 la $a0,output # PRINT CHUOI OUTPUT
41 addi $v0,$0,4
42 syscall
43
44 addi $a0,$s1,0 # PRINT INTEGER
45 addi $v0,$0,1
46 syscall
47
48 addi $v0,$0,10
49 syscall
50

-1-

You might also like