複製鏈接
請複製以下鏈接發送給好友

OR

(x86彙編指令)

鎖定
OR,科技術語,Intel x86平台彙編的按位或指令,所屬學科為計算機。
外文名
OR
所屬學科
計算機

OR説明介紹

注:一下所有數字默認為十六進制數字
MEM代指操作數為內存或寄存器,使用地址超越前綴0x67可以在16位與32位尋址模式之間切換
REG代指操作數為寄存器,使用操作數超越前綴0x66可以在16位與32位寄存器之間切換
IMM代指立即數,使用操作數超越前綴0x66可以在16位與32位立即數之間切換
SEG代指操作數為段寄存器
以上三縮寫後接數字表示位數
指令結構:|前綴| |OPcode| |內存尋址(可選)及其小端偏移量(可選)| |小端立即數|
16位模式 2E 00 46 34 12 為ADD CS:[1234],AL
16位模式 66 05 78 56 34 12 為ADD EAX,12345678
32位模式 66 05 34 12 為 ADD AX,1234
32位模式 67 03 4E 04 為 ADD ECX,SS:[BP+4]
16位內存尋址 |ModR/M| |偏移量|
ModR/M字節結構
-
7
6
5
4
3
2
1
0
ModR/M
mod
reg
r/m
有時候reg用來區分指令,記做fun;有時候reg用來指代段寄存器,記做seg
mod
r/m解讀方法
00
若r/m=6即110,為DS:[16位小端偏移],否則為無偏移量內存尋址
01
帶8位偏移量的內存尋址
10
帶16位偏移量的內存尋址
11
為寄存器
reg或seg或r/m解讀
-
16位寄存器
8位寄存器
內存尋址
段寄存器
0=000
AX
AL
DS:[BX+SI]
ES
1=001
CX
CL
DS:[BX+DI]
CS
2=010
DX
DL
SS:[BP+SI]
SS
3=011
BX
BL
SS:[BP+DI]
DS
4=100
SP
AH
DS:[SI]
-
5=101
BP
CH
DS:[DI]
-
6=110
SI
DH
SS:[BP]
-
7=111
DI
BH
DS:[BX]
-

OR指令集

OPcode
指令
示例(機器碼)
示例(對應彙編)
08
OR MEM8,REG8
08 00
OR DS:[BX+SI],AL
09
OR MEM16,REG16
09 DD
OR BP,BX
0A
OR REG8,MEM8
0A 2E 8B 0E
OR CH,DS:[0E8B]
0B
OR REG16,MEM16
0B EB
OR BP,BX
0C
OR AL,IMM8
0C 12
OR AL,12
0D
OR AX,IMM16
0D 34 12
OR AX,1234
80 (fun=1=001)
OR MEM8,IMM8
80 08 12
OR BYTE DS:[BX+SI],12
81 (fun=1=001)
OR MEM16,IMM16
81 0E 34 12 78 56
OR WORD DS:[1234],5678
82 (fun=1=001)
OR MEM8,IMM8
82 C9 12
OR CL,12
83 (fun=1=001)
OR MEM16,IMM8 (有符號)
83 08 FE
83 C4 0A
OR WORD DS:[BX+SI],-02
OR SP,+0A
背誦技巧:00funXXX 中fun是ADD,OR,ADC,SBB,AND,SUB,XOR,CMP(加或進借與減異比),XXX是m8r8,m16r16,r8,m8,r16,m16,ALimm8,AXimm16(或者記成mr,rm,AccImm),100000XX是fun m8i8,m16,i16,m8i8,m16Si8

OR標誌位

OF
DF
IF
SF
ZF
AF
PF
CF
0
-
-
*
*
?
*
0
注:0指清零;1指置一;*指按結果修改;?指未定義

OR示例程序

OR示例一

0100 B88680 MOV AX,8086
0103 0D3412 OR AX,1234
0106 CD01 INT 01
AX=92B6 NV - - - NG NZ - PO NC
結果最高位為1,所以SF=1,NeGative
結果低8位為1011 0110 共5個1,所以PF=0,ParityOdd
結果不為0,所以ZF=0,NotZero

OR示例二

0100 B80000 MOV AX,0000
0103 0DFFFF OR AX,FFFF
0106 CD01 INT 01
AX=FFFF NV - - - NG NZ - PE NC
結果最高位為1,所以SF=1,NeGative
結果低8位為1111 1111 共8個1,所以PF=1,ParityEven
結果不為0,所以ZF=0,NotZero

OR示例三

0100 E421 IN AL,21
0102 0C01 OR AL,01
0104 E621 OUT 21,AL
0106 CD01 INT 01
讀取8259主片的IMR並屏蔽IRQ0