8086指令系統(tǒng)---控制轉(zhuǎn)移指令(一)
?、?無條件轉(zhuǎn)移
JMP 跳轉(zhuǎn)
⑵ 條件轉(zhuǎn)移
JZ/JNZ 結(jié)果為零/不為零則轉(zhuǎn)移
JS/JNS 結(jié)果為負(fù)/為正則轉(zhuǎn)移
JO/JNO 溢出/不溢出則轉(zhuǎn)移
JP/JNP 奇偶位為1/為0則轉(zhuǎn)移
JB/JNB 低于/不低于則轉(zhuǎn)移
JBE/JNBE 低于等于/高于則轉(zhuǎn)移
JL/JNL 小于/不小于則轉(zhuǎn)移
JLE/JNLE 小于等于/大于則轉(zhuǎn)移
JCXZ CX為零則轉(zhuǎn)移
⑶ 循環(huán)指令
LOOP 循環(huán)
LOOPZ/LOOPE 為零/相等時(shí)循環(huán)
LOOPNZ/LOOPNE 不為零/不等時(shí)循環(huán)
⑷ 子程序調(diào)用與返回
CALL 調(diào)用
RET 返回
⑸ 中斷及中斷返回
INT 中斷
INTO 溢出則中斷
IRET 中斷返回
程序中指令的執(zhí)行順序是由CS:IP來決定的,程序轉(zhuǎn)移類指令可改變IP或CS、IP的內(nèi)容,從而控制指令的執(zhí)行順序,實(shí)現(xiàn)指令轉(zhuǎn)移、程序調(diào)用等功能。
JMP 跳轉(zhuǎn)
⑵ 條件轉(zhuǎn)移
JZ/JNZ 結(jié)果為零/不為零則轉(zhuǎn)移
JS/JNS 結(jié)果為負(fù)/為正則轉(zhuǎn)移
JO/JNO 溢出/不溢出則轉(zhuǎn)移
JP/JNP 奇偶位為1/為0則轉(zhuǎn)移
JB/JNB 低于/不低于則轉(zhuǎn)移
JBE/JNBE 低于等于/高于則轉(zhuǎn)移
JL/JNL 小于/不小于則轉(zhuǎn)移
JLE/JNLE 小于等于/大于則轉(zhuǎn)移
JCXZ CX為零則轉(zhuǎn)移
⑶ 循環(huán)指令
LOOP 循環(huán)
LOOPZ/LOOPE 為零/相等時(shí)循環(huán)
LOOPNZ/LOOPNE 不為零/不等時(shí)循環(huán)
⑷ 子程序調(diào)用與返回
CALL 調(diào)用
RET 返回
⑸ 中斷及中斷返回
INT 中斷
INTO 溢出則中斷
IRET 中斷返回
程序中指令的執(zhí)行順序是由CS:IP來決定的,程序轉(zhuǎn)移類指令可改變IP或CS、IP的內(nèi)容,從而控制指令的執(zhí)行順序,實(shí)現(xiàn)指令轉(zhuǎn)移、程序調(diào)用等功能。
1 無條件轉(zhuǎn)移指令
JMP指令控制程序無條件地跳轉(zhuǎn)到目的單元,使用JMP指令可有三種格式:
?、?JMP SHORT label 短轉(zhuǎn)移(short jump)
?、?JMP NEAR PTR label 近轉(zhuǎn)移(near jump)
● JMP label 直接轉(zhuǎn)移(direct jump)
● JMP reg 寄存器間接轉(zhuǎn)移(register indirect jump)
● JMP WORD PTR OPR 存儲(chǔ)器間接轉(zhuǎn)移(memory indirect jump)
?、?JMP FAR PTR label 遠(yuǎn)轉(zhuǎn)移(far jump)
短轉(zhuǎn)移的目標(biāo)地址(或稱轉(zhuǎn)向地址)相對(duì)于當(dāng)前IP值的位移量在-128至+127字節(jié)之間,當(dāng)前IP值是指JMP指令的下一條指令的地址(如圖3.11所示)。對(duì)短轉(zhuǎn)移JMP,機(jī)器指令的第一個(gè)字節(jié)為操作碼EB,第二個(gè)字節(jié)為位移量00~FF,這是一個(gè)帶符號(hào)的補(bǔ)碼數(shù)。轉(zhuǎn)向地址的計(jì)算方法為:(IP)當(dāng)前+8位位移量。操作符SHORT指示匯編程序?qū)MP指令匯編成一個(gè)2字節(jié)指令。
?、?JMP SHORT label 短轉(zhuǎn)移(short jump)
執(zhí)行操作:(IP) ← (IP)當(dāng)前+8位位移量
短轉(zhuǎn)移示意圖
?、?JMP NEAR PTR label 近轉(zhuǎn)移(near jump)
近轉(zhuǎn)移是JMP指令的缺省格式,可以寫為"JMP label"。它可在當(dāng)前代碼段內(nèi)轉(zhuǎn)移,機(jī)器指令的操作碼是E9,位移量是16位的帶符號(hào)補(bǔ)碼數(shù)。指令中的轉(zhuǎn)向地址可以是直接尋址方式、寄存器尋址方式、寄存器間接方式和存儲(chǔ)器尋址方式。
● JMP label 直接轉(zhuǎn)移(direct jump)
執(zhí)行操作:(IP) ← OFFSET label = (IP)當(dāng)前+16位位移量
轉(zhuǎn)移的目標(biāo)地址在指令中可直接使用符號(hào)地址,由于位移量為16位,它的轉(zhuǎn)移范圍應(yīng)是-32768至+32767,也就是說,近轉(zhuǎn)移指令可以轉(zhuǎn)移到段內(nèi)的任一個(gè)位置。
● JMP reg 寄存器間接轉(zhuǎn)移(register indirect jump)
執(zhí)行操作:(IP) ← (reg)
轉(zhuǎn)移的目標(biāo)地址在寄存器中,例如指令"JMP BX"執(zhí)行的結(jié)果,將BX的內(nèi)容送給IP。
● JMP WORD PTR OPR 存儲(chǔ)器間接轉(zhuǎn)移(memory indirect jump)
執(zhí)行操作:(IP) ← (PA+1,PA)
存儲(chǔ)器的物理地址PA由指令中的尋址方式確定,JMP指令執(zhí)行的結(jié)果,把PA單元的字內(nèi)容送到IP寄存器中。例如"JMP WORD PTR [DI]",物理地址PA = (DS)×24+(DI),指令執(zhí)行的結(jié)果是(IP)= (PA+1,PA)。
?、?JMP FAR PTR label 遠(yuǎn)轉(zhuǎn)移(far jump)
執(zhí)行操作:(IP) ← label的段內(nèi)偏移地址
(CS) ← label所在段的段地址
遠(yuǎn)轉(zhuǎn)移實(shí)現(xiàn)的是段間的跳轉(zhuǎn),即從當(dāng)前代碼段跳轉(zhuǎn)到另一個(gè)代碼段中,這意味著指令執(zhí)行后,不僅要改變IP的值,CS也會(huì)得到一個(gè)新的段地址。在匯編指令中,遠(yuǎn)轉(zhuǎn)移的目標(biāo)地址也可以使用除立即尋址方式外的任何尋址方式來表示。
?、?JMP SHORT label 短轉(zhuǎn)移(short jump)
執(zhí)行操作:(IP) ← (IP)當(dāng)前+8位位移量
短轉(zhuǎn)移示意圖
?、?JMP NEAR PTR label 近轉(zhuǎn)移(near jump)
近轉(zhuǎn)移是JMP指令的缺省格式,可以寫為"JMP label"。它可在當(dāng)前代碼段內(nèi)轉(zhuǎn)移,機(jī)器指令的操作碼是E9,位移量是16位的帶符號(hào)補(bǔ)碼數(shù)。指令中的轉(zhuǎn)向地址可以是直接尋址方式、寄存器尋址方式、寄存器間接方式和存儲(chǔ)器尋址方式。
● JMP label 直接轉(zhuǎn)移(direct jump)
執(zhí)行操作:(IP) ← OFFSET label = (IP)當(dāng)前+16位位移量
轉(zhuǎn)移的目標(biāo)地址在指令中可直接使用符號(hào)地址,由于位移量為16位,它的轉(zhuǎn)移范圍應(yīng)是-32768至+32767,也就是說,近轉(zhuǎn)移指令可以轉(zhuǎn)移到段內(nèi)的任一個(gè)位置。
● JMP reg 寄存器間接轉(zhuǎn)移(register indirect jump)
執(zhí)行操作:(IP) ← (reg)
轉(zhuǎn)移的目標(biāo)地址在寄存器中,例如指令"JMP BX"執(zhí)行的結(jié)果,將BX的內(nèi)容送給IP。
● JMP WORD PTR OPR 存儲(chǔ)器間接轉(zhuǎn)移(memory indirect jump)
執(zhí)行操作:(IP) ← (PA+1,PA)
存儲(chǔ)器的物理地址PA由指令中的尋址方式確定,JMP指令執(zhí)行的結(jié)果,把PA單元的字內(nèi)容送到IP寄存器中。例如"JMP WORD PTR [DI]",物理地址PA = (DS)×24+(DI),指令執(zhí)行的結(jié)果是(IP)= (PA+1,PA)。
?、?JMP FAR PTR label 遠(yuǎn)轉(zhuǎn)移(far jump)
執(zhí)行操作:(IP) ← label的段內(nèi)偏移地址
(CS) ← label所在段的段地址
遠(yuǎn)轉(zhuǎn)移實(shí)現(xiàn)的是段間的跳轉(zhuǎn),即從當(dāng)前代碼段跳轉(zhuǎn)到另一個(gè)代碼段中,這意味著指令執(zhí)行后,不僅要改變IP的值,CS也會(huì)得到一個(gè)新的段地址。在匯編指令中,遠(yuǎn)轉(zhuǎn)移的目標(biāo)地址也可以使用除立即尋址方式外的任何尋址方式來表示。
關(guān)鍵詞:
8086指令系統(tǒng)控制轉(zhuǎn)移指
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號(hào)放大器
評(píng)論