Re: [理工] 計算機組織 資料轉移指令

作者: A4P8T6X9 (殘廢的名偵探)   2014-07-09 11:23:08
※ 引述《lineup730 (lineup)》之銘言:
: 想要請問以下這個練習
:

: 1.平時我們儲存在暫存器中的資料,不是應該是一個"值(value)"嗎? 為什麼這題題目
: 敘述是說"the register $t1 contains address 0x1000 0000"暫存器包含一個記憶
: 體位址?
存的東西會因為解釋不同而代表不同意義,比方說也可以 add $t3 $t1 $t1,則 $t1 中
的 0x1000 0000 就變成值了,而在本題的使用方法則當作 address 用。
: 2.第一小題題目中,最後一段提到 Assume that the memory location pointed to $t2
: is initializes to 0xFFFF FFFF
: 小弟不太懂題目這裡說的,將$t2初始化成 0xFFFF FFFF是什麼意思?題目一開始不是
: 有說$t2的位址是 0x1000 0010了嗎? 還是這個初始化的意思就是把 $t2改成
: 0xFFFF FFFF?
這個的意思是,把 $t2 中的記憶體位址指向之內容改成 0xFFFF FFFF,換句話說就是
0x1000 0010 中存 0xFFFF FFFF。
: 3.另外書上有對於lb、sb 這兩個指令的說明
: lb:(load byte)指令會從記憶體載入一個位元組資料至所指定暫存器最右邊的位元組,
: 而暫存器左邊的bits則視記憶體載入的這個位元組資料是正數還是負數,若正數則
: 填0,若為負數則填1。
: sb:(store byte)指令會將所指定暫存器最右邊的位元組存入記憶體。
: 關於以上這兩個指令的敘述,小弟看了許久還是不了解他的意思!
: 想要麻煩大大們,希望可以指導小弟 第一小題(a、b)該如何解?(希望有詳細解題步驟)
首先,記憶體是 byte 指向的,也就是說 1000 0000 -> 12
1000 0001 -> 34
1000 0002 -> 56
1000 0003 -> 78
所以,從 1000 0000 這個位址取一個 byte 相當於拿到 12,然後把它存到 $t0 的最右邊
之後把 $t0 中的值,換句話說,就是 0000 0012,存到 $t2 指向之位址,(a)中是 sw 也
就是存一個 word,把整個 0000 0012 存進去,所以答案就是 0000 0012。
而 (b) 中,是存一個 byte 到指定的 address,根據上面的記憶體指向,$t2 所指向的其
實是,第一個 FF,相當於把 $t0 中之最右邊的 byte (12),存到 第一個 FF上,就是答
案所展現的樣子。
作者: hot4894 (hot4894)   2014-07-09 13:16:00
請問一下為什麼(2)a是FFFFFF80阿不是直接把00000080存進去嗎?
作者: john35452 (小杰)   2014-07-09 16:53:00
80在二進位中是負數,所以要作sign extension注意在這邊填的80是十六進位,不是十進位
作者: hot4894 (hot4894)   2014-07-09 23:55:00
喔喔懂了感謝~

Links booklink

Contact Us: admin [ a t ] ucptt.com