Mục lục1 CHƯƠNG TRÌNH MÔ PHỎNG HỢP NGỮ ASSEMBLY 2.1 Sinh viên tìm hiểu tài liệu “Một số lệnh assembly MIPS cơ bản” và mô phỏng việc thực thi các lệnh và cho biết chức năng của các lệnh c
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TỔ CHỨC VÀ CẤU TRÚC MÁY TÍNH II
BÁO CÁO THỰC HÀNH LAB 03
Sinh viên thực hiện :
Nguyễn Thế Luân - 23520899
Giảng viên hướng dẫn : Nguyễn Thành Nhân
Ngày 21 tháng 4 năm 2024
Trang 2Mục lục
1 CHƯƠNG TRÌNH MÔ PHỎNG HỢP NGỮ (ASSEMBLY)
2.1 Sinh viên tìm hiểu tài liệu “Một số lệnh assembly MIPS cơ bản” và mô
phỏng việc thực thi các lệnh và cho biết chức năng của các lệnh cơ bản sau: 2
2.2 Ví dụ 1 7
2.3 Ví dụ 2 7
2.4 Ví dụ 3 7
2.5 Ví dụ 4 8
3 BÀI TẬP 8 3.1 Nhập vào một chuỗi, xuất ra cửa sổ I/O của MARS theo từng yêu cầu sau: 8 3.2 Biểu diễn nhị phân của 2 chuỗi trên dưới bộ nhớ là gì? 9
3.3 Xuất ra lại đúng chuỗi đã nhập 11
3.4 Nhập vào 2 số nguyên sau đó xuất tổng của 2 số nguyên này 12
Trang 31 CHƯƠNG TRÌNH MÔ PHỎNG HỢP NGỮ (ASSEMBLY) MIPS
Hợp ngữ MIPS là một ngôn ngữ lập trình cấp thấp được sử dụng rộng rãi trong việc giảng dạy về kiến trúc máy tính Để giúp sinh viên và nhà nghiên cứu dễ dàng tìm hiểu và thực hành với hợp ngữ MIPS, các chương trình mô phỏng như SPIM
và MARS đã được phát triển
Chương trình mô phỏng hợp ngữ MIPS cung cấp một môi trường giả lập cho phép người dùng nhập, biên dịch và thực thi mã hợp ngữ MIPS Nó giả lập một vi
xử lý MIPS 32-bit với tất cả các thanh ghi và bộ nhớ tương ứng Người dùng có thể nhập mã hợp ngữ MIPS vào chương trình mô phỏng, sau đó chạy mã để xem kết quả
Một trong những tính năng quan trọng của chương trình mô phỏng hợp ngữ MIPS là khả năng hiển thị trạng thái của vi xử lý sau mỗi lệnh Điều này giúp người dùng dễ dàng theo dõi và hiểu cách thức hoạt động của từng lệnh Ngoài ra, chương trình mô phỏng còn cho phép người dùng kiểm soát quá trình thực thi mã, bao gồm việc dừng, tiếp tục, hoặc bước qua từng lệnh
Chương trình mô phỏng hợp ngữ MIPS cũng hỗ trợ việc gỡ lỗi mã hợp ngữ MIPS Người dùng có thể đặt điểm dừng (breakpoints) tại các dòng mã cần kiểm tra, sau đó chạy mã đến điểm dừng để kiểm tra trạng thái của vi xử lý Điều này giúp người dùng dễ dàng tìm ra và sửa lỗi trong mã của mình
Ngoài ra, chương trình mô phỏng hợp ngữ MIPS còn cung cấp các công cụ để hiển thị và chỉnh sửa nội dung của bộ nhớ và các thanh ghi Điều này giúp người dùng dễ dàng kiểm tra và thay đổi giá trị của các biến và thanh ghi trong quá trình thực thi mã
2 THỰC HÀNH
2.1 Sinh viên tìm hiểu tài liệu “Một số lệnh assembly MIPS cơ bản” và mô phỏng việc thực thi các lệnh và cho biết chức năng của các lệnh cơ bản sau:
Trang 4Hình 1: Enter Caption
Một số lệnh cơ bản MIPS cơ bản:
Chức năng của các lệnh:
• add: s và t, lưu kết quả vào thanh ghi d Nếu có tràn số, lệnh này sẽ tạo ra ngoại lệ
• andi: Cộng giá trị của thanh ghi Nếu có tràn số, lệnh này sẽ tạo ra ngoại lệ
• addu: Tương tự như lệnh add nhưng không kiểm tra tràn số
• addiu t, s, i: Tương tự như lệnh addi nhưng không kiểm tra tràn số
• sub d, s, t: Trừ giá trị của thanh ghi t từ thanh ghi s, lưu kết quả vào thanh ghi d Nếu có tràn số, lệnh này sẽ tạo ra ngoại lệ
• subu d, s, t: Tương tự như lệnh sub nhưng không kiểm tra tràn số
• and d, s, t: Thực hiện phép toán logic AND trên từng bit của s và t, lưu kết quả vào d
• andi t, s, i: Thực hiện phép toán logic AND trên từng bit của s và hằng số i, lưu kết quả vào t
Trang 5• or d, s, t: Thực hiện phép toán logic OR trên từng bit của s và t, lưu kết quả vào d
• nor d, s, t: Thực hiện phép toán logic NOR (NOT OR) trên từng bit của s
và t, lưu kết quả vào d
• lw t, i(s): Đọc giá trị từ bộ nhớ tại địa chỉ được tính bằng cách cộng giá trị của s và hằng số i, lưu kết quả vào t
• sw t, i(s): Ghi giá trị của t vào bộ nhớ tại địa chỉ được tính bằng cách cộng giá trị của s và hằng số i
• slt d, s, t: So sánh s và t Nếu s nhỏ hơn t, đặt d bằng 1 Ngược lại, đặt d bằng 0 slti t, s, i: Tương tự như slt nhưng so sánh s với hằng số i
• sltu d, s, t: Tương tự như slt nhưng so sánh không dấu
• sltiu t, s, i: Tương tự như slti nhưng so sánh không dấu
• syscall: Thực hiện một lệnh hệ thống Chức năng cụ thể phụ thuộc vào giá trị trong thanh ghi v0
Mô phỏng việc thực thi một số lệnh:
Trang 7Hình 2: Enter Caption
Trang 82.2 Ví dụ 1
Nhận xét: Chương trình này được dùng để thay đổi giá trị của biến var1 từ
23 về 5
2.3 Ví dụ 2
Nhận xét: Chương trình này được dùng để khai báo một mảng gồm 3 phần
tử và lưu các giá trị 5, 13 và -7 vào mảng đó
2.4 Ví dụ 3
Nhận xét:
Đoạn mã MIPS này được sử dụng để đọc một số nguyên từ bàn phím Số 5 được đặt vào thanh ghi v0
Trang 92.5 Ví dụ 4
Nhận xét:
Chương trình này được sử dụng để in ra giá trị của một chuỗi
3 BÀI TẬP
3.1 Nhập vào một chuỗi, xuất ra cửa sổ I/O của MARS theo từng yêu cầu sau:
Trang 10Ghi chú: Addi v0, 0, 4 và syscall được sử dụng để in chuỗi ra màn hình console.
3.2 Biểu diễn nhị phân của 2 chuỗi trên dưới bộ nhớ là gì?
.Data:
01101111011000010110100001000011
01101110011000010110001000100000
01100001010000100010000000100001
01100001011011000010000001101110
01101110011010010111001100100000
01101001011101100010000001101000
01101110001000000110111001100101
01110100001000000110110101100001
01101101001000000111010101101000
00001010001111110111100101100001
01101000011010010100100000000000
Trang 1100100000011010000110111001101001
01110011001000000110000101101100
00100000011010000110111001101001
01101110011001010110100101110110
01101101011000010110111000100000
01011110001000000011000100100000
00000000000010100101111000101101
00000000000000000000000000000000
00000000000000000000000000000000
.Text:
00100100000000100000000000000100
00111100000000010001000000000001
00110100001001000000000000000000
00000000000000000000000000001100
00100100000000100000000000000100
00111100000000010001000000000001
00110100001001000000000000101001
00000000000000000000000000001100
Trang 123.3 Xuất ra lại đúng chuỗi đã nhập
Lưu ý: Độ lớn tối đa của chuỗi khi khai báo phải bằng độ lớn tối đa của chuỗi khi nhập để đảm bảo rằng không gian bộ nhớ được cấp phát cho chuỗi có đủ chỗ
để lưu trữ tất cả các ký tự của chuỗi khi nhập
Trang 133.4 Nhập vào 2 số nguyên sau đó xuất tổng của 2 số nguyên này
Nhận xét:
- Chương trình được viết một cách rõ ràng và dễ hiểu
- Việc sử dụng các thanh ghi giúp tối ưu hóa việc lưu trữ và truy cập dữ liệu
- Tuy nhiên, cần lưu ý rằng chương trình này không kiểm tra các trường hợp tràn số khi thực hiện phép cộng
Trang 144 Tài Liệu Tham Khảo
Slide bài giảng Khoa Kỹ Thuật Máy Tính - UIT