User Tools

Site Tools


fasm

This is an old revision of the document!


https://sysprog.ru/post/komanda-cmp https://flatassembler.net/docs.php?article=manual http://www.club155.ru/x86cmd/MUL

FASM

Data sizes, definitions, Constants and labels

Operator Bits Bytes
byte81
word162
dword324
fword486
pword486
qword648
tbyte8010
tword8010
dqword12816
xword12816
qqword25632
yword25632
dqqword51264
zword51264

Definitions

Size (bytes)Define dataReserve data
1db
file
rb
2dw
du
rw
4ddrd
6dp
df
rp
rf
8dqrq
10dtrt
db 1,2,3
db 'abc'
dp 1234:5678
df 1234:5678
dt 70000:80000
dt 2670.0
db 5 dup (1,2)
file 'data.bin':10h,4

Constants and labels

count = 17
mov cx,count
-
char db 224
mov bx,char
mov dl,[char]
mov ax,[char] - error
mov ax, word [char]
label wchar word at char
mov ax,[wchar]
.label2 (wchar.label2)
@@
@r
@f

—-

Registers

TypeBitsRegisters
General8alcldlblahchdhbh
16axcxdxbxspbpsidi
32eaxecxedxebxespebpesiedi
Segment16escsssdsfsgs
Control32cr0 cr2cr3cr4
Debug32dr0dr1dr2dr3 dr6dr7
FPU80st0st1st2st3st4st5st6st7
MMX64mm0mm1mm2mm3mm4mm5mm6mm7
SSE128xmm0xmm1xmm2xmm3xmm4xmm5xmm6xmm7
AVX256ymm0ymm1ymm2ymm3ymm4ymm5ymm6ymm7
AVX-512512zmm0zmm1zmm2zmm3zmm4zmm5zmm6zmm7
Opmask64k0k1k2k3k4k5k6k7
Bounds128bnd0bnd1bnd2bnd3

Numerical expressions

100110101b
123456701233o
0x01234567890ABCDEF
01234567890ABCDEF$
01234567890ABCDEFh
"234567"
$ (current address)
$$ (base address of current addressing space)
% (number of current repeat in parts of code)
%t (current time stamp)
1.0, 1E0 and 1f define the same floating point value
PriorityOperators
0+ -
1* /
2mod
3and or xor
4shl shr
5not
6bsf bsr
7rva plt

Instruction set

MOV

Processor : 8086+
Flags : No

mov bx,ax       ; general register to general register
mov [char],al   ; general register to memory
mov bl,[char]   ; memory to general register
mov dl,32       ; immediate value to general register
mov [char],32   ; immediate value to memory
mov ax,ds       ; segment register to general register
mov [bx],ds     ; segment register to memory
mov ds,ax       ; general register to segment register
mov ds,[bx]     ; memory to segment register
mov eax,cr0     ; control register to general register
mov cr3,ebx     ; general register to control register

XCHG

Processor : 80386+
Flags : No

xchg ax,bx      ; swap two general registers
xchg al,[char]  ; swap register with memory

PUSH

Processor : 8086+
Flags : No

push ax         ; store general register
push es         ; store segment register
pushw [bx]      ; store word in memory
push 1000h      ; store immediate value
pushd [ax]      ; store double word
push ax bx cx dx; 
pusha           ; store general registers
pushaw
pushad

POP

Processor : 8086+
Flags : No

pop bx          ; restore general register
pop ds          ; restore segment register
popw [si]       ; restore memory

CWD

Processor : 8086+
Flags : No

cwd             ; convert AX to DX:AX using the sign 

CDQ

Processor : 80386+
Flags : No

cdq             ; convert EAX to EDX:EAX using the sign 

CBW

Processor : 8086+
Flags : No

cbw             ; convert AL to AX using the sign

CWDE

Processor : 80386+
Flags : No

cwde            ; convert AX to EAX using the sign 

MOVSX

Processor : 80386+
Flags : No

  movsx ax,al         ; copy byte register to word register with sign
  movsx edx,dl        ; byte register to double word register
  movsx eax,ax        ; word register to double word register
  movsx ax,byte [bx]  ; byte memory to word register
  movsx edx,byte [bx] ; byte memory to double word register
  movsx eax,word [bx] ; word memory to double word register
  

MOVZX

Processor : 80386+
Flags : No

  movsx ax,al         ; copy byte register to word register without sign
  movsx edx,dl        ; byte register to double word register
  movsx eax,ax        ; word register to double word register
  movsx ax,byte [bx]  ; byte memory to word register
  movsx edx,byte [bx] ; byte memory to double word register
  movsx eax,word [bx] ; word memory to double word register

ADD, SUB

Processor : 8086+
Flags : OF, SF, ZF, AF, CF, PF

  add ax,bx       ; add register to register
  sub ax,bx       ; subtract register from register
  add ax,[si]     ; add memory to register
  add [di],al     ; add register to memory
  add al,48       ; add immediate value to register
  add [char],48   ; add immediate value to memory

ADС, SBB

Processor : 8086+
Flags : OF, SF, ZF, AF, CF, PF

  adс ax,bx       ; add register to register with CF
  sbb ax,bx       ; subtract register from register with CF
  adс ax,[si]     ; add memory to register
  adс [di],al     ; add register to memory
  adс al,48       ; add immediate value to register
  adс [char],48   ; add immediate value to memory
  

INС, DEC

Processor : 8086+
Flags : OF, SF, ZF, AF, PF

  inc ax          ; increment register by one
  dec ax          ; decrement register by one    
  inc byte [bx]   ; increment memory by one
  

CMP

Processor : 8086+
Flags : OF, SF, ZF, AF, CF, PF

  cmp ax,bx       ; compare register to register (like a SUB)

NEG

Processor : 8086+
Flags : OF, SF, ZF, AF, PF, CF

  neg ax          ; ax = 0 - ax
  

XADD

Processor : 80486+
Flags : OF, SF, ZF, AF, PF, CF

  xadd eax, ebx     ; ebx = eax & eax = eax + ebx
  

MUL

Processor : 8086+
Flags : OF, CF

  MUL r/m8          ; AX = AL * r/m8 (8086+)
  MUL r/m16         ; DX:AX = AX * r/m16 (8086+)
  MUL r/m32         ; EDX:EAX = EAX * r/m32 (80386+)
  

IMUL

Processor : 8086+, 80386+
Flags : OF, CF

  IMUL r/m8         ; AX=AL*r/m8 (8086+)
  IMUL r/m16        ; DX:AX=AX*r/m16 (8086+)
  IMUL r/m32        ; EDX:EAX=EAX*r/m32 (80386+)
  IMUL r16,r/m16    ; r16=r16*r/m16 (80386+)
  IMUL r32,r/m32    ; r32=r32*r/m32 (80386+)
  IMUL r16,r/m16,imm8    ; r16=r/m16*(знакорасширенное imm8) (80186+)
  IMUL r32,r/m32,imm8    ; r32=r/m32*(знакорасширенное imm8) (80386+)
  IMUL r16,imm8     ; r16=r16*(знакорасширенное imm8) (80186+)
  IMUL r32,imm8     ; r32=r32*(знакорасширенное imm8) (80386+)
  IMUL r16,r/m16,imm16    ; r16=r/m16*(знакорасширенное imm16) (80186+)
  IMUL r32,r/m32,imm16    ; r32=r/m32*(знакорасширенное imm16) (80386+)
  IMUL r16,imm16    ; r16=r16*imm16 (80186+)
  IMUL r32,imm32    ; r32=r32*imm32 (80386+)
  

DIV

Processor : 8086+
Flags : no

  DIV AL,r/m8       ; Беззнаковое деление AX на r/m8, частное помещается в AL, остаток от деления - в AH
                    ; (8086+)
  DIV AX,r/m16      ; Беззнаковое деление DX:AX на r/m16, частное помещается в AX, остаток от деления - в DX
                    ; (8086+)
  DIV EAX,r/m32     ; Беззнаковое деление EDX:EAX на r/m32, частное помещается в EAX,
                    ; остаток от деления - в EDX (80386+)
                    

IDIV

Processor : 8086+
Flags : no

  IDIV AL,r/m8      ; Знаковое деление AX на r/m8, частное помещается в AL, остаток от деления - в AH
                    ; (8086+)
  IDIV AX,r/m16     ; Знаковое деление DX:AX на r/m16, частное помещается в AX, остаток от деления - в DX
                    ; (8086+)
  IDIV EAX,r/m32    ; Знаковое деление EDX:EAX на r/m32, частное помещается в EAX,
                    ; остаток от деления - в EDX (80386+)
                    

DAA

Processor : 8086+
Flags : SF, ZF, AF, PF, CF

  DAA               ; Десятичная коррекция AL после сложения
                                         

DAS

Processor : 8086+
Flags : SF, ZF, AF, PF, CF

  DAS               ; Десятичная коррекция AL после вычитания                           
  

AAA

Processor : 8086+
Flags : AF, CF

  AAA               ; ASCII коррекция AL после сложения
                  

AAS

Processor : 8086+
Flags : AF, CF

  AAS               ; ASCII коррекция AL после вычитания
  

AAM

Processor : 8086+
Flags : SF, ZF, PF

  AAM               ; ASCII коррекция AX после умножения
  AAM imm8          ; ASCII коррекция AX после умножения по числу, базирующемуся на imm8
  

AAD

Processor : 8086+
Flags : SF, ZF, PF

  AAD               ; ASCII коррекция AX перед делением
  AAD imm8          ; ASCII коррекция AX перед делением по числу, базирующемуся на imm8

NOT

Processor : 8086+
Flags : no

  NOT r/m8          ; r/m8 = NOT r/m8 (8086+)
  NOT r/m16         ; r/m16 = NOT r/m16 (8086+)
  NOT r/m32         ; r/m32 = NOT r/m32 (80386+)

AND

Processor : 8086+
Flags : OF, SF, ZF, PF, CF

20 /r   AND r/m8,r8        ; r/m8 AND r8 (8086+)
21 /r   AND r/m16,r16      ; r/m16 AND r16 (8086+)
21 /r   AND r/m32,r32      ; r/m32 AND r32 (80386+)
22 /r   AND r8,r/m8        ; r8 AND r/m8 (8086+)
23 /r   AND r16,r/m16      ; r16 AND r/m16 (8086+)
23 /r   AND r32,r/m32      ; r32 AND r/m32 (80386+)
24 ib   AND AL,imm8        ; АL AND imm8 (8086+)
25 iw   AND AX,imm16       ; AX AND imm16 (8086+)
25 id   AND EAX,imm32      ; EAX AND imm32 (80386+)
80 /4 ib  AND r/m8,imm8    ; r/m8 AND imm8 (8086+)
81 /4 iw  AND r/m16,imm16  ; r/m16 AND imm16 (8086+)
81 /4 id  AND r/m32,imm32  ; r/m32 AND imm32 (80386+)
83 /4 ib  AND r/m16,imm8   ; r/m16 AND imm8 (знакорасшир.) (8086+)
83 /4 ib  AND r/m32,imm8   ; r/m32 AND imm8 (знакорасшир.) (80386+)

OR

Processor : 8086+
Flags : OF, SF, ZF, PF, CF

0C ib     OR AL,imm8         ; AL = AL OR imm8 (8086+)
0D iw     OR AX,imm16        ; AX = AX OR imm16 (8086+)
0D id     OR EAX,imm32       ; EAX = EAX OR imm32 (80386+)
80 /1 ib  OR r/m8,imm8     ; r/m8 = r/m8 OR imm8 (8086+)
81 /1 iw  OR r/m16,imm16   ; r/m16 = r/m16 OR imm16 (8086+)
81 /1 id  OR r/m32,imm32   ; r/m32 = r/m32 OR imm32 (80386+)
83 /1 ib  OR r/m16,imm8    ; r/m16 = r/m16 OR (Знакорасширенное imm8) (8086+)
83 /1 ib  OR r/m32,imm8    ; r/m32 = r/m32 OR (Знакорасширенное  imm8) (80386+)
08 /r     OR r/m8,r8       ; r/m8 = r/m8 OR r8 (8086+)
09 /r     OR r/m16,r16     ; r/m16 = r/m16 OR r16 (8086+)
09 /r     OR r/m32,r32     ; r/m32 = r/m32 OR r32 (80386+)
0A /r     OR r8,r/m8       ; r8 = r8 OR r/m8 (8086+)
0B /r     OR r16,r/m16     ; r16 = r16 OR r/m16 (8086+)
0B /r     OR r32,r/m32     ; r32 = r32 OR r/m32 (80386+)

XOR

Processor : 8086+
Flags : OF, SF, ZF, PF, CF

34 ib     XOR AL,imm8      ; AL = AL XOR imm8 (8086+)
35 iw     XOR AX,imm16     ; AX = AX XOR imm16 (8086+)
35 id     XOR EAX,imm32    ; EAX = EAX XOR imm32 (80386+)
80 /6 ib  XOR r/m8,imm8    ; r/m8 = r/m8 XOR imm8 (8086+)
81 /6 iw  XOR r/m16,imm16  ; r/m16 = r/m16 XOR imm16 (8086+)
81 /6 id  XOR r/m32,imm32  ; r/m32 = r/m32 XOR imm32 (80386+)
83 /6 ib  XOR r/m16,imm8   ; r/m16 = r/m16 XOR (Знакорасширенное imm8) (8086+)
83 /6 ib  XOR r/m32,imm8   ; r/m32 = r/m32 XOR (Знакорасширенное  imm8) (80386+)
30 /r     XOR r/m8,r8      ; r/m8 = r/m8 XOR r8 (8086+)
31 /r     XOR r/m16,r16    ; r/m16 = r/m16 XOR r16 (8086+)
31 /r     XOR r/m32,r32    ; r/m32 = r/m32 XOR r32 (80386+)
32 /r     XOR r8,r/m8      ; r8 = r8 XOR r/m8 (8086+)
33 /r     XOR r16,r/m16    ; r16 = r16 XOR r/m16 (8086+)
33 /r     XOR r32,r/m32    ; r32 = r32 XOR r/m32 (80386+)

BT

Processor : 80386+
Flags : CF

0F A3     BT r/m16,r16     ; Сохранить выбираемый r16 бит r/m16 в CF
0F A3     BT r/m32,r32     ; Сохранить выбираемый r32 бит r/m32 в CF
0F BA /4 ib  BT r/m16,imm8 ; Сохранить выбираемый imm8 бит r/m16 в CF
0F BA /4 ib  BT r/m32,imm8 ; Сохранить выбираемый imm8 бит r/m32 в CF

BTS

Processor : 80386+
Flags : CF

0F A3     BT r/m16,r16     ; Сохранить выбираемый r16 бит r/m16 в CF
0F AB     BTS r/m16,r16    ; Выбрать по r16 бит из r/m16 в CF установить этот бит
0F AB     BTS r/m32,r32    ; Выбрать по r32 бит из r/m32 в CF установить этот бит
0F BA /5 ib  BTS r/m16,imm8  ; Выбрать по imm8 бит из r/m16 в CF установить этот бит
0F BA /5 ib  BTS r/m32,imm8  ; Выбрать по imm8 бит из r/m32 в CF установить этот бит

BTR

Processor : 80386+
Flags : CF

0F B3        BTR r/m16,r16      ; Выбрать по r16 бит из r/m16 в CF сбросить этот бит
0F B3        BTR r/m32,r32      ; Выбрать по r32 бит из r/m32 в CF сбросить этот бит
0F BA /6 ib  BTR r/m16,imm8     ; Выбрать по imm8 бит из r/m16 в CF сбросить этот бит
0F BA /6 ib  BTR r/m32,imm8     ; Выбрать по imm8 бит из r/m32 в CF сбросить этот бит

BTC

Processor : 80386+
Flags : CF

0F BB        BTC r/m16,r16      ; Выбрать по r16 бит из r/m16 в CF инвертировать этот бит
0F BB        BTC r/m32,r32      ; Выбрать по r32 бит из r/m32 в CF инвертировать этот бит
0F BA /7 ib  BTC r/m16,imm8     ; Выбрать по imm8 бит из r/m16 в CF инвертировать этот бит
0F BA /7 ib  BTC r/m32,imm8     ; Выбрать по imm8 бит из r/m32 в CF инвертировать этот бит

BSF

Processor : 80386+
Flags : ZF

0F BC        BSF r16,r/m16      ; Сканирование битов r/m16 вперед
0F BC        BSF r32,r/m32      ; Сканирование битов r/m32 вперед

BSR

Processor : 80386+
Flags : ZF

0F BD        BSR r16,r/m16      ; Сканирование битов r/m16 назад
0F BD        BSR r32,r/m32      ; Сканирование битов r/m32 назад

SHL, SHR, SAL, SAR

Processor : 8086+
Flags : SF, ZF, PF, CF

D0 /4       SAL r/m8,1          ; Арифметический сдвиг r/m8 влево (r/m8 = r/m8 * 2) (8086+)
D2 /4       SAL r/m8,CL         ; Арифметический сдвиг r/m8 влево (r/m8 = r/m8 * 2^CL) (8086+)
C0 /4 ib    SAL r/m8,imm8       ; Арифметический сдвиг r/m8 влево (r/m8 = r/m8 * 2^imm8) (8086+)
D1 /4       SAL r/m16,1         ; Арифметический сдвиг r/m16 влево (r/m16 = r/m16 * 2) (8086+)
D3 /4       SAL r/m16,CL        ; Арифметический сдвиг r/m16 влево (r/m16 = r/m16 * 2^CL) (8086+)
C1 /4 ib    SAL r/m16,imm8      ; Арифметический сдвиг r/m16 влево (r/m16 = r/m16 * 2^imm8) (8086+)
D1 /4       SAL r/m32,1         ; Арифметический сдвиг r/m32 влево (r/m32 = r/m32 * 2) (80386+)
D3 /4       SAL r/m32,CL        ; Арифметический сдвиг r/m32 влево (r/m32 = r/m32 * 2^CL) (80386+)
C1 /4 ib    SAL r/m32,imm8      ; Арифметический сдвиг r/m32 влево (r/m32 = r/m32 * 2^imm8) (80386+)
D0 /7       SAR r/m8,1          ; Арифметический сдвиг r/m8 вправо (r/m8 = sign(r/m8) * r/m8 / 2) (8086+)
D2 /7       SAR r/m8,CL         ; Арифметический сдвиг r/m8 вправо (r/m8 = sign(r/m8) * r/m8 / 2^CL) (8086+)
C0 /7 ib    SAR r/m8,imm8       ; Арифметический сдвиг r/m8 вправо (r/m8 = sign(r/m8) * r/m8 / 2^imm8) (8086+)
D1 /7       SAR r/m16,1         ; Арифметический сдвиг r/m16 вправо (r/m16 = sign(r/m16) * r/m16 / 2) (8086+)
D3 /7       SAR r/m16,CL        ; Арифметический сдвиг r/m16 вправо (r/m16 = sign(r/m16) * r/m16 / 2^CL)
C1 /7 ib    SAR r/m16,imm8      ; Арифметический сдвиг r/m16 вправо (r/m16 = sign(r/m16) * r/m16 / 2^imm8) (8086+)
D1 /7       SAR r/m32,1         ; Арифметический сдвиг r/m32 вправо (r/m32 = sign(r/m32) * r/m32 / 2) (80386+)
D3 /7       SAR r/m32,CL        ; Арифметический сдвиг r/m32 вправо (r/m32 = sign(r/m32) * r/m32 / 2^CL) (80386+)
C1 /7 ib    SAR r/m32,imm8      ; Арифметический сдвиг r/m32 вправо (r/m32 = sign(r/m32) * r/m32 / 2^imm8) (80386+)
D0 /4       SHL r/m8,1          ; Логический сдвиг r/m8 влево (r/m8 = r/m8 * 2)
D2 /4       SHL r/m8,CL         ; Логический сдвиг r/m8 влево (r/m8 = r/m8 * 2^CL) (8086+)
C0 /4 ib    SHL r/m8,imm8       ; Логический сдвиг r/m8 влево (r/m8 = r/m8 * 2^imm8) (8086+)
D1 /4       SHL r/m16,1         ; Логический сдвиг r/m16 влево (r/m16 = r/m16 * 2) (8086+)
D3 /4       SHL r/m16,CL        ; Логический сдвиг r/m16 влево (r/m16 = r/m16 * 2^CL) (8086+)
C1 /4 ib    SHL r/m16,imm8      ; Логический сдвиг r/m16 влево (r/m16 = r/m16 * 2^imm8) (8086+)
D1 /4       SHL r/m32,1         ; Логический сдвиг r/m32 влево (r/m32 = r/m32 * 2) (80386+)
D3 /4       SHL r/m32,CL        ; Логический сдвиг r/m32 влево (r/m32 = r/m32 * 2^CL) (80386+)
C1 /4 ib    SHL r/m32,imm8      ; Логический сдвиг r/m32 влево (r/m32 = r/m32 * 2^imm8) (80386+)
D0 /5       SHR r/m8,1          ; Логический сдвиг r/m8 вправо (r/m8 = |r/m8| / 2) (8086+)
D2 /5       SHR r/m8,CL         ; Логический сдвиг r/m8 вправо (r/m8 =  |r/m8| / 2^CL)
C0 /5 ib    SHR r/m8,imm8       ; Логический сдвиг r/m8 вправо (r/m8 = |r/m8| / 2^imm8) (8086+)
D1 /5       SHR r/m16,1         ; Логический сдвиг r/m16 вправо (r/m16 = |r/m16| / 2) (8086+)
D3 /5       SHR r/m16,CL        ; Логический сдвиг r/m16 вправо (r/m16 = |r/m16| / 2^CL) (8086+)
C1 /5 ib    SHR r/m16,imm8      ; Логический сдвиг r/m16 вправо (r/m16 = |r/m16| / 2^imm8) (8086+)
D1 /5       SHR r/m32,1         ; Логический сдвиг r/m32 вправо (r/m32 = |r/m32| / 2)(80386+)
D3 /5       SHR r/m32,CL        ; Логический сдвиг r/m32 вправо (r/m32 = |r/m32| / 2^CL) (80386+)
C1 /5 ib    SHR r/m32,imm8      ; Логический сдвиг r/m32 вправо (r/m32 = |r/m32| / 2^imm8) (80386+)

SHLD, SHRD

Processor : 80386+
Flags : SF, ZF, PF, CF

OF A4       SHLD r/m16,r16,imm8 ; Сдвинуть r/m16 влево на imm8 бит, заполнив сдвинутые биты битами из r16
OF A4       SHLD r/m32,r32,imm8 ; Сдвинуть r/m32 влево на imm8 бит, заполнив сдвинутые биты битами из r32
OF A5       SHLD r/m16,r16,CL   ; Сдвинуть r/m16 влево на CL бит, заполнив сдвинутые биты битами из r16
OF A5       SHLD r/m32,r32,CL   ; Сдвинуть r/m32 влево на CL бит, заполнив сдвинутые биты битами из r32
OF AC       SHRD r/m16,r16,imm8 ; Сдвинуть r/m16 вправо на imm8 бит, заполнив сдвинутые биты битами из r16
OF AC       SHRD r/m32,r32,imm8 ; Сдвинуть r/m32 вправо на imm8 бит, заполнив сдвинутые биты битами из r32
OF AD       SHRD r/m16,r16,CL   ; Сдвинуть r/m16 вправо на CL бит, заполнив сдвинутые биты битами из r16
OF AD       SHRD r/m32,r32,CL   ; Сдвинуть r/m32 вправо на CL бит, заполнив сдвинутые биты битами из r32

RCR, RCL, ROL, ROR

Processor : 8086+
Flags : OF, CF

D0 /2       RCL r/m8,1          ; Сдвинуть по кругу влево на 1 бит 9 бит (CF, r/m8) (8086+)
D2 /2       RCL r/m8,CL         ; Сдвинуть по кругу влево на CL бит 9 бит (CF, r/m8)(8086
C0 /2 ib    RCL r/m8,imm8       ; Сдвинуть по кругу влево на imm8 бит 9 бит (CF, r/m8) (80286+)
D1 /2       RCL r/m16,1         ; Сдвинуть по кругу влево на 1 бит 17 бит (CF, r/m16) (8086+)
D3 /2       RCL r/m16,CL        ; Сдвинуть по кругу влево на CL бит 17 бит (CF, r/m16) (8086+)
C1 /2 ib    RCL r/m16,imm8      ; Сдвинуть по кругу влево на imm8 бит 17 бит (CF, r/m16) (80286+)
D1 /2       RCL r/m32,1         ; Сдвинуть по кругу влево на 1 бит 33 бита (CF, r/m32) (80386+)
D3 /2       RCL r/m32,CL        ; Сдвинуть по кругу влево на CL бит 33 бита (CF, r/m32) (80386+)
C1 /2 ib    RCL r/m32,imm8      ; Сдвинуть по кругу влево на imm8 бит 33 бита (CF, r/m32) (80386+)
D0 /3       RCR r/m8,1          ; Сдвинуть по кругу вправо на 1 бит 9 бит (CF, r/m8) (8086+)
D2 /3       RCR r/m8,CL         ; Сдвинуть по кругу вправо на CL бит 9 бит (CF, r/m8) (8086+)
C0 /3 ib    RCR r/m8,imm8       ; Сдвинуть по кругу вправо на imm8 бит 9 бит (CF, r/m8) (80286+)
D1 /3       RCR r/m16,1         ; Сдвинуть по кругу вправо на 1 бит 17 бит (CF, r/m16) (8086+)
D3 /3       RCR r/m16,CL        ; Сдвинуть по кругу вправо на CL бит 17 бит (CF, r/m16) (8086+)
C1 /3 ib    RCR r/m16,imm8      ; Сдвинуть по кругу вправо на imm8 бит 17 бит (CF, r/m16) (80286+)
D1 /3       RCR r/m32,1         ; Сдвинуть по кругу вправо на 1 бит 33 бита (CF, r/m32) (80386+)
D3 /3       RCR r/m32,CL        ; Сдвинуть по кругу вправо на CL бит 33 бита (CF, r/m32) (80386+)
C1 /3 ib    RCR r/m32,imm8      ; Сдвинуть по кругу вправо на imm8 бит 33 бита (CF, r/m32) (80386+)
D0 /0       ROL r/m8,1          ; Сдвинуть по кругу влево на 1 бит 8 бит (r/m8) (8086+)
D2 /0       ROL r/m8,CL         ; Сдвинуть по кругу влево на CL бит 8 бит (r/m8) (8086+)
C0 /0 ib    ROL r/m8,imm8       ; Сдвинуть по кругу влево на imm8 бит 8 бит (r/m8) (80286+)
D1 /0       ROL r/m16,1         ; Сдвинуть по кругу влево на 1 бит 16 бит (r/m16) (8086+)
D3 /0       ROL r/m16,CL        ; Сдвинуть по кругу влево на CL бит 16 бит (r/m16) (8086+)
C1 /0 ib    ROL r/m16,imm8      ; Сдвинуть по кругу влево на imm8 бит 16 бит (r/m16) (80286+)
D1 /0       ROL r/m32,1         ; Сдвинуть по кругу влево на 1 бит 32 бита (r/m32) (80386+)
D3 /0       ROL r/m32,CL        ; Сдвинуть по кругу влево на CL бит 32 бита (r/m32) (80386+)
C1 /0 ib    ROL r/m32,imm8      ; Сдвинуть по кругу влево на imm8 бит 32 бита (r/m32) (80386+)
D0 /1       ROR r/m8,1          ; Сдвинуть по кругу вправо на 1 бит 8 бит (r/m8) (8086+)
D2 /1       ROR r/m8,CL         ; Сдвинуть по кругу вправо на CL бит 8 бит (r/m8) (8086+)
C0 /1 ib    ROR r/m8,imm8       ; Сдвинуть по кругу вправо на imm8 бит 8 бит (r/m8) (80286+)
D1 /1       ROR r/m16,1         ; Сдвинуть по кругу вправо на 1 бит 16 бит (r/m16) (8086+)
D3 /1       ROR r/m16,CL        ; Сдвинуть по кругу вправо на CL бит 16 бит (r/m16) (8086+)
C1 /1 ib    ROR r/m16,imm8      ; Сдвинуть по кругу вправо на imm8 бит 16 бит (r/m16) (80286+)
D1 /1       ROR r/m32,1         ; Сдвинуть по кругу вправо на 1 бит 32 бита (r/m32) (80386+)
D3 /1       ROR r/m32,CL        ; Сдвинуть по кругу вправо на CL бит 32 бита (r/m32) (80386+)
C1 /1 ib    ROR r/m32,imm8      ; Сдвинуть по кругу вправо на imm8 бит 32 бита (r/m32) (80386+)

TEST

Processor : 8086+
Flags : OF, SF, ZF, PF

A8 ib       TEST AL,imm8        ; Установить флаги SF, ZF, PF по результату операции imm8 AND AL (8086+)
A9 iw       TEST AX,imm16       ; Установить флаги SF, ZF, PF по результату операции imm16 AND AX (8086+)
A9 id       TEST EAX,imm32      ; Установить флаги SF, ZF, PF по результату операции imm32 AND EAX (80386+)
F6 /0 ib    TEST r/m8,imm8      ; Установить флаги SF, ZF, PF по результату операции imm8 AND r/m8 (8086+)
F7 /0 iw    TEST r/m16,imm16    ; Установить флаги SF, ZF, PF по результату операции imm16 AND r/m16 (8086+)
F7 /0 id    TEST r/m32,imm32    ; Установить флаги SF, ZF, PF по результату операции imm32 AND r/m32 (80386+)
84 /r       TEST r/m8,r8        ; Установить флаги SF, ZF, PF по результату операции r/m8 AND r8 (8086+)
85 /r       TEST r/m16,r16      ; Установить флаги SF, ZF, PF по результату операции r/m16 AND r168086
85 /r       TEST r/m32,r32      ; Установить флаги SF, ZF, PF по результату операции r/m32 AND r32 (80386+)
fasm.1724230900.txt.gz · Last modified: 2024/08/21 09:01 by arv