彙編指令
機器指令
mov ax,0123
b8 23 01
mov ax,ds:[0123]
a1 23 01
push ds:[0123]
ff 36 23 01
可以看到,在一般的彙編指令中,彙編指令中的idata(立即數),不論它是表示乙個資料還是記憶體單元的偏移位址,都會在對應的機器指令**現
8086cpu的轉移指令分為以下幾類
操作符offset的功能是取得標號的偏移位址(相對於當前段位址)
例子:
assume cs:codesg
codesg segment
start: mov ax,offset start;相當於mov ax,0 (cs:offset start)
s: mov ax,offset s ;相當於mov ax,3 (cs:offset s)
codesg ends
end start
jmp為無條件轉移,可以只修改ip,也可以同時修改cs和ip,同時jmp指令需要給出兩種資訊:
依據位移進行轉移的jmp指令
jmp short 標號**移到標號處執行指令)
這種格式的jmp指令實現的是段內短轉移,它對ip的修改範圍為**-128~127**,也就是說它向前轉移時可以最多越過128個位元組,向後轉移可以最多越過127個位元組
例子:
assume cs:codesg
codesg segment
start: mov ax,0
jmp short s
add ax,1
s: inc ax
codesg ends
end start
實際上指令jmp short 標號
的功能為(ip)=(ip)+8位位移
jmp near ptr 標號
這個指令實現的是段內近轉移,即(ip)=(ip)+16位位移
轉移的目的位址在指令中的jmp指令
jmp far ptr 標號
實現的是段間轉移,又稱為遠轉移
例子:
assume cs:codesg
codesg segment
start: mov ax,0
mov bx,0
jmp far ptr s
db 256 dup(0)
s: add ax,1
inc ax
codesg ends
end start
轉移位址在暫存器中的jmp指令jmp 16位暫存器
功能:(ip)= (16位暫存器)
轉移位址在記憶體中的jmp指令
jmp word ptr 記憶體單元位址(段內轉移)
例子:
mov ax,0123h
mov ds:[0],ax
jmp word ptr ds:[0]
jmp dword ptr 記憶體單元位址(段內轉移)
例子:
mov ax,0123h
mov ds:[0],ax
mov word ptr ds:[2],0
jmp dword ptr ds:[0]
mov ax,0123h
mov ds:[0],ax
mov word ptr [bx+2],0
jmp dword ptr [bx]
jcxz指令為有條件轉移指令,所有的有條件轉移指令都是短轉移,在對應的機器碼中包含轉移的位移,而不是目的位址。對ip的修改範圍都為**-128~127**,一般的有條件轉移指令看的都是cx暫存器,例如loop指令
jcxz 標號 (如果(cx)=0,則轉移到標號初執行)
jcxz實際的指令操作:
當(cx)=0時,什麼也不做(程式向下執行)
其實也可以理解為
if((cx)==0)
jmp short 標號
loop指令為迴圈指令,所有的迴圈指令都是短轉移,在對應的機器碼中包含轉移的位移,而不是目的位址。對ip的修改範圍都為**-128~127**
loop 標號
loop實際的指令操作:
當(cx)=0時,什麼也不做(程式向下執行)
其實也可以理解為
(cx)--;
if((cx)!=0)
jmp short 標號
8086彙編筆記(0)
seg variable or lable 回送變數或標號的段位址.若oper one是data seg資料段中的乙個變數,下面語句取得data seg段首位址 mov ds seg oper one 等價於 mov ax data seg mov ds axoffset variable or l...
8086彙編學習筆記 0
mov ax,bx 將bx中的內容送到ax中 movax,ds address 將ds address所指向的資料送入ax中 乙個字,即兩個位元組。如果只要傳輸乙個位元組可以使用暫存器的高八位 ah 或者底八位 al 進行 movds address ax 將ax中的資料 乙個字單位 送出ds ad...
8086彙編學習筆記1 基礎
1.什麼是組合語言 彙編指令是各種cpu提供的機器指令的助記符集合。cpu只認識0和1組成的機器指令,但是使用機器指令去編寫的程式難於書寫和閱讀,所以採用彙編,彙編只是機器指令的另一種表示方法。編寫好匯程式設計序,還需要彙編編譯器將彙編翻譯成機器指令,這樣cpu才能識別與執行。機器指令 100010...