匯編小段存儲
『壹』 關於匯編語言存儲器的分段 一小段的首地址是啥段起始地址怎麼看出來16個位元組是一小段
8086CPU的內存定址方式是段地址*16+偏移地址的方式的方式 比如說00000H這個地址,他的段地址是0000H偏移地址是0000H。段地址0000h*16(10H)也就是00000H 加上偏移地址也是0000H就是00000H。一個段的空間最大是64KB 也就是偏移地址從0000H-FFFFH。有一點要注意:段地址*16必然是16的整數倍所以一個段的起始地址也應該是16的整數倍。但是好像並沒有一個小段 的說法,段的提出只是我們在編程中的一種安排,比如我要在一個段中存放10個位元組的數據,我們可以把123B0H-123B9H當作一個數據段,段地址為123BH,長度為10位元組。
『貳』 急急急!!!匯編語言裡面,代碼段裡面存儲的是什麼
代碼段裡面存儲的確實是指令
但是要告訴你的是,無論數據段,代碼段還是什麼段,用的都是同一個存儲空間,這個存儲空間由基址和偏移地址確定位置,每個位置存儲一個位元組,也就是2位16進制數。機器會給代碼段一個對應的首位置,然後你寫的代碼都會轉成2位16進制數存入其中。
比如說我有1到50的存儲空間,也就是50個位元組,你的數據段對應首址是5,那麼你在數據段中定義的數據會挨個存在5,6,7....中。如果你的代碼段對應首址是30,那麼你在代碼段中寫的一句指令「mov ax,bx」會轉成16進制碼(具體是什麼我就不知道了,我曾經試過,好像沒有十分准確的對應關系)存到30,31,32...的存儲空間中。
不知道這樣說你名不明白
『叄』 在ARM匯編編程中如何指定某段程序的存儲地址
在要指定代碼的存儲空間不是一件特別簡單的事情,尤其是你想為某個或某幾個函數指定具體的地址。
1,編譯器只有在最終的Link階段才會為代碼和數據分配內存地址,因此指定代碼段的地址一般是通過寫一個link腳本來進行的。Link階段時,編譯器的Linker會讀取你寫的Link腳本,並且按照腳本的規定給代碼分配地址。
2,根據ARM開發工具的不同,link腳本的語法和形式也有所不同。ARM MDK,ARM ADS,Eclips+GCC,Linux GCC, ARM Realview等開發工具都支持Link腳本。
如果你英文還可以,建議你直接找到開發工具的Help手冊去研究。如果你英語實在不行,也可以把開發工具名稱和你代碼的具體情況告訴我,我幫你看看。