8086彙編筆記02

2021-10-11 23:58:58 字數 2424 閱讀 1055

彙編指令

機器指令

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...