Re: [問題] 組語的問題…
我要賭本!! 提到:
> 是這樣的,我看到有一段話是這樣的:
>
> all JUMP and CALL target address are based on 16-bit word address,
> so you need to shift your 0xf70 by one to the right.
>
> 可是他這邊並沒有解釋為什麼會因為這兩個指令是based on 16-bit的word address,
> 所以真正要讀入的位址必需要右旋1個bit。這邊指的16bit和右旋1bit有什麼關係?
> 下面是個例子:
>
> 0000 1111 0111 0000 ( 0xf70 ) -> 0000 0111 1011 1000 ( 0x07b8 )
>
> 我用的是AVR-GCC。CPU是ATmega128。
> 任何資訊都好。謝謝。 >_<"
我沒用過 ATmega128, 不過從你的問題看來, 我的猜想是:
1. 這個 cpu 的 JUMP 跟 CALL 的目的位址必須在 word boundary,
2. 這個 cpu 的 JUMP 跟 CALL 的目的位址是以 word 為單位計算。
(jump to address 12 要寫成 jump to word 6)
3. 這個 cpu 除了 JUMP, CALL 之外, 骨子裡似乎是以 byte 定址。
(也就是可以讀取任意 address 的 byte/word data)
建議你先看 cpu structure and programming manual, 把 cpu 架構
先了解一下再用組合語言。
--
* Origin: ★ 交通大學資訊科學系 BBS ★ <bbs.cis.nctu.edu.tw: 140.113.23.3>
Programming 近期熱門文章
PTT數位生活區 即時熱門文章