diff --git a/KTMT/Lab2_2/1.asm b/KTMT/Lab2_2/1.asm new file mode 100644 index 0000000..bfadb96 --- /dev/null +++ b/KTMT/Lab2_2/1.asm @@ -0,0 +1,21 @@ + .data +a: .word 0 +i: .asciiz "Input a: " +t: .asciiz "Computer Architecture is so easy!" +f: .asciiz "you are right!" + .text + .globl main +main: + la $a0, i + li $v0, 4 + syscall + li $v0, 5 + syscall + bgez $v0, true + la $a0, f + j exit +true: la $a0, t +exit: li $v0, 4 + syscall + li $v0, 10 + syscall \ No newline at end of file diff --git a/KTMT/Lab2_2/2.asm b/KTMT/Lab2_2/2.asm new file mode 100644 index 0000000..4c7e440 --- /dev/null +++ b/KTMT/Lab2_2/2.asm @@ -0,0 +1,46 @@ + .data +a: .word 0 +b: .word 0 +c: .word 0 +nhap_a: .asciiz "Nhap a: " +nhap_b: .asciiz "Nhap b: " +nhap_c: .asciiz "Nhap c: " +xuat_a: .asciiz "Ket qua a = " + .text + .globl main +main: + la $a0, nhap_a + li $v0, 4 + syscall + li $v0, 5 + syscall + sw $v0, a + la $a0, nhap_b + li $v0, 4 + syscall + li $v0, 5 + syscall + sw $v0, b + la $a0, nhap_c + li $v0, 4 + syscall + li $v0, 5 + syscall + sw $v0, c + lw $s0, a + lw $s1, b + lw $s2, c + blt $s0, -5, false + bgt $s0, 5, false + add $s0, $s1, $s2 + j exit +false: sub $s0, $s1, $s2 +exit: sw $s0, a + la $a0, xuat_a + li $v0, 4 + syscall + lw $a0, a + li $v0, 1 + syscall + li $v0, 10 + syscall \ No newline at end of file diff --git a/KTMT/Lab2_2/3.asm b/KTMT/Lab2_2/3.asm new file mode 100644 index 0000000..f0f88d1 --- /dev/null +++ b/KTMT/Lab2_2/3.asm @@ -0,0 +1,70 @@ + .data +in: .word 0 +a: .word 0 +b: .word 0 +c: .word 0 +in_in: .asciiz "Nhap input: " +in_b: .asciiz "Nhap b: " +in_c: .asciiz "Nhap c: " +err: .asciiz "Gia tri nhap vao khong hop le!" +out_a: .asciiz "Gia tri cua a la: " + .text + .globl main +main: + la $a0, in_in + li $v0, 4 + syscall + li $v0, 5 + syscall + sw $v0, in + la $a0, in_b + li $v0, 4 + syscall + li $v0, 5 + syscall + sw $v0, b + la $a0, in_c + li $v0, 4 + syscall + li $v0, 5 + syscall + sw $v0, c + lw $s0, in + lw $s1, b + lw $s2, c + beq $s0, 0, case_1 + beq $s0, 1, case_2 + beq $s0, 2, case_3 + beq $s0, 3, case_4 +error: la $a0, err + li $v0, 4 + syscall + j exit +case_1: + add $s3, $s1, $s2 + j out +case_2: + sub $s3, $s1, $s2 + j out +case_3: + add $t0, $s1, $zero + li $s3, 0 +loop: beqz $t0, out + add $s3, $s3, $s2 + addi $t0, $t0, -1 + j loop +case_4: + beqz $s2, error + addi $s3, $zero, 0 + addi $t0, $s2, 0 +loop2: bgt $t0, $s1, out + add $t0, $t0, $s2 + addi $s3, $s3, 1 + j loop2 +out: + sw $s3, a + lw $a0, a + li $v0, 1 + syscall +exit: li $v0, 10 + syscall diff --git a/KTMT/Lab2_2/4.asm b/KTMT/Lab2_2/4.asm new file mode 100644 index 0000000..b784494 --- /dev/null +++ b/KTMT/Lab2_2/4.asm @@ -0,0 +1,42 @@ + .data +nhap: .asciiz "Nhap n: " +loi: .asciiz "Gia tri nhap vao khong hop le!" +xuat: .asciiz "F(n) = " + .text + .globl main +main: + la $a0, nhap + li $v0, 4 + syscall + li $v0, 5 + syscall + move $s0, $v0 + bltz $s0, error + la $a0, xuat + li $v0, 4 + syscall + ble $s0, 1, out_01 + addi $t0, $zero, 2 + li $t1, 0 + li $t2, 1 + add $t3, $t1, $t2 +loop: bge $t0, $s0, out + move $t1, $t2 + move $t2, $t3 + add $t3, $t1, $t2 + addi $t0, $t0, 1 + j loop +error: + la $a0, loi + li $v0, 4 + syscall + j exit +out_01: move $a0, $s0 + li $v0, 1 + syscall + j exit +out: move $a0, $t3 + li $v0, 1 + syscall +exit: li $v0, 10 + syscall \ No newline at end of file diff --git a/KTMT/Lab2_2/5.asm b/KTMT/Lab2_2/5.asm new file mode 100644 index 0000000..fdde8e2 --- /dev/null +++ b/KTMT/Lab2_2/5.asm @@ -0,0 +1,30 @@ + .data +found: .asciiz "Tim thay ky tu tai vi tri: " +chrArr: .asciiz "Computer Architecture CSE-HCMUT" +chr: .word 'e' +pos: .word 0 + .text + .globl main +main: + la $a0, found + li $v0, 4 + syscall + la $a0, chrArr + addi $t1, $zero, 0 + lw $t2, chr +while: + add $a1, $a0, $t1 + lb $t0, 0($a1) + beq $t0, $t2, done + beq $t0, $zero, null + addi $t1, $t1, 1 + j while +null: + li $t1, -1 +done: + move $a0, $t1 + li $v0, 1 + syscall +exit: + li $v0, 10 + syscall diff --git a/KTMT/Lab2_2/putsString.asm b/KTMT/Lab2_2/putsString.asm new file mode 100644 index 0000000..310cc20 --- /dev/null +++ b/KTMT/Lab2_2/putsString.asm @@ -0,0 +1,17 @@ + .data +string: .asciiz "Day la chuoi can xuat!" + .text + .globl main +main: + li $v0, 11 + la $t1, string +while: + lb $a0, 0($t1) + beq $a0, $zero, exit + syscall + addi $t1, $t1, 1 + j while +exit: + li $v0, 10 + syscall +