ĐẠ I HỌC QU C GIA THÀNH PHỐ HỒ CHÍ MINH Ố TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KIẾN TRÚC MÁY TÍNH Họ và tên sinh viên: Dương Quốc Thu n ậ MSSV: 23521548 Giảng viên hướng dẫn: Nguyễn Thàn
Trang 1ĐẠ I HỌC QU C GIA THÀNH PHỐ HỒ CHÍ MINH Ố TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KIẾN TRÚC MÁY TÍNH
Họ và tên sinh viên: Dương Quốc Thu n ậ
MSSV: 23521548 Giảng viên hướng dẫn: Nguyễn Thành Nhân
Bài thực hành #5: H p ng Assembly MARS ợ ữ –
Trang 2MỤC LỤC
MỤC L C Ụ 1
BÀI T P TH C HÀNHẬ Ự 1
1/ Thao tác v i mớ ảng 1
a/ In ra c a s I/O c a MARS các ph n t m ng array1, m ng array2ử ổ ủ ầ ử ả ả 2
b/ Gán các giá tr cho m ng array3 sao cho: array3[i] = array2[i] + array2[size2 - ị ả 1 - i] 3
c/ Người sử dụng nh p vào m ậ ảng thứ mấ y và chỉ s phầ ố n tử c n l y trong m ầ ấ ảng đó, chương trình xuất ra phần t ử tương ứng 4
3/ Con trỏ 7
a/ Nh p m t m ng các s nguyên n ph n t (nh p vào s ậ ộ ả ố ầ ử ậ ố phầ ửn t và giá tr c a t ng ị ủ ừ phầ n t ), xuấ ử t ra c a sử ổ I/O của MARS theo t ng yêu c u sau: ừ ầ 7
b/ Nh p m t mậ ộ ảng các s nguyên n ph n t (nh p vào s ố ầ ử ậ ố phầ ửn t và giá tr c a t ng ị ủ ừ phầ n t ) Mả ử ng này g i là A Chuy n dòng lọ ể ệnh C dưới đây sang mã assembly của MIPS V i các biớ ến nguyên i, j được gán lần lượt vào thanh ghi $s0 $s1, ; và địa ch ỉ nền c a m ng s ủ ả ố nguyên A được lưu trong thanh ghi $s3 if (i<j) A[i]= i; else A[i] = j; 10
BÀI TẬP TH C HÀNH Ự
1/ Thao tác v i mớ ảng
Cho ba mảng như sau
Trang 3Viết code thực hi n các công vi c ệ ệ
a/ In ra c a s I/O c a MARS các ph n t m ng array1, m ng array2 ử ổ ủ ầ ử ả ả
Hình 1.a.1 Đoạn code để xuất mảng array1
Trang 4Hình 1.a.2 Đoạ n code xu t mảng 2 ấ
Hình 1.a.3 Kết qu ả
b/ Gán các giá tr cho m ng array3 sao cho: array3[i] = array2[i] + array2[size2 - 1 - ị ả i]
Ở đây, ta sẽ gán vào nhữ ng phần t mả ử ng array3 những giá tr đối xưng nhau Do đó, các giá ị trị trong array3 b ng nhau và b ng 17 ằ ằ
Trang 5Hình 1.b.1 Đoạn code
Hình 1.b.2 Kết qu ả
c/ Người sử d ng nh p vào m ng th m y và ch s ph n t c n l y trong m ụ ậ ả ứ ấ ỉ ố ầ ử ầ ấ ảng
đó, chương trình xuấ t ra phần tử tương ứng
Hình 1.c.1 Khai báo ban đầu
Trang 6- Do m ng array3 là m ng tr ng, ta c n nh p giá tr cho m ng y ả ả ố ầ ậ ị ả ấ
Hình 1.c.2 Nh p m ng array3 ậ ả
- Nh p th t m ng, ch s cậ ứ ự ả ỉ ố ủa phầ ửn t , nh p l (n u có) ậ ại ế
Hình 1.c.3
Trang 7- Yêu cầu nh p lậ ại (n u có) và xuế ất phẩn t theo yêu cử ầu
- Kết quả xu t 1: ấ
+ Nh p array3 ậ
+ Kết quả xuất:
- Kết quả xuấ : t 2
+ Nh p array3 (ậ như trên)
+ Kết quả:
- Kết quả xuấ : t 3
+ array3 như trên
+ Kết quả:
Khi nh p ch s ph n t ậ ỉ ố ầ ử không đúng, chương trình yêu cầu nh p l i ậ ạ
Kết quả đúng
Trang 83/ Con tr ỏ
a/ Nhập một mảng các s nguyên n ph n t (nh p vào s ph n t và giá tr c a ố ầ ử ậ ố ầ ử ị ủ
t ng ph n t ), xu t ra c a s ừ ầ ử ấ ử ổ I/O của MARS theo t ng yêu c u sau: ừ ầ
✓Xuất ra giá tr l n nhị ớ ất và nhỏ nhất của mảng
✓ T ng tổ ất cả các phầ ử ủn t c a m ng ả
✓ Người sử d ng nh p vào ch s c a m t ph n t ụ ậ ỉ ố ủ ộ ầ ử nào đó và giá trị ủa phầ ử c n t
đó được in ra cửa sổ
- Khai báo ban đầu
- Nh p s ậ ố lượng và t ng ph n t c a m ng ừ ầ ử ủ ả
Trang 9- Nh p ch s ậ ỉ ố phầ ửn t cần xu t ấ
- Tính toán
Trang 10- Xu t ấ
Trang 11- K t qu ế ả xuất:
b/ Nh p mậ ột mảng các s nguyên n ph n t (nh p vào s ph n t và giá tr c a ố ầ ử ậ ố ầ ử ị ủ
t ng ph n t ) M ng này gừ ầ ử ả ọi là A
Trang 12Chuyển dòng l ệnh C dưới đây sang mã assembly của MIPS V i các bi n nguyên ớ ế
i, j được gán lần lượt vào thanh ghi $s0 $s1, ; và đị a chỉ nền của mảng số nguyên A được lưu trong thanh ghi $s3
if (i<j) A[i]= i;
else A[i] = j;
- Khai báo ban đầu
- Nh p s ậ ố lượng phần t và ph n t c a mử ầ ử ủ ảng A
Trang 13- Th c hi n yêu cự ệ ầu
- K t qu : ế ả
+ Nh p mậ ảng (Trước khi th c hi n if) ự ệ
+ Sau khi nhập i, j và th c hi n if ự ệ