匯編指令對應(yīng)機(jī)器碼表
網(wǎng)上的信息都太亂了藻丢,索性整理了一下犁跪。分享一下成果
一胡岔、狀態(tài)寄存器
PSW(Program Flag)程序狀態(tài)字寄存器法希,是一個(gè)16位寄存器,由條件碼標(biāo)志(flag)和控制標(biāo)志構(gòu)成靶瘸,如下所示:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OF DF IF TF SF ZF AF PF CF
條件碼:
①OF(Overflow Flag)溢出標(biāo)志苫亦。溢出時(shí)為1,否則置0毛肋。
②SF(Sign Flag)符號標(biāo)志。結(jié)果為負(fù)時(shí)置1,否則置0.
③ZF(Zero Flag)零標(biāo)志屋剑,運(yùn)算結(jié)果為0時(shí)ZF位置1,否則置0.
④CF(Carry Flag)進(jìn)位標(biāo)志润匙,進(jìn)位時(shí)置1,否則置0.
⑤AF(Auxiliary carry Flag)輔助進(jìn)位標(biāo)志,記錄運(yùn)算時(shí)第3位(半個(gè)節(jié))產(chǎn)生的進(jìn)位置唉匾。
有進(jìn)位時(shí)1,否則置0.
⑥PF(Parity Flag)奇偶標(biāo)志孕讳。結(jié)果操作數(shù)中1的個(gè)數(shù)為偶數(shù)時(shí)置1,否則置0.
控制標(biāo)志位:
⑦DF(Direction Flag)方向標(biāo)志,在串處理指令中控制信息的方向巍膘。
⑧IF(Interrupt Flag)中斷標(biāo)志厂财。
⑨TF(Trap Flag)陷井標(biāo)志。
二峡懈、 直接標(biāo)志轉(zhuǎn)移(8位尋址)
指令格式 | 機(jī)器碼 | 測試條件 | 如...則轉(zhuǎn)移 |
---|---|---|---|
JC | 72 | C=1 | 有進(jìn)位 |
JNC | 73 | C=0 | 無進(jìn)位 |
JZ/JE | 74 | Z=1 | 零/等于 |
JNZ/JNE | 75 | Z=0 | 不為零/不等于 |
JS | 78 | S=1 | 負(fù)號 |
JNS | 79 | S=0 | 正號 |
JO | 70 | O=1 | 有溢出 |
JNO | 71 | O=0 | 無溢出 |
JP/JPE | 7A | P=1 | 奇偶位為偶 |
JNP/IPO | 7B | P=0 | 奇偶位為奇 |
三璃饱、間接標(biāo)志轉(zhuǎn)移(8位尋址)
指令格式 | 機(jī)器碼 | 測試條件 | 如...則轉(zhuǎn)移 |
---|---|---|---|
JA/JNBE(比較無符號數(shù)) | 77 | C或Z=0 > | 高于/不低于或等于 |
JAE/JNB(比較無符號數(shù)) | 73 | C=0 >= | 高于或等于/不低于 |
JB/JNAE(比較無符號數(shù)) | 72 | C=1 < | 低于/不高于或等于 |
JBE/JNA(比較無符號數(shù)) | 76 | C或Z=1 <= | 低于或等于/不高于 |
JG/JNLE(比較帶符號數(shù)) | 7F | (S異或O)或Z=0 > | 大于/不小于或等于 |
JGE/JNL(比較帶符號數(shù)) | 7D | S異或O=0 >= | 大于或等于/不小于 |
JL/JNGE(比較帶符號數(shù)) | 7C | S異或O=1 < | 小于/不大于或等于 |
JLE/JNG(比較帶符號數(shù)) | 7E | (S異或O)或Z=1 <= | 小于或等于/不大于 |
四、無條件轉(zhuǎn)移指令
操作碼 | 偽碼指令 | 含義 | ||||
---|---|---|---|---|---|---|
EB cb | JMP rel8 | 相對短跳轉(zhuǎn)(8位, 使rel8處的代碼位下一條指令 | ||||
E9 cw | JMP rel16 | 相對跳轉(zhuǎn)(16位, 使rel16處的代碼位下一條指令 | ||||
FF /4 | JMP r/m16 | 絕對跳轉(zhuǎn)(16位, 下一指令地址在r/m16中給出FF /4 | JMP r/m32 | 絕對跳轉(zhuǎn)(32位, 下一指令地址在r/m32中給出EA cb | JMP ptr16:16 | 遠(yuǎn)距離絕對跳轉(zhuǎn), 下一指令地址在操作數(shù)中 |
EA cb | JMP ptr16:32 | 遠(yuǎn)距離絕對跳轉(zhuǎn), 下一指令地址在操作數(shù)中 | ||||
FF /5 | JMP m16:16 | 遠(yuǎn)距離絕對跳轉(zhuǎn), 下一指令地址在內(nèi)存m16:16中 | ||||
FF /5 | JMP m16:32 | 遠(yuǎn)距離絕對跳轉(zhuǎn), 下一指令地址在內(nèi)存m16:32中 |
五肪康、16位/32位尋址方式
操作碼 | 偽碼指令 | 跳轉(zhuǎn)含義 | 跳轉(zhuǎn)類型 | 跳轉(zhuǎn)的條件(標(biāo)志位) | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
0F 87 cw/cd | JA rel16/32 | 大于 | near | (CF=0 and ZF=0) 0F 83 cw/cd | JAE rel16/32 | 大于等于 | near | (CF=0) | ||||
0F 82 cw/cd | JB rel16/32 | 小于 | near | (CF=1) | ||||||||
0F 86 cw/cd | JBE rel16/32 | 小于等于 | near | (CF=1 or ZF=1) | ||||||||
0F 82 cw/cd | JC rel16/32 | 進(jìn)位 | near | (CF=1) | ||||||||
0F 84 cw/cd | JE rel16/32 | 等于 | near | (ZF=1) | ||||||||
0F 84 cw/cd | JZ rel16/32 | 為0 | near | (ZF=1) | ||||||||
0F 8F cw/cd | JG rel16/32 | 大于 | near | (ZF=0 and SF=OF) | ||||||||
0F 8D cw/cd | JGE rel16/32 | 大于等于 | near | (SF=OF) 0F 8C cw/cd | JL rel16/32 | 小于 | near | (SF<>OF) 0F 8E cw/cd | JLE rel16/32 | 小于等于 | near | (ZF=1 or SF<>OF) |
0F 86 cw/cd | JNA rel16/32 | 不大于 | near | (CF=1 or ZF=1) | ||||||||
0F 82 cw/cd | JNAE rel16/32 | 不大于等于 | near | (CF=1) | ||||||||
0F 83 cw/cd | JNB rel16/32 | 不小于 | near | (CF=0) 0F 87 cw/cd | JNBE rel16/32 | 不小于等于 | near | (CF=0 and ZF=0) 0F 83 cw/cd | JNC rel16/32 | 不進(jìn)位 | near | (CF=0) |
0F 85 cw/cd | JNE rel16/32 | 不等于 | near | (ZF=0) 0F 8E cw/cd | JNG rel16/32 | 不大于 | near | (ZF=1 or SF<>OF) | ||||
0F 8C cw/cd | JNGE rel16/32 | 不大于等于 | near | (SF<>OF) | ||||||||
0F 8D cw/cd | JNL rel16/32 | 不小于 | near | (SF=OF) | ||||||||
0F 8F cw/cd | JNLE rel16/32 | 不小于等于 | near | (ZF=0 and SF=OF) | ||||||||
0F 81 cw/cd | JNO rel16/32 | 未溢出 | near | (OF=0) | ||||||||
0F 8B cw/cd | JNP rel16/32 | 不是偶數(shù) | near | (PF=0) 0F 89 cw/cd | JNS rel16/32 | 非負(fù)數(shù) | near | (SF=0) | ||||
0F 85 cw/cd | JNZ rel16/32 | 非零(不等于) | near | (ZF=0) | ||||||||
0F 80 cw/cd | JO rel16/32 | 溢出 | near | (OF=1) | ||||||||
0F 8A cw/cd | JP rel16/32 | 偶數(shù) | near | (PF=1) | ||||||||
0F 8A cw/cd | JPE rel16/32 | 偶數(shù) | near | (PF=1) 0F 8B cw/cd | JPO rel16/32 | 奇數(shù) | near | (PF=0) | ||||
0F 88 cw/cd | JS rel16/32 | 負(fù)數(shù) | near | (SF=1) | ||||||||
0F 84 cw/cd | JZ rel16/32 | 為零(等于) | near | (ZF=1) |
注:一些指令操作數(shù)的含義說明:
rel8 表示 8 位相對地址
rel16 表示 16 位相對地址
rel16/32 表示 16或32 位相對地址
r/m16 表示16位寄存器
r/m32 表示32位寄存器