X86組合語言中的registers相關

2021-07-03 14:26:07 字數 2361 閱讀 9529

通常用於存放一般性的資料;

cpu從何處執行是由暫存器決定的, 設cs的value = m, ip的value = n , cpu將從m*16 + n 記憶體單元開始執行;(因為cpu的位址加法器採用 實體地址 = 段位址*16 + 偏移位址 來表示實體地址)

attention: jmp 可以修改cs和ip的值;

通常用來存放要訪問資料的段位址;

mov bx,1000h

mov ds,bx

mov al,[0]

將1000:0 記憶體單元中的 資料copy到 al

bx用於存放偏移位址ea (effective addr), 段基址在ds中的記憶體單元;

如mov [bx] ,ax

將ax中的內容copy到 ds:bx (ds*16+bx)記憶體單元中。

a1)ea-effective address 有效位址==偏移位址;

a2)sa-segment address 段基址;

a3)debug 和 彙編編譯器masm對指令的不同處理

對於mob bl,[1] ; mov cl,[2] ; debug將[1] 解釋為乙個記憶體單元 即將[idata]解釋為[idata]記憶體單元的偏移位址,段基位址在ds中,而編譯器將[1]解釋為1, 即將[idata]解釋為idata立即數了;

mov ax, [bp + di ]

bx+si ;

bx+di ;

bp+si ;

bp + di;

mov ax,[bp+si+idata] (基址變址相對定址)

mov ax,[bx+si+8] 段位址預設在ds中;

mov ax,[bp+si + 8] 段位址預設在ss中;

當然你也可以顯性指定,如

mov ax,es:[bx]
mov word ptr ds:[0],1 ; word ptr指明了訪問的記憶體單元是乙個字單元

mov byteptr ds:[0],1 ; byte ptr指明了訪問的記憶體單元是一位元組字單元

任意時刻, ss:sp指向棧頂元素。push和pop指令時,cpu從ss和sp中得到棧頂元素;

pushf和popf的功能是向標誌暫存器的壓棧和從標誌暫存器出棧;

什麼是標誌暫存器, 其中儲存的資訊就是程式狀態字psw(program status word)

cf==carry flag (進製標誌) 前一條指令執行結果產生的進製

pf==parity flag (奇偶標誌位)前一條指令執行結果 1 的個數是否為偶數,偶數為1,否則為0;

af==

zf==zero flag(零標誌位) 前一條指令執行結果是否為0,為0則zf=1, 否則為0;

sf=sign flag (符號標誌) 如果為負, sf=1,否則為0;

tf if

df of==overflow flag 溢位標誌

movsb, 功能執行movsb指令相當於進行以下幾步:

movsw ,根據標誌暫存器df位的值,將si和di +2 或 -2

mov ax,data

mov ds,ax

mov si,0 ; ds:si 指向data:0

mov es,ax

mov di,16 ; es:di 指向data:0010

mov cx,16 ; cx=16 ,rep迴圈16次

cld ;設定df=0,

rep mobsb

cld: 將標誌暫存器的df位置0

std: 將標誌暫存器的df位置1

取偏移位址

assume cs:codesg

codesg segment

start: mov ax, offset start ; 相當於mov ax,0

s:mov ax, offset s ;相當於mov ax,3

上述指令涉及的暫存器:段暫存器ds和es、變址暫存器si和di、累加器ax、計數器cx

涉及的標誌位:df、af、cf、of、pf、sf、zf

組合語言 基於X86 學習筆記

1.機器語言 machine language 是一種數字語言,專門設計成唄計算機處理器 cpu 理解。所有x86處理器都理解的共同機器語言。2.組合語言 assembly language 包含助記符書寫的語言。3.組合語言與機器語言是一一對應 one to one 的關係。4.彙編器 assem...

x86組合語言指令集

一 資料傳輸指令 8088 彙編跳轉 cmp a,b 比較a與b mov a,b 把b的值送給a ret 返回主程式 nop 無作用,英文 no operation 的簡寫,意思是 do nothing call 呼叫子程式 je 或jz 若相等則跳 jne或jnz 若不相等則跳 jmp 無條件跳 ...

搭建x86組合語言學習環境

masm中包含了8086彙編程式設計中要用到的幾個必需的工具 masm.exe彙編 link.exe連線 debug.exe除錯,edit.com和edlin.com是兩個編輯程式。如下 將這個資料夾拷貝到你習慣的工作盤 我用d盤作工作盤,拷貝後,這些檔案在d masm中 2.安裝dosbox 雙擊...