Professional Documents
Culture Documents
2
Sinh viên thực hiện: Trần Văn Hải - MSSV: 20521283
Giảng viên hướng dẫn thực hành: Trần Đại Dương
THỰC HÀNH
2 Biên dịch chương trình
C MIPS
if (i == j) beq $s0,$s1,exit
f = g + h; sub $s2,$t0,$t1
else j exit1
f = g – h; exit:
add $s2,$t0,$t1
exit1:
BÀI TẬP
3.a. Nhập 1 ký tự, sau đó xuất ra ký tự liền trước và liền sau
.data
chuoi1:.asciiz"Nhap ky tu: "
chuoi2:.asciiz"\nky tu vua nhap la chu thuong: "
chuoi3:.asciiz"\nKy tu vua nhap la chu HOA: "
chuoi4:.asciiz"\nKy tu vua nhap la so: "
chuoi5:.asciiz"\nKy tu lien truoc la: "
chuoi6:.asciiz"\nKy tu lien sau la: "
chuoi7:.asciiz"\ninvalid type"
.text
li $v0,4 %Đọc mã thanh ghi $v0, 4 là mã xuất chuỗi
la $a0,chuoi1 %Gán địa chỉ chuoi1 cho thanh ghi $a0
syscall %Xuất chuoi1
li $v0,12 %Đọc mã thanh ghi $v0, 12 là mã đọc ký tự
syscall %Xuất ký tự
move $t0,$v0 %$t0 = $v0
bge $t0,48,exit %Nếu $t0 >= 48 đúng thì nhảy đến nhãn exit
j INV % Nếu sai thì nhảy tới nhãn INV
exit: %Nhãn exit
ble $t0,57,exit1 %Nếu $t0 <= 57 đúng thì nhảy đến nhãn exit1
j exit2 %Nếu sai thì nhảy đến nhãn exit2
exit1: %Nhãn exit1
li $v0,4 %Đọc mã thanh ghi $v0, 4 là mã xuất chuỗi
la $a0,chuoi4 %Gán địa chỉ chuoi4 cho thanh ghi $a0
syscall %Xuất chuoi4
subi $t1,$t0,1 %$t1 = $t0 - 1
li $v0,4 %Đọc mã thanh ghi $a0, 4 là mã xuất chuỗi
la $a0,chuoi5 %Gán địa chỉ chuoi5 cho thanh ghi $a0
syscall, %Xuất chuoi5
li $v0,11 %Đọc mã thanh ghi $v0, 11 là mã in ký tự
move $a0,$t1 %$10 = $t1
syscall %Xuất $t1
addi $t2,$t0,1 $t2 = $t0 - 1
li $v0,4 %Đọc mã thanh ghi $v0, 4 là mã xuất chuỗi
la $a0,chuoi6 %Gán địa chỉ chuoi6 cho thanh ghi $a0
syscall,
li $v0,11
move $a0,$t2
syscall
exit2:
bge $t0,65,exitH
j INV
exitH:
ble $t0,90,exitH1
j exit3
exitH1:
li $v0,4
la $a0,chuoi3
syscall
subi $t1,$t0,1
li $v0,4
la $a0,chuoi5
syscall,
li $v0,11
move $a0,$t1
syscall
addi $t2,$t0,1
li $v0,4
la $a0,chuoi6
syscall,
li $v0,11
move $a0,$t2
syscall
exit3:
bge $t0,97,exitT
j INV
exitT:
ble $t0,122,exitT1
j INV
exitT1:
li $v0,4
la $a0,chuoi2
syscall
subi $t1,$t0,1
li $v0,4
la $a0,chuoi5
syscall,
li $v0,11
move $a0,$t1
syscall
addi $t2,$t0,1
li $v0,4
la $a0,chuoi6
syscall,
li $v0,11
move $a0,$t2
syscall
INV:
li $v0,4
la $a0,chuoi7
syscall
EXIT:
3.b. Nhập 2 số nguyên, sau đó xuất ra số lớn hơn, tổng, hiệu, tích và thương
.data
chuoi1:.asciiz"Nhap so thu nhat: "
chuoi2:.asciiz"\nNhap so thu hai: "
chuoi3:.asciiz"\nSo lon hon la: "
chuoi4:.asciiz"\nTong hai so la: "
chuoi5:.asciiz"\nHieu hai so la: "
chuoi6:.asciiz"\nTich hai so la: "
chuoi7:.asciiz"\nThuong cua hai so la: "
.text
li $v0,4 %Đọc mã syscall thanh ghi $v0, 4 là mã xuất chuỗi
la $a0,chuoi1 %Gán địa chỉ của chuoi1 qua thanh ghi $a0
syscall %Xuất chuoi1
li $v0,5 %Đọc mã syscall thanh ghi $v0, 5 là mã nhập số nguyên
syscall %Nhập số nguyên thứ nhất
move $t0,$v0 %$t0 = $v0
li $v0,4 %Đọc mã syscall thanh ghi $v0, 4 là mã xuất chuỗi
la $a0,chuoi2 %Gán địa chỉ của chuoi2 qua thanh ghi $a0
syscall %Xuất chuoi2
li $v0,5 %Đọc mã syscall thanh ghi $v0, 5 là mã nhập số nguyên
syscall %Nhập số nguyên thứ hai
move $t1,$v0 %$t1 = $v0
bgt $t0,$t1,exit %Nếu $t0 > $t1 đúng thì nhảy tới nhãn exit