



Preview text:
lOMoAR cPSD| 59285474
Lê Phan Thanh Bình – MSSV: 23520154
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: add, addi, addu, addiu, sub, subu, and,
andi, or, nor, lw, sw, slt, slti, sltu, sltiu, syscall add addi – add Cộng hai số immediate addu –
Cộng một số có dấu với một hằng số add unsigned Cộng hai số không dấu
addiu – add immediate unsigned
Cộng một số không dấu với một hằng số Trừ sub – subtract subu – hai số subtract unsigned and
Trừ hai số không dấu Phép andi – and immediate toán logic AND
or nor lw – load word sw –
Phép toán logic AND với một hằng số
store word slt – set less than Phép toán logic OR slti – set less than Phép toán logic NOR immediate sltu – set less
Tải một từ (word) từ bộ nhớ vào thanh ghi than unsigned
Lưu một từ (word) từ thanh ghi vào bộ nhớ
sltiu – set less than immediate unsigned So sánh hai số nhỏ hơn syscall – system calls
So sánh một số với một hằng số
So sánh hai số không dấn
So sánh một số không dấu với một hằng số Gọi
hệ thống để thực hiện một vài chức năng do hệ điều hành cung cấp
2.2 Mô phỏng các chương trình bên dưới và có biết ý nghĩa của chương trình: Ví dụ 1: .data var1: .word 23
Khai báo một biến var1 với giá trị ban đầu là 23 .text main: lw $t0, var1
Load giá trị 23 của var1 vào thanh ghi $t0 li $t1, 5
Load giá trị 5 vào thanh ghi $t1 sw $t1, var1
Ghi giá trị của thanh ghi $t1 (5) vào biến var1
Ý nghĩa của chương trình này là load giá trị của var1, gán giá trị 5 cho $t1 và lưu lại vào var1 Ví dụ 2: .data lOMoAR cPSD| 59285474 array1: .space 12
Khai báo một mảng array1 với 12 byte .text _start: la $t0, array1
Load địa chỉ của array1 vào thanh ghi $t0 li $t1, 5
Gán giá trị 5 vào thanh ghi $t1 sw $t1, ($t0)
Lưu giá trị của thanh ghi $t1 vào array1 li $t1, 13
Gán giá trị 13 vào thanh ghi $t1 sw $t1, 4($t0)
Lưu giá trị của thanh ghi $t1 vào array1 tại vị trí 4 li $t1, -7
Gán giá trị -7 vào thanh ghi $t1 sw $t1, 8($t0)
Ghi giá trị của thanh ghi $t1 vào mảng array1 tại vị trí 8
Ý nghĩa của chương trình này là tạo ra một mảng array1 gồm 12 byte, sau đó gán các giá trị {5,
13, -7} vào các vị trí trong mảng array1 Ví dụ 3: li $v0, 5
Gọi syscall để đọc một số nguyên từ bán phím và lưu vào syscall thanh ghi $v0
Ý nghĩa của chương trình này là yêu cầu user nhập từ bàn phím một số nguyên và lưu giá trị đó
vào thanh ghi v0 Ví dụ 4: .data
string1: .asciiz ‘’Print this. \n’’ Khai báo một chuỗi .text main: li $v0, 4
Gọi syscall để in một chuỗi ra màn hình hiển thị la $a0, string1
Load địa chỉ của chuỗi string1 vào thanh ghi $a0 syscall
Ý nghĩa của chương trình này là in ra màn hình một chuỗi “Print this.” với ký tự xuống dòng (\n)
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:
a) Khai báo và xuất ra cửa sổ I/O 2 chuỗi có giá trị như sau: -
Chuỗi 1: Chao ban! Ban la sinh vien nam thu may?
- Chuỗi 2: Hihi, minh la sinh vien nam thu 1 ^-^ lOMoAR cPSD| 59285474
b) Biểu diễn của 2 chuỗi trên dưới bộ nhớ là gì? Biểu diễn của 2 chuỗi trên dưới bộ nhớ là chuoi1, chuoi2
c) Xuất ra lại đúng chuỗi đã nhập Ví dụ: Nhap: Truong Dai hoc Cong nghe Thong tin Xuất:
Truong Dai hoc Cong nghe Thong tin
d) Nhập vào 2 số nguyên sau đó xuất tổng của 2 số nguyên này lOMoAR cPSD| 59285474