Lab04 23521704

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 9

BÁO CÁO THỰC HÀNH LAB04

Họ tên Trần Thị Cẩm Tú Lớp: …IT012.O22.1…


MSSV 23521704 STT: ……27…………
Bài Thực Hành THỰC HÀNH CÁC CẤU TRÚC IF/ELSE, VÒNG
LẶP BẰNG MIPS
CBHD Trương Văn Cương

1 Thực hành
Chuyển đoạn code trong bảng sau theo MIPS và sử dụng MARS để kiểm tra lại kết quả:

a. (Với giá trị của i, j, f, g, h lần lượt chứa


trong các thanh ghi $s0, $s1, $s2, $t1, $t2)

Khoa Kỹ thuật Máy tính – Trường ĐH CNTT


Báo cáo thực hành môn học Tổ chức và Cấu trúc Máy tính 2 Trang 1
b. (Với giá trị của i, N, sum lần lượt chứa trong các thanh ghi $s0, $s1, $s2)

2 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:
✓ Ký tự liền trước và liền sau của ký tự nhập vào:
Ví dụ:
Nhap ky tu (chi mot ky tu): b
Ky tu truoc: a
Ky tu sau: b
✓ Ký tự nhập vào chỉ được phép là 3 loại: số, chữ thường và chữ hoa. Nếu ký tự
nhập vào rơi vào một trong ba loại, xuất ra cửa sổ đó là loại nào; nếu ký tự nhập
không rơi vào một trong ba loại trên, xuất ra thông báo “invalid type”.

Khoa Kỹ thuật Máy tính – Trường ĐH CNTT


Báo cáo thực hành môn học Tổ chức và Cấu trúc Máy tính 2 Trang 2
Code Giải thích
.data # Khai báo vùng nhớ data
nofront: .asciiz "Khong ton tai ky tu
truoc\n"
noback: .asciiz "Khong ton tai ky tu
sau\n"
nhap: .asciiz "Nhap ky tu: "
truoc: .asciiz "Ky tu truoc: "
sau: .asciiz "Ky tu sau: "
loi: .asciiz "special character"
endl: .asciiz "\n"
in: .asciiz "Ky tu la chu in"
thuong: .asciiz "Ky tu la chu thuong"
so: .asciiz "Ky tu la so"

.text # Khai báo vùng nhớ text


li $v0,4 #Sử dụng mã hệ thống 4 để in ra chuỗi
la $a0,nhap được chỉ định
syscall

li $v0, 12 #Sử dụng mã hệ thống 12 để đọc 1 ký tự


syscall từ bàn phím
move $s0,$v0

li $v0,4 # Sử dụng mã hệ thống 4 để in ra chuỗi


la $a0,endl được chỉ định
syscall

jal check_upper #gọi hàm kiểm tra ký tự in


jal check_lower #gọi hàm kiểm tra ký tự thường
jal check_number #gọi hàm kiểm tra số
jal special #nếu ký tự không thuộc một trong 3
trường hợp trên hàm special sẽ xuất
thông báo
j end_proc #kết thúc chương trình
#phần khai báo chương trình con
check_upper: #hàm kiểm tra ký tự in
blt $s0,'A', end_func
bgt $s0,'Z', end_func
li $t2,'A'

Khoa Kỹ thuật Máy tính – Trường ĐH CNTT


Báo cáo thực hành môn học Tổ chức và Cấu trúc Máy tính 2 Trang 3
jal front #đến hàm kiểm tra có tồn tại ký tự trước
hay không

li $t2,'Z'
jal back

li $v0,4 # Sử dụng mã hệ thống 4 để in ra chuỗi


la $a0, in được chỉ định
syscall
j end_proc #kết thúc chương trình

check_lower: # hàm kiểm tra ký tự thường


blt $s0,'a', end_func
bgt $s0,'z', end_func
li $t2,'a'
jal front # đến hàm kiểm tra có tồn tại ký tự
li $t2,'z' trước hay không

jal back #đến hàm kiểm tra có tồn tại ký tự sau


hay không

li $v0,4 # Sử dụng mã hệ thống 4 để in ra chuỗi


la $a0, thuong được chỉ định
syscall
j end_proc #kết thúc chương trình

check_number: #hàm kiểm tra ký tự thường


blt $s0,'0',end_func
bgt $s0,'9',end_func
li $t2,'0'
jal front #đến hàm kiểm tra có tồn tại ký tự trước
li $t2,'9' hay không
jal back #đến hàm kiểm tra có tồn tại ký tự
sau hay không

li $v0,4 # Sử dụng mã hệ thống 4 để in ra chuỗi


la $a0,so được chỉ định
syscall
j end_proc #kết thúc chương trình

Khoa Kỹ thuật Máy tính – Trường ĐH CNTT


Báo cáo thực hành môn học Tổ chức và Cấu trúc Máy tính 2 Trang 4
special: #hàm xuất lỗi khi ký tự không hợp lệ
li $v0,4 #Sử dụng mã hệ thống 4 để in ra chuỗi
la $a0,loi được chỉ định
syscall
jr $ra

front: #hàm kiểm tra ký tự trước và xuất


addi $a0,$s0,-1
blt $a0,$t2,do #Nếu $a0 < $t2 chuyển tới nhãn do

li $v0,4 # Sử dụng mã hệ thống 4 để in ra chuỗi


la $a0,truoc được chỉ định
syscall

li $v0,11 # Sử dụng mã hệ thống 11 để in ra ký tự


addi $a0,$s0,-1 được chỉ định
syscall

li $v0,4 # Sử dụng mã hệ thống 4 để in ra chuỗi


la $a0,endl được chỉ định
syscall

jr $ra
do:
li $v0,4 # Sử dụng mã hệ thống 4 để in ra chuỗi
la $a0, nofront được chỉ định
syscall
jr $ra

back: #hàm kiểm tra ký tự sau và xuất


addi $a0,$s0,1
bgt $a0,$t2,do2 #Nếu $a0 > $t2 chuyển tới nhãn do2

li $v0,4 # Sử dụng mã hệ thống 4 để in ra chuỗi


la $a0,sau được chỉ định
syscall

li $v0,11 # Sử dụng mã hệ thống 11 để in ra ký tự


addi $a0, $s0,1 được chỉ định
syscall

Khoa Kỹ thuật Máy tính – Trường ĐH CNTT


Báo cáo thực hành môn học Tổ chức và Cấu trúc Máy tính 2 Trang 5
li $v0,4 #Sử dụng mã hệ thống 4 để in ra chuỗi
la $a0,endl được chỉ định
syscall

jr $ra
do2:
li $v0,4 #Sử dụng mã hệ thống 4 để in ra chuỗi
la $a0,noback được chỉ định
syscall
jr $ra

end_func:
jr $ra #Thoát khỏi một hàm và quay lại điểm
gọi hàm đó
end_proc: #Kết thúc chương trình
- Kết quả:

Khoa Kỹ thuật Máy tính – Trường ĐH CNTT


Báo cáo thực hành môn học Tổ chức và Cấu trúc Máy tính 2 Trang 6
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
✓ Tổng, hiệu, tích và thương của hai số

Khoa Kỹ thuật Máy tính – Trường ĐH CNTT


Báo cáo thực hành môn học Tổ chức và Cấu trúc Máy tính 2 Trang 7
Khoa Kỹ thuật Máy tính – Trường ĐH CNTT
Báo cáo thực hành môn học Tổ chức và Cấu trúc Máy tính 2 Trang 8
- Kết quả:

Khoa Kỹ thuật Máy tính – Trường ĐH CNTT


Báo cáo thực hành môn học Tổ chức và Cấu trúc Máy tính 2 Trang 9

You might also like