ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA KỸ THUẬT MÁY TÍNH BÁO CÁO MÔN HỌC THỰC HÀNH KIẾN TRÚC MÁY TÍNH CE119 N21 MTCL BÁO CÁO BÀI THỰC HÀNH SỐ 2 Giảng viên hướng dẫn Th[.]
Trang 1Page | 1
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA KỸ THUẬT MÁY TÍNH
BÁO CÁO MÔN HỌC
THỰC HÀNH KIẾN TRÚC MÁY TÍNH
CE119.N21.MTCL
BÁO CÁO BÀI THỰC HÀNH SỐ 2
Giảng viên hướng dẫn: Thân Thế Tùng
Sinh viên thực hiện: Võ Ngọc Hoài - Mssv:21522084
Trang 2MỤC LỤC:
1 Lý thuyết… 3
2 Thực hành 3
3 Bài tập 5
Trang 3if (i == j)
f = g + h;
else
f = g – h;
Giảng viên hướng dẫn sinh viên về chương trình hợp ngữ MIPS dựa theo
tài liệu: Tổngquát về hợp ngữ và kiến trúc MIPS
Chuyển đoạn code trong bảng theo sau sang MIPS và sử dụng MARS để kiểm tra lại kết quả:
Trang 4(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, $t0, $t1)
Trình bày:
Chuyển đoạn code trên sang MIPS:
Trang 5Giải thích:
Nếu s0 khác s1 thì thanh ghi PC sẽ có địa chỉ ở nhãn label và sau đó chương trình chạy tới label cho tới exit còn nếu bằng thì ta sẽ xuống lệnh tiếp theo và thực hiệu yêu cầu f=g+h
Rồi chạy xuống exit kết thúc chương trình
Trang 6int Sum = 0
for (int i = 1; i <=N; ++i)
{ Sum = Sum + i;
}
(Với giá trị của i, N, Sum lần lượt chứa trong các thanh ghi $s0, $s1, $s2)
Trình bày:
Chuyển đoạn code trên sang MIPS:
Trang 7Giải thích:
Đầu tiên ta sài lệnh li để gán giá trị cho các biến i,N,Sum, giả sử N bằng 4
Ở dòng 6 ta sài lệnh bgt để so sánh xem i và N lúc đầu như nào nếu i lớn hơn N thì sẽ chạy xuống lênh exit và kết thúc ngay , còn nếu ngược lại thì sẽ xuống dòng lệnh tiếp theo , rồi chạy xuống lệnh label thực hiện sum=sum+i, sau đó ta cộng i lênh một đơn vị bằng cách sài lệnh addi , sau đó ta so sánh xem giữa i và N như nào nếu i nhỏ hơn N thì sẽ lặp lại bằng cách chạy lên lại lệnh label và thực hiện lại tiếp , còn không thì ta chạy thẳng xuống exit
Trang 8a. 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 (chỉ
một ký tự): b
Ky tu truoc: a
Ky tu sau: c
Ký tự nhập vào chỉ được phép là ba 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
Trang 9nà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”
Trình bày:
Giải thích:
Ta tạo các chuỗi var 0, var1 ,var2
Để tạo ra các câu xuất ra màn hình khi ta nhập b vào ở dòng 6-7
Xong ta xuất chuỗi var0 để xuống dòng rồi ta xuất tiếp chuỗi var1 và var2
Kết quả:
Trang 10b 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:
Tổng, hiệu, tích và thương của hai số
Trình bày:
Trang 12Giải thích:
Ta tạo 3 chuỗi là var0 var1 và var2 để khi nhập số thứ nhất và số thứ hai để
dễ nhận biết khi nào nhập, còn chuỗi 2 là để nhằm mục đích xuống dòng cho các câu khi xuất ra được xuống dòng
Đầu tiên ta nhập vào 2 số xong sau đó ta so sánh chúng qua lệnh blt ở dòng
21, nếu như s0 lớn hơn s1 thì sẽ chạy xuống dòng tiếp theo để xuất số lớn hơn là s0 rồi chạy đến hàm tổng, còn nếu như ngược lại thì sẽ chạy xuống
Trang 13nhãn label để xuất số lớn hơn là s1 , rồi ta xuống hàm tổng , ta gán tổng của hai số đó vào biến
$t0 rồi xuất ra biến này bằng tập lệnh syscall hỗ trợ xuất số nguyên , tương tự hàm hiệu như hàm tổng , hàm tích thì sài mul để tính tích và gán vào $t0 rồi xuất ra, còn hàm thương đặc biệt hơn là ta sài div xong sau đó thương số của s0 và s1 sẽ được lưu vào trong thanh ghi $lo nên để lấy giá trị trong thanh ghi này thì phải sài mflo để gán vào $t0 rồi sau đó ta xuất giá trị $t0 này
ra là được thương số của hai số
Kết quả: