This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Hỏi/ Thắc mắc Về kiến trúc máy tính

Chào các ace và các bạn, mình đang học kiến trúc máy tính mà có bài tập làm hoài chưa hiểu mong mọi người chỉ giáo, Xin cảm ơn.
Bài tập như sau:
Giá trị thanh ghi $t2 sẽ là bao nhiêu sau khi chạy xong câu lệnh này?
Ta có:
$t0 = 1111 1111 1111 1111 1111 1111 1011 1111
$t1 = 1111 1111 1111 1111 1111 0000 1100 0000

slt $t2, $t0, $t1 (1)
beq $t2, $zero, ELSE (2)
add $t2, $t2, $t0 (3)
J DONE (4)
ELSE: add $t2, $t2, $t1 (5)
DONE:
P/S: Mình được thầy giáo gợi ý là: $t0 = -65 và $t1 = -3904 nhưng cũng không được hiểu là tại sao lại có giá trị như vậy, mong mọi người chỉ giúp, xin cảm ơn.
 

nhoxboy2010

Rìu Sắt Đôi
Do bit MSB của 2 thanh ghi t0 và t1 là 1 nên sẽ là số âm. Bạn dùng pp bù 2 để tính 2 giá trị của thanh ghi thì sẽ lần lượt ra $t0 = -65 và $t1 = -3904. Bạn tham khảo thêm tại đây https://vi.wikipedia.org/wiki/Bù_2 để tính bù 2.

Ở (1), vì t0 > t1 nên t2 =0.
(2) Sẽ so sánh giá trị trong thanh ghi t2 với thanh ghi zero ( luôn là 0). Nếu bằng nhau thì nhảy tới nhãn ELSE, ko thì thực hiện lệnh 3.
Do giá trị 2 thanh ghi bằng nhau nên sẽ nhảy xuống ELSE thực hiện lệnh (5)
Tại (5), cộng giá trị 2 thanh ghi t2 và t1 rồi sau đó lưu giá trị vào t2. Do t2 bằng 0 nên giá trị cuối cùng của thanh ghi t2 sẽ là giá trị của t1.
 

alonsogaylord

Búa Gỗ
Vote
 
Cảm ơn bạn đã hướng dẫn.