Professional Documents
Culture Documents
HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Giải:
bne $s3,$s4,Else # if i != j
add $s0, $s1, $s2 #f = g + h (skip if i != j)
j exit # Exit
Else: sub $s0, $s1, $s2 # f = g – h (skip if i = j)
exit:
3. bài tập
a. Nhập vào một ký tự, xuất ra cửa sổ I/O của MARS theo từng yêu cầu sau:
Code:
.data
Nhap: .asciiz "Nhap vao 1 ki tu: "
XTruoc: "\nKi tu dung truoc "
XSau: "\nKi tu dung sau "
La: .asciiz " la "
.text
main:
la $a0, Nhap
jal printf
addi $v0, $0, 12
syscall
addi $s0, $v0, 0
la $a0, XTruoc
jal printf
addi $a0, $s0, 0
addi $v0, $0, 11
syscall
la $a0, La
jal printf
addi $a0, $s0, -1
addi $v0, $0, 11
syscall
la $a0, XSau
jal printf
addi $a0, $s0, 0
addi $v0, $0, 11
syscall
la $a0, La
jal printf
addi $a0, $s0, 1
addi $v0, $0, 11
syscall
exit:
addi $v0, $0, 10
syscall
printf:
addi $v0, $0, 4
syscall
jr $ra
b. Nhập từ bàn phím 2 số nguyên, in ra cửa sổ I/O của MARS theo từng yêu cầu sau:
✓ Số lớn hơn
Code :
.data
a: .asciiz "a= "
b: .asciiz "b= "
Min: .asciiz "\nMin= "
Max: .asciiz "\nMax= "
Cong: .asciiz "\na+b="
Tru: .asciiz "\na-b="
Nhan: .asciiz "\na.b="
Chia: .asciiz "\na:b="
.text
li $v0, 4
la $a0, a
syscall
li $v0, 5
syscall
move $t0,$v0
li $v0, 4
la $a0, b
syscall
li $v0, 5
syscall
move $t1,$v0
move $t2, $v0
move $s0, $t0
move $s1, $t0
bgt $t0, $t1, Dung
move $s1, $t1
j IFMAX
Dung:
move $s0, $s1
IFMAX:
bgt $s1, $t2, IFMIN
move $s1, $t2
j IFMIN
IFMIN:
blt $s0, $t2, continue
move $s0, $t2
j continue
continue:
li $v0, 4
la $a0 ,Max
syscall
li $v0, 1
move $a0, $s1
syscall
li $v0, 4
la $a0, Min
syscall
li $v0, 1
move $a0, $s0
syscall
li $v0, 4
la $a0, a
syscall
li $v0, 5
syscall
move $t0,$v0
li $v0, 4
la $a0, b
syscall
li $v0, 5
syscall
move $t1,$v0
add $s0,$t0, $t1
sub $s1, $t0, $t1
li $v0, 4
la $a0, Cong
syscall
li $v0, 1
move $a0, $s0
syscall
li $v0, 4
la $a0, Tru
syscall
li $v0, 1
move $a0, $s1
syscall
mult $t0,$t1
mflo $s2
li $v0,4
la $a0 ,Nhan
syscall
li $v0, 1
move $a0, $s2
syscall
div $t0, $t1
mflo $s3
li $v0, 4
la $a0, Chia
syscall
li $v0, 1
move $a0, $s3
syscall l
Giải thích:
- Khai báo vùng nhớ data
- Khai báo các chuỗi cần thiết
- Xuất chuỗi a. Nhập số nguyên a từ bàn phím
- Lưu số a vào $t0.
- Xuất chuỗi b. Nhập số nguyên a từ bàn phím
- Lưu số a vào $t1
- Xuất chuỗi b.
- Xem $s0 như là min và lưu vào số a vào min. Xem $s1 như là max và lưu vào số b vào max.
- Nếu a>b thì đi đến label Dung. Ngược lại thì max=b. Đi đến label IFMAX lable Dung min =b
- Sau đó lưu a+b vào $s0
- Lưu a-b vào $s1