-
OR
(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| |偏移量|
- | 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 | 為寄存器 |
- | 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
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:5次歷史版本
- 最近更新: aka卡布达121