lOMoARcPSD| 59285474
Lê Phan Thanh Bình – MSSV: 23520154
2.1 Sinh viên 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, sl, sltu, slu, syscall
add addi – add
immediate addu –
add unsigned
addiu – add immediate unsigned
sub – subtract subu –
subtract unsigned and
andi – and immediate
or nor lw – load word sw –
store word slt – set less than
sl – set less than
immediate sltu – set less
than unsigned
slu – set less than immediate unsigned
syscall – system calls
Cộng hai số
Cộng một số có dấu với một hằng số
Cộng hai số không dấu
Cộng một số không dấu với một hằng số Tr
hai số
Trừ hai số không dấu Phép
toán logic AND
Phép toán logic AND với một hằng số
Phép toán logic OR
Phép toán logic NOR
Tải một từ (word) từ bộ nhớ vào thanh ghi
Lưu một từ (word) từ thanh ghi vào bộ nh
So sánh hai số nhỏ hơn
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
dụ 2:
.data
lOMoARcPSD| 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
syscall
Gọi syscall để đọc một số nguyên từ bán phím và lưu vào
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 ^-^
lOMoARcPSD| 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 n Xuất:
Truong Dai hoc Cong nghe Thong n
d) Nhập vào 2 số nguyên sau đó xuất tng của 2 số nguyên này
lOMoARcPSD| 59285474

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 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