彙編筆記 第八章

2022-07-23 18:15:20 字數 1869 閱讀 5235

title: 彙編筆記_第八章

date: 2018-12-27 20:04:33

tags:

組合語言中用三種概念來表達資料的位置:立即數(idata)暫存器段位址(sa)和偏移位址(ea)

定址方式

含義名稱

常用格式舉例

[idata]

sa=(ds);ea=idata

直接定址

[idata]

[bx]

[si]

[di]

[bp]

sa=(ds);ea=(bx)

sa=(ds);ea=(si)

sa=(ds);ea=(di)

sa=(ss);ea=(bp)

暫存器間接定址

[bx]

[bx+idata]

[si+idata]

[di+idata]

[bp+idata]

sa=(ds);ea=(bx)+idata

sa=(ds);ea=(si)+idata

sa=(ds);ea=(di)+idata

sa=(ss);ea=(bp)+idata

暫存器相對定址

用於結構體:[bx].idata;

用於陣列:idata[si],idata[di];

用於二維陣列:[bx][idata]

[bx+si]

[bx+di]

[bp+si]

[bp+di]

sa=(ds);ea=(bx)+(si)

sa=(ds);ea=(bx)+(di)

sa=(ss);ea=(bp)+(si)

sa=(ss);ea=(bp)+(di)

基址變址定址

用於二維陣列:[bx][si]

[bx+si+idata]

[bx+di+idata]

[bp+si+idata]

[bp+di+idata]

sa=(ds);ea=(bx)+(si)+idata

sa=(ds);ea=(bx)+(di)+idata

sa=(ss);ea=(bp)+(si)+idata

sa=(ss);ea=(bp)+(di)+idata

相對基址變址定址

用於**(結構)中的資料項:[bx].idata[si]

用於二位陣列:idata[bx][si]

暫存器指明

mov al,ds:[0]   //按位元組操作

mov ax,ds:[0] //按字操作

用操作符x ptr指明(x=word/byte)
add word ptr [bx],2     //按字操作

mov byte ptr ds:[0],1 //按位元組操作

其他方式

有些指令預設是訪問字單元還是位元組單元,例如:push 指令只進行字操作;

一般來說,可以用[bx+idata+si]的方式來訪問結構體中的資料;

dd是用來定義dword(double word雙字)型資料的;

dup的使用格式:

db 重複的次數 dup (重複的位元組型資料)

dw 重複的次數 dup (重複的字型資料)

dd 重複的次數 dup (重複的雙字資料)

eg:db 3 dup (0,1,2)

相當於:

db 0,1,2,0,1,2,0,1,2

(end)

第八章(筆記)

能在 中進行記憶體單元的定址的暫存器只有4個,分別是bx si di bp 其中bx bp 是基址,bx對應的段位址是ds,bp對應的段位址是ss si di 是變址,單獨使用時段位址是ds,組合使用段位址是跟隨組合的基址對應的段位址 中進行記憶體單元定址彙總 si di bx bp 常量 si 常...

第八章 指標 第八章 指標

1 什麼是位址 include using namespace std int main 11 在堆中建立對像 我們既然可以在堆中儲存變數,那麼也就可以儲存對像,我們可以將對像儲存堆中,然後通過指標來訪問它 include using namespace std class human 14 在建構...

c primer Plus第八章筆記

該書應從8章之後開始學習 現在開始第8章 p199 字元輸入輸出 緩衝區 是乙個存放內容的臨時儲存區域 為什麼要設定緩衝區 一 將若干個字元作為乙個塊進行傳輸比逐個傳送這些字元耗時少。二 如果輸入了乙個錯的字元,可以用鍵盤的更正功能進行修改。當按下回車鍵的時候就傳送輸入的字元。但是,互動性的程式需要...