diff --git a/Lab2_1/1a.asm b/Lab2_1/1a.asm new file mode 100644 index 0000000..9d775de --- /dev/null +++ b/Lab2_1/1a.asm @@ -0,0 +1,51 @@ +#Data segment + .data +So1: .word 0 +So2: .word 0 +So3: .word 0 +Ketqua: .word 0 +#Cac cau nhac nhap du lieu +Nhap1: .asciiz "Nhap so thu 1: " +Nhap2: .asciiz "Nhap so thu 2: " +Nhap3: .asciiz "Nhap so thu 3: " +Xuat: .asciiz "Tong cua 3 so la: " +#Code segment + .text + .globl main +main: +#Nhap 3 so + la $a0, Nhap1 #Nhap so thu 1 + li $v0, 4 + syscall + li $v0, 5 + syscall + sw $v0, So1 + la $a0, Nhap2 #Nhap so thu 2 + li $v0, 4 + syscall + li $v0, 5 + syscall + sw $v0, So2 + la $a0, Nhap3 #Nhap so thu 3 + li $v0, 4 + syscall + li $v0, 5 + syscall + sw $v0, So3 +#Xu ly + lw $t0, So1 + lw $t1, So2 + add $t0, $t0, $t1 + lw $t1, So3 + add $t0, $t0, $t1 + sw $a0, Ketqua +#Xuat ket qua + la $a0, Xuat + li $v0, 4 + syscall + la $a0, 0($t0) + li $v0, 1 + syscall +#exit + li $v0, 10 + syscall diff --git a/Lab2_1/1b.asm b/Lab2_1/1b.asm new file mode 100644 index 0000000..14a27bc --- /dev/null +++ b/Lab2_1/1b.asm @@ -0,0 +1,10 @@ + .data +Chuoi: .asciiz "Kien truc may tinh 2017" + .text + .globl main +main: + la $a0, Chuoi + li $v0, 4 + syscall + li $v0, 10 + syscall diff --git a/Lab2_1/1c.asm b/Lab2_1/1c.asm new file mode 100644 index 0000000..95f7392 --- /dev/null +++ b/Lab2_1/1c.asm @@ -0,0 +1,22 @@ + .data +Chuoi: .space 11 +Nhap: .asciiz "Nhap chuoi can xuat:\n" +Xuat: .asciiz "\nXuat chuoi:\n" + .text + .globl main +main: + la $a0, Nhap + li $v0, 4 + syscall + la $a0, Chuoi + li $a1, 11 + li $v0, 8 + syscall + la $a0, Xuat + li $v0, 4 + syscall + la $a0, Chuoi + li $v0, 4 + syscall + li $v0, 10 + syscall \ No newline at end of file diff --git a/Lab2_1/2a.asm b/Lab2_1/2a.asm new file mode 100644 index 0000000..4d6a136 --- /dev/null +++ b/Lab2_1/2a.asm @@ -0,0 +1,21 @@ + .data +Const: .word 66000 + .text + .globl main +main: + lw $t0, Const + addi $t0, $t0, 30 + addi $t0, $t0, 30 + addi $t0, $t0, 30 + addi $t0, $t0, 30 + addi $t0, $t0, 30 + addi $t0, $t0, 30 + addi $t0, $t0, 30 + addi $t0, $t0, 30 + addi $t0, $t0, 30 + addi $t0, $t0, 30 + addi $t0, $t0, -6000 + addi $t0, $t0, 25 + ori $s0, $t0, 0 + li $v0, 10 + syscall diff --git a/Lab2_1/2b.asm b/Lab2_1/2b.asm new file mode 100644 index 0000000..730fc27 --- /dev/null +++ b/Lab2_1/2b.asm @@ -0,0 +1,16 @@ + .data +Const: .word 66000 + .text + .globl main +main: + lw $t0, Const + li $t1, 30 + sll $t2, $t1, 3 + sll $t1, $t1, 1 + add $t1, $t1, $t2 + add $t0, $t0, $t1 + addi $t0, $t0, -6000 + addi $t0, $t0, 25 + ori $s0, $t0, 0 + li $v0, 10 + syscall diff --git a/Lab2_1/3.asm b/Lab2_1/3.asm new file mode 100644 index 0000000..fa57a44 --- /dev/null +++ b/Lab2_1/3.asm @@ -0,0 +1,88 @@ + .data +a: .word 0 +b: .word 0 +c: .word 0 +d: .word 0 +x: .word 0 +kq: .word 0 +nhap_a: .asciiz "Nhap a: " +nhap_b: .asciiz "Nhap b: " +nhap_c: .asciiz "Nhap c: " +nhap_d: .asciiz "Nhap d: " +nhap_x: .asciiz "Nhap x: " +xuat: .asciiz "Ket qua cua bieu thuc la: " + .text + .globl main +main: + #Nhap a + la $a0, nhap_a + li $v0, 4 + syscall + li $v0, 5 + syscall + sw $v0, a + #Nhap b + la $a0, nhap_b + li $v0, 4 + syscall + li $v0, 5 + syscall + sw $v0, b + #Nhap c + la $a0, nhap_c + li $v0, 4 + syscall + li $v0, 5 + syscall + sw $v0, c + #Nhap d + la $a0, nhap_d + li $v0, 4 + syscall + li $v0, 5 + syscall + sw $v0, d + #Nhap x + la $a0, nhap_x + li $v0, 4 + syscall + li $v0, 5 + syscall + sw $v0, x + #Xu ly + lw $a0, x + lw $a1, a + jal times + ori $s0, $v0, 0 + lw $a1, b + sub $s0, $s0, $a1 + ori $a1, $s0, 0 + jal times + ori $s0, $v0, 0 + lw $a1, c + sub $s0, $s0, $a1 + ori $a1, $s0, 0 + jal times + ori $s0, $v0, 0 + lw $a1, d + add $s0, $s0, $a1 + sw $s0, kq + j exit +times: + ori $t0, $a0, 0 + li $t1, 0 +loop: beq $t0, 0, return + add $t1, $t1, $a1 + addi $t0, $t0, -1 + j loop +return: ori $v0, $t1, 0 + jr $ra +exit: + la $a0, xuat + li $v0, 4 + syscall + lw $a0, kq + li $v0, 1 + syscall + li $v0, 10 + syscall \ No newline at end of file diff --git a/Lab2_1/4a.asm b/Lab2_1/4a.asm new file mode 100644 index 0000000..3c11e62 --- /dev/null +++ b/Lab2_1/4a.asm @@ -0,0 +1,18 @@ + .data +array: .word 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 +kq: .asciiz "Ket qua la: " + .text + .globl main +main: + la $a0, array + lw $t0, 12($a0) + lw $t1, 24($a0) + addu $t0, $t0, $t1 + la $a0, kq + li $v0, 4 + syscall + move $a0, $t0 + li $v0, 1 + syscall + li $v0, 10 + syscall diff --git a/Lab2_1/4b.asm b/Lab2_1/4b.asm new file mode 100644 index 0000000..d029b2b --- /dev/null +++ b/Lab2_1/4b.asm @@ -0,0 +1,43 @@ + .data +string: .space 32 +in: .asciiz "Nhap chuoi can bien doi: " +wrong: .asciiz "Chuoi da nhap khong hop le!" +out: .asciiz "Chuoi sau khi bien doi la: " + .text + .globl main +main: + la $a0, in + li $v0, 4 + syscall + la $a0, string + li $a1, 32 + li $v0, 8 + syscall + move $t1, $a0 +loop: + lb $t2, 0($t1) + addi $t1, $t1, 1 + bnez $t2, loop +exe: + addi $t1, $t1, -3 + ble $t1, $a0, error + lb $t4, 0($a0) + lb $t5, 0($t1) + sb $t4, 0($t1) + sb $t5, 0($a0) + j write +error: + la $a0, wrong + li $v0, 4 + syscall + j exit +write: + la $a0, out + li $v0, 4 + syscall + la $a0, string + li $v0, 4 + syscall +exit: + li $v0, 10 + syscall