You are on page 1of 4

BÀI TẬP CHƯƠNG 2 – Bài tập 4

Kiến trúc tập lệnh


Họ và Tên SV: Hoàng Giang Khang

MSSV: 23520685

Lớp: IT006.O23

Lưu tên file: MSSV-BaiTap4.docx

Lưu ý: Các mảng sử dụng trong chương này đều là mảng mà mỗi phần tử chứa 1 word/từ nhớ,
mỗi từ nhớ chứa 4 bytes.

Bài 4.
Các câu hỏi dưới đây liên quan đến mở rộng dấu và tràn.
Thanh ghi $s0 và $s1 lưu các giá trị như bảng bên dưới. Hãy trả lời các câu hỏi liên quan đến
lệnh hợp ngữ MIPS bên dưới và tính toán các kết quả.

a. $s0 = 0x70000000; $s1 = 0x0FFFFFFF


b. $s0 = 0x40000000; $s1 = 0x40000000
Ghi chú: Khi 0x trước một giá trị thì giá trị đó đang biểu diễn trong hệ 16

4.1
Tính kết quả của $t0 sau khi thực hiện câu lệnh: add $t0, $s0, $s1
Trả lời:
a) $s0 = 0111 0000 0000 0000 0000 0000 0000 0000
$s1 = 0000 1111 1111 1111 1111 1111 1111 1111
$t0 = 0111 1111 1111 1111 1111 1111 1111 1111 = 0x7FFFFFFF
b) $s0 = 0100 0000 0000 0000 0000 0000 0000 0000
$s1 = 0100 0000 0000 0000 0000 0000 0000 0000
$t0= 1000 0000 0000 0000 0000 0000 0000 0000 = 0x80000000
Kết quả trong thanh ghi $t0 đúng như mong muốn của phép toán chưa? Có xảy ra tràn không?
Trả lời:
a) Kết quả thanh ghi $t0 đúng như mong muốn của phép toán và không xảy ra tràn
b) Kết quả thanh ghi $t0 đúng như mong muốn của phép toán và có xảy ra tràn số
4.2
Tính kết quả của $t0 sau khi thực hiện câu lệnh: sub $t0, $s0, $s1
Trả lời:
a) $s0 = 0111 0000 0000 0000 0000 0000 0000 0000
$s1 = 0000 1111 1111 1111 1111 1111 1111 1111
$t0 = 0110 0000 0000 0000 0000 0000 0000 0001 = 0x60000001
c) $s0 = 0100 0000 0000 0000 0000 0000 0000 0000
$s1 = 0100 0000 0000 0000 0000 0000 0000 0000
$t0 = 0000 0000 0000 0000 0000 0000 0000 0000 = 0x00000000
Kết quả trong thanh ghi $t0 đúng như mong muốn của phép toán chưa? Có xảy ra tràn không?
Trả lời:
a) Kết quả thanh ghi $t0 đúng như mong muốn của phép toán và không xảy ra
tràn
b) Kết quả thanh ghi $t0 đúng như mong muốn của phép toán và không xảy ra
tràn

4.3
Tính kết quả của $t0 sau khi chạy chuỗi lệnh:
add $t0, $s0, $s1
add $t0, $t0, $s0
Trả lời:
a) $s0 = 0111 0000 0000 0000 0000 0000 0000 0000
$s1 = 0000 1111 1111 1111 1111 1111 1111 1111
$t0 = 0111 1111 1111 1111 1111 1111 1111 1111

$t0 = 0111 1111 1111 1111 1111 1111 1111 1111


$s0 = 0111 0000 0000 0000 0000 0000 0000 0000
$t0 = 1110 1111 1111 1111 1111 1111 1111 1111  0xEFFFFFFF
b) $s0 = 0100 0000 0000 0000 0000 0000 0000 0000
$s1 = 0100 0000 0000 0000 0000 0000 0000 0000
$t0= 1000 0000 0000 0000 0000 0000 0000 0000

$s0 = 0100 0000 0000 0000 0000 0000 0000 0000


$t0= 1000 0000 0000 0000 0000 0000 0000 0000
$t0 = 1100 0000 0000 0000 0000 0000 0000 0000 0000 -> 0xC00000000
Kết quả trong thanh ghi $t0 đúng như mong muốn của phép toán chưa? Có xảy ra tràn không?
a) Kết quả trong thanh ghi $t0 đúng như mong muốn của phép toán và có xảy ra tràn
b) Kết quả trong thanh ghi $t0 đúng như mong muốn của phép toán và có xảy ra tràn

Bài 5.
Chuyển các mã máy sau sang dạng hợp ngữ MIPS

5.1 & 5.2. Từ các giá trị binary ở bảng trên, hãy xác định chuỗi nhị phân thể hiện là lệnh gì?
Xác định các lệnh trên là thuộc kiểu lệnh gì (I-type, R-type, J-type).
Chú ý: Tham khảo “MIPS reference data” (trang 2, sách tham khảo) để dò tìm opcode của các
lệnh.
Trả lời:
a) 101011 10000 01011 0000 0000 0000 0100
Op = 2bhex  lệnh sw $t3,4($s0)
Thuộc I-type
b) 100011 01000 01000 0000 0000 0100 0000
Op = 23(hex)  lệnh lw $t0,64($t0)
Thuộc I-type
5.3
Nếu chuỗi nhị phân trên chỉ là dữ liệu đơn thuần. Hãy chuyển chúng sang dạng mã HEX.
Trả lời:
a) 1010 1110 0000 1011 0000 0000 0000 0100
 0xAE0B0004
b) 1000 1101 0000 1000 0000 0000 0100 0000
 0x8D080040

5.4 & 5.5


Hãy dịch các lệnh sau sang dạng mã máy
a) add $t0, $t0, $zero
Trả lời: R-type
Op Rs Rt Rd Shamt Funct
000000 01000 00000 01000 00000 010000
0000 0001 0000 0000 0100 0000 0010 0000  0x01004020
b) lw $t1, 4($s3)
Trả lời: I-type
Op Rs Rt Immediate
100011 10011 01001 0000 0000 0000 0100
1000 1110 0110 1001 0000 0000 0000 0100  0x8E690004
5.6 Hãy trình bày dưới dạng mã HEX của các trường opcode, Rs và Rt của các lệnh trên.
Đối với các lệnh kiểu R, hãy trình bày dưới dạng mã HEX của các trường Rd và funct.
Đối với các lệnh kiểu I, hãy trình bày dưới dạng mã HEX trường trực tiếp (immediate field).
a) Op: 0x0
Rs: 0x08
Rt: 0x0
Rd 0x08
Shamt: 0x0
Funct: 0x20
b) Op: 0x23
Rs: 0x13
Rt: 0x09
Immediate: 0x0004

Bài 6.
Cho giá trị của các thanh ghi sau:

6.1 Hãy cho biết giá trị của thanh ghi $t2 sau khi chạy các lệnh sau:
sll $t2, $t0, 4
or $t2, $t2, $t1
a) $t0 = 0101 0101 0101 0101 0101 0101 0101 0101
$t2 = 0101 0101 0101 0101 0101 0101 0101 0000
$t1 = 0001 0010 0011 0100 0101 0110 0111 1000
$t2 = 0101 0111 0111 0101 0101 0111 0111 1000
 0x57755778
b) $t0 = 1011 1110 1010 1101 1111 1110 1110 1101
$t2 = 1110 1010 1101 1111 1110 1110 1101 0000
$t1 = 1101 1110 1010 1101 1111 1010 1101 1110
$t2 = 1111 1110 1111 1111 1111 1110 1101 1110
 0xFEFFFEDE
6.2 Hãy cho biết giá trị của thanh ghi $t2 sau khi chạy các lệnh sau:
srl $t2, $t0, 3
andi $t2, $t2, 0xFFEF
Trả lời:
a) $t0 = 0101 0101 0101 0101 0101 0101 0101 0101
$t2 = 0000 1010 1010 1010 1010 1010 1010 1010
0xFFEF = 0000 0000 0000 0000 1111 1111 1111 1111

$t2= 0000 0000 0000 0000 1010 1010 1010 1010


 0x0000AAAA
b) $t0 = 1011 1110 1010 1101 1111 1110 1110 1101
$t2 = 0001 0111 1101 0101 1011 1111 1101 1101
0xFFEF = 0000 0000 0000 0000 1111 1111 1111 1111
$t2 = 0000 0000 0000 0000 1011 1111 1100 1101
 0x0000BFCD

You might also like