User Tools

Site Tools


fasm

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
fasm [2024/08/18 08:45] – [SHL] arvfasm [2024/09/26 08:40] (current) – [CLC] arv
Line 454: Line 454:
   D3 /5       SHR r/m32,CL        ; Логический сдвиг r/m32 вправо (r/m32 = |r/m32| / 2^CL) (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+)   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 бит 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 бит 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 бит 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 бит 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 бит 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 бит 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 бит 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 бит 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 бит 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 бит 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 бит 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 бит 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+)
 +
 + ==== BSWAP ====
 +Processor : 80486+ \\
 +Flags     : no
 +  0F C8+rd    BSWAP r32           ; Перестановка байтов в 32-битном регистре
 +
 +
 + ==== JMP ====
 +Processor : 8086+ \\
 +Flags     : no
 +  EB cb       JMP rel8            ; Короткий переход, 8-битное знаковое смещение задается относительно следующей команды (8086+)
 +  E9 cw       JMP rel16           ; Ближний переход, 16-битное знаковое смещение задается относительно следующей команды (8086+)
 +  E9 cd       JMP rel32           ; Ближний переход, 32-битное знаковое смещение задается относительно следующей команды (Intel386+)
 +  FF /4       JMP r/m16           ; Ближний косвенный переход, r/m16 задает абсолютное смещение адреса назначения (8086+)
 +  FF /4       JMP r/m32           ; Ближний косвенный переход, r/m32 задает абсолютное смещение адреса назначения (Intel386+)
 +  EA cd       JMP ptr16:16        ; Дальний межсегментный переход, абсолютный адрес назначения задается 4-байтным непосредственным операндом ptr16:16 (8086+)
 +  EA cp       JMP ptr16:32        ; Дальний межсегментный переход, абсолютный адрес назначения задается 6-байтным непосредственным операндом ptr16:32 (Intel386+)
 +  FF /5       JMP m16:16          ; Дальний косвенный межсегментный переход, абсолютный адрес назначения задается 4-байтным операндом в ячейке памяти m16:16 (8086+)
 +  FF /5       JMP m16:32          ; Дальний косвенный межсегментный переход, абсолютный адрес назначения задается 6-байтным операндом в ячейке памяти m16:32 (Intel386+)
 +
 + ==== CALL ====
 +Processor : 8086+ \\
 +Flags     : no
 +  E8 cw       CALL rel16         ; Ближний вызов, 16-битное смещение указывается относительно следующей команды (8086+)
 +  E8 cd       CALL rel32         ; Ближний вызов, 32-битное смещение указывается относительно следующей команды (Intel386+)
 +  FF /2       CALL r/m16         ; Ближний вызов, 2-байтный адрес указывается в r/m16 (8086+)
 +  FF /2       CALL r/m32         ; Ближний вызов, 4-байтный адрес указывается в r/m32 (Intel386+)
 +  9A cd       CALL ptr16:16      ; Дальний вызов, указывается 4-байтный непосредственный адрес (8086+)
 +  9A cp       CALL ptr16:32      ; Дальний вызов, указывается 6-байтный непосредственный адрес (Intel386+)
 +  FF /3       CALL m16:16        ; Дальний вызов по адресу, указанному в операнде в памяти (8086+)
 +  FF /3       CALL m16:32        ; Дальний вызов по адресу, указанному в операнде в памяти (Intel386+)
 +  
 + ==== RET, RETN, RETF ====
 +Processor : 8086+ \\
 +Flags     : no
 +  C3          RET               ; Ближний возврат из процедуры (8086+)
 +  CB          RET               ; Дальний возврат из процедуры (8086+)
 +  C2 iw       RET imm16         ; Ближний возврат из процедуры с освобождением imm16 байт в стеке (8086+)
 +  CA iw       RET imm16         ; Дальний возврат из процедуры с освобождением imm16 байт в стеке (8086+)
 +  
 + ==== IRET, IRETD ====
 +Processor : 8086+ \\
 +Flags     : OF, DF, IF, TF, SF, ZF, AF, PF, CF
 +  CF          IRET              ; Возврат из прерывания при 16-битном размере операнда (8086+)
 +  CF          IRETD             ; Возврат из прерывания при 32-битном размере операнда (80386+)
 +
 + ==== JA, JAE, JB, JBE, JC, JCXZ, JECXZ, JE, JZ, JG, JGE, JL, JLE, JNA, JNAE, JNB, JNBE, JNC, JNE, JNG, JNGE, JNL, JNLE, JNO, JNP, JNS, JNZ, JO, JP, JPE, JPO, JS ====
 +Processor : 8086+ \\
 +Flags     : OF, DF, IF, TF, SF, ZF, AF, PF, CF
 +  77 cb       JA rel8           ; Короткий переход, если выше (CF=0 и ZF=0) 8086
 +  73 cb       JAE rel8          ; Короткий переход, если выше или равно (CF=0)8086
 +  72 cb       JB rel8           ; Короткий переход, если ниже (CF=1)8086
 +  76 cb       JBE rel8          ; Короткий переход, если ниже или равно (CF=1 или ZF=1)8086
 +  72 cb       JC rel8           ; Короткий переход, если перенос (CF=1)8086
 +  E3 cb       JCXZ rel8         ; Короткий переход, если CX=0 8086
 +  E3 cb       JECXZ rel8        ; Короткий переход, если ECX=0 Intel386
 +  74 cb       JE rel8           ; Короткий переход, если равно (ZF=1) 8086
 +  74 cb       JZ rel8           ; Короткий переход, если нуль (ZF=1) 8086
 +  7F cb       JG rel8           ; Короткий переход, если больше (ZF=0 и SF=OF) 8086
 +  7D cb       JGE rel8          ; Короткий переход, если больше или равно (SF=OF) 8086
 +  7C cb       JL rel8           ; Короткий переход, если меньше (SF<>OF) 8086
 +  7E cb       JLE rel8          ; Короткий переход, если меньше или равно (ZF=1 или SF<>OF) 8086
 +  76 cb       JNA rel8          ; Короткий переход, если не выше (CF=1 или ZF=1) 8086
 +  72 cb       JNAE rel8         ; Короткий переход, если не выше или равно (CF=1) 8086
 +  73 cb       JNB rel8          ; Короткий переход, если не ниже (CF=0) 8086
 +  77 cb       JNBE rel8         ; Короткий переход, если не ниже или равно (CF=0 и ZF=0) 8086
 +  73 cb       JNC rel8          ; Короткий переход, если не перенос (CF=0) 8086
 +  75 cb       JNE rel8          ; Короткий переход, если не равно (ZF=0) 8086
 +  7E cb       JNG rel8          ; Короткий переход, если не больше (ZF=1 или SF<>OF) 8086
 +  7C cb       JNGE rel8         ; Короткий переход, если не больше или равно (SF<>OF) 8086
 +  7D cb       JNL rel8          ; Короткий переход, если не меньше (SF=OF) 8086
 +  7F cb       JNLE rel8         ; Короткий переход, если не меньше или равно (ZF=0 и SF=OF) 8086
 +  71 cb       JNO rel8          ; Короткий переход, если не переполнение (OF=0) 8086
 +  7B cb       JNP rel8          ; Короткий переход, если нечетно (PF=0) 8086
 +  79 cb       JNS rel8          ; Короткий переход, если положительно (SF=0) 8086
 +  75 cb       JNZ rel8          ; Короткий переход, если не нуль (ZF=0) 8086
 +  70 cb       JO rel8           ; Короткий переход, если переполнение (OF=1) 8086
 +  7A cb       JP rel8           ; Короткий переход, если паритет (PF=1) 8086
 +  7A cb       JPE rel8          ; Короткий переход, если четно (PF=1) 8086
 +  7B cb       JPO rel8          ; Короткий переход, если нечетно (PF=0) 8086
 +  78 cb       JS rel8           ; Короткий переход, если отрицательно (SF=1) 8086
 +  0F 87 cw/cd JA rel16/32       ; Ближний переход, если выше (CF=0 и ZF=0) Intel386
 +  0F 83 cw/cd JAE rel16/32      ; Ближний переход, если выше или равно (CF=0) Intel386
 +  0F 82 cw/cd JB rel16/32       ; Ближний переход, если ниже (CF=1) Intel386
 +  0F 86 cw/cd JBE rel16/32      ; Ближний переход, если ниже или равно (CF=1 или ZF=1) Intel386
 +  0F 82 cw/cd JC rel16/32       ; Ближний переход, если перенос (CF=1) Intel386
 +  0F 84 cw/cd JE rel16/32       ; Ближний переход, если равно (ZF=1) Intel386
 +  0F 84 cw/cd JZ rel16/32       ; Ближний переход, если нуль (ZF=1) Intel386
 +  0F 8F cw/cd JG rel16/32       ; Ближний переход, если больше (ZF=0 и SF=OF) Intel386
 +  0F 8D cw/cd JGE rel16/32      ; Ближний переход, если больше или равно (SF=OF) Intel386
 +  0F 8C cw/cd JL rel16/32       ; Ближний переход, если меньше (SF<>OF) Intel386
 +  0F 8E cw/cd JLE rel16/32      ; Ближний переход, если меньше или равно (ZF=1 или SF<>OF) Intel386
 +  0F 86 cw/cd JNA rel16/32      ; Ближний переход, если не выше (CF=1 или ZF=1) Intel386
 +  0F 82 cw/cd JNAE rel16/32     ; Ближний переход, если не выше или равно (CF=1) Intel386
 +  0F 83 cw/cd JNB rel16/32      ; Ближний переход, если не ниже (CF=0) Intel386
 +  0F 87 cw/cd JNBE rel16/32     ; Ближний переход, если не ниже или равно (CF=0 и ZF=0) Intel386
 +  0F 83 cw/cd JNC rel16/32      ; Ближний переход, если не перенос (CF=0) Intel386
 +  0F 85 cw/cd JNE rel16/32      ; Ближний переход, если не равно (ZF=0) Intel386
 +  0F 8E cw/cd JNG rel16/32      ; Ближний переход, если не больше (ZF=1 или SF<>OF) Intel386
 +  0F 8C cw/cd JNGE rel16/32     ; Ближний переход, если не больше или равно (SF<>OF) Intel386
 +  0F 8D cw/cd JNL rel16/32      ; Ближний переход, если не меньше (SF=OF) Intel386
 +  0F 8F cw/cd JNLE rel16/32     ; Ближний переход, если не меньше или равно (ZF=0 и SF=OF) Intel386
 +  0F 81 cw/cd JNO rel16/32      ; Ближний переход, если не переполнение (OF=0) Intel386
 +  0F 8B cw/cd JNP rel16/32      ; Ближний переход, если нечетно (PF=0) Intel386
 +  0F 89 cw/cd JNS rel16/32      ; Ближний переход, если положительно (SF=0) Intel386
 +  0F 85 cw/cd JNZ rel16/32      ; Ближний переход, если не нуль (ZF=0) Intel386
 +  0F 80 cw/cd JO rel16/32       ; Ближний переход, если переполнение (OF=1) Intel386
 +  0F 8A cw/cd JP rel16/32       ; Ближний переход, если паритет (PF=1) Intel386
 +  0F 8A cw/cd JPE rel16/32      ; Ближний переход, если четно (PF=1) Intel386
 +  0F 8B cw/cd JPO rel16/32      ; Ближний переход, если нечетно (PF=0) Intel386
 +  0F 88 cw/cd JS rel16/32       ; Ближний переход, если отрицательно (SF=1) Intel386
 + 
 + ==== LOOP, LOOPE, LOOPZ, LOOPNE, LOOPNZ ====
 +Processor : 8086+ \\
 +Flags     : no
 +  E2 cb       LOOP rel8         ; Уменьшить (E)CX и выполнить короткий переход, если (E)CX <> 0 (8086+)
 +  E1 cb       LOOPE rel8        ; Уменьшить(E)CX и выполнить короткий переход, если (E)CX<>0 и ZF=1 (8086+)
 +  E1 cb       LOOPZ rel8        ; Уменьшить(E)CX и выполнить короткий переход, если (E)CX<>0 и ZF=1 (8086+)
 +  E0 cb       LOOPNE rel8       ; Уменьшить(E)CX и выполнить короткий переход, если (E)CX<>0 и ZF=0 (8086+)
 +  E0 cb       LOOPNZ rel8       ; Уменьшить(E)CX и выполнить короткий переход, если (E)CX<>0 и ZF=0 (8086+)
 +  
 + ==== INT ====
 +Processor : 8086+ \\
 +Flags     : no
 +  CC          INT 3             ; Вызов прерывания 3 (#BP, точка останова) (8086+)
 +  CD ib       INT imm8          ; Вызов прерывания imm8 (8086+)
 +  CE          INTO              ; Вызов прерывания 4 (#OF, переполнение), если EFLAGS.OF=1 (8086+)
 +  
 + ==== BOUND ====
 +Processor : 8086+ \\
 +Flags     : no
 +  62 /r       BOUND r16,m16&16  ; Проверяет индекс r16 на выход за границы массива m16&16 (80186+)
 +  62 /r       BOUND r32,m32&32  ; Проверяет индекс r32 на выход за границы массива m32&32 (80386+)
 +
 + ==== IN ====
 +Processor : 8086+ \\
 +Flags     : no
 +  E4 ib       IN AL,imm8        ; Загрузить байт из порта в/в imm8 в регистр AL (8086+)
 +  E5 ib       IN AX,imm8        ; Загрузить слово из порта в/в imm8 в регистр AL (8086+)
 +  E5 ib       IN EAX,imm8       ; Загрузить двойное слово из порта в/в imm8 в регистр AL (80386+)
 +  EC          IN AL,DX          ; Загрузить байт из порта в/в DX в регистр AL (8086+)
 +  ED          IN AX,DX          ; Загрузить слово из порта в/в DX в регистр AL (8086+)
 +  ED          IN EAX,DX         ; Загрузить двойное слово из порта в/в DX в регистр AL (80386+)
 +  
 + ==== OUT ====
 +Processor : 8086+ \\
 +Flags     : no
 +  E6 ib       OUT imm8,AL       ; Вывести байт из AL в порт в/в по адресу imm8 (8086+)
 +  E7 ib       OUT imm8,AX       ; Вывести слово из AX в порт в/в по адресу imm8 (8086+)
 +  E7 ib       OUT imm8,EAX      ; Вывести двойное слово из EAX в порт в/в по адресу imm8 (80386+)
 +  EE          OUT DX,AL         ; Вывести байт из AL в порт в/в по адресу в DX (8086+)
 +  EF          OUT DX,AX         ; Вывести слово из AX в порт в/в по адресу в DX (8086+)
 +  EF          OUT DX,EAX        ; Вывести двойное слово из EAX в порт в/в по адресу в DX (80386+)
 +  
 + ==== MOVS, MOVSB, MOVSW, MOVSD ====
 +Processor : 8086+ \\
 +Flags     : no
 +  A4          MOVS m8,m8        ; Записать в ячейку по адресу ES:(E)DI байт из ячейки с адресом DS:(E)SI (8086+)
 +  A5          MOVS m16,m16      ; Записать в ячейку по адресу ES:(E)DI слово из ячейки с адресом DS:(E)SI (8086+)
 +  A5          MOVS m32,m32      ; Записать в ячейку по адресу ES:(E)DI двойное слово из ячейки с адресом DS:(E)SI (80386+)
 +  A4          MOVSB             ; Записать в ячейку по адресу ES:(E)DI байт из ячейки с адресом DS:(E)SI (8086+)
 +  A5          MOVSW             ; Записать в ячейку по адресу ES:(E)DI слово из ячейки с адресом DS:(E)SI (8086+)
 +  A5          MOVSD             ; Записать в ячейку по адресу ES:(E)DI двойное слово из ячейки с адресом DS:(E)SI (80386+)
 +
 + ==== CMPS, CMPSB, CMPSW, CMPSD ====
 +Processor : 8086+ \\
 +Flags     : OF, SF, ZF, AF, PF, CF
 +  A6          CMPS m8,m8        ; Сравнить байт по адресу DS:(E)SI с байтом по адресу ES:(E)DI (8086+)
 +  A7          CMPS m16,m16      ; Сравнить слово по адресу DS:(E)SI со словом по адресу ES:(E)DI (8086+)
 +  A7          CMPS m32,m32      ; Сравнить двойное слово по адресу DS:(E)SI с двойным словом по адресу ES:(E)DI (80386+)
 +  A6          CMPSB             ; Сравнить байт по адресу DS:(E)SI с байтом по адресу ES:(E)DI (8086+)
 +  A7          CMPSW             ; Сравнить слово по адресу DS:(E)SI со словом по адресу ES:(E)DI (8086+)
 +  A7          CMPSD             ; Сравнить двойное слово по адресу DS:(E)SI с двойным словом по адресу ES:(E)DI (80386+)
 +  
 + ==== SCAS, SCASB, SCASW, SCASD ====
 +Processor : 8086+ \\
 +Flags     : OF, SF, ZF, AF, PF, CF
 +  AE          SCAS m8           ; Сравнить байт по адресу ES:(E)DI с AL (8086+)
 +  AF          SCAS m16          ; Сравнить слово по адресу ES:(E)DI с AX (8086+)
 +  AF          SCAS m32          ; Сравнить двойное слово по адресу ES:(E)DI с EAX (80386+)
 +  AE          SCASB             ; Сравнить байт по адресу ES:(E)DI с AL (8086+)
 +  AF          SCASW             ; Сравнить байт по адресу ES:(E)DI с AX(8086+)
 +  AF          SCASD             ; Сравнить байт по адресу ES:(E)DI с EAX (80386+)
 +  
 + ==== STOS, STOSB, STOSW, STOSD ====
 +Processor : 8086+ \\
 +Flags     : no
 +  AA          STOS m8          ; Сохранить AL по адресу ES:(E)DI (8086+)
 +  AB          STOS m16         ; Сохранить AX по адресу ES:(E)DI (8086+)
 +  AB          STOS m32         ; Сохранить EAX по адресу ES:(E)DI (80386+)
 +  AA          STOSB            ; Сохранить AL по адресу ES:(E)DI (8086+)
 +  AB          STOSW            ; Сохранить AX по адресу ES:(E)DI (8086+)
 +  AB          STOSD            ; Сохранить EAX по адресу ES:(E)DI (80386+)
 +  
 + ==== LODS, LODSB, LODSW, LODSD ====
 +Processor : 8086+ \\
 +Flags     : no  
 +  AC          LODS m8          ; Считать байт по адресу DS:(E)SI в AL (8086+)  
 +  AD          LODS m16         ; Считать слово по адресу DS:(E)SI в AX (8086+)
 +  AD          LODS m32         ; Считать двойное слово по адресу DS:(E)SI в EAX (80386+)
 +  AC          LODSB            ; Считать байт по адресу DS:(E)SI в AL (8086+)
 +  AD          LODSW            ; Считать байт по адресу DS:(E)SI в AX (8086+)
 +  AD          LODSD            ; Считать байт по адресу DS:(E)SI в EAX (80386+)
 +  
 + ==== INS, INSB, INSW, INSD ====
 +Processor : 80286+ \\
 +Flags     : no  
 +  6C          INS m8,DX        ; Загрузить байт из порта в/в DX в память по адресу ES:(E)DI (80286+)
 +  6D          INS m16,DX       ; Загрузить слово из порта в/в DX в память по адресу ES:(E)DI (80286+)
 +  6D          INS m32,DX       ; Загрузить двойное слово из порта в/в DX в память по адресу ES:(E)DI (80386+)
 +  6C          INSB             ; Загрузить байт из порта в/в DX в память по адресу ES:(E)DI (80286+)
 +  6D          INSW             ; Загрузить слово из порта в/в DX в память по адресу ES:(E)DI (80286+)
 +  6D          INSD             ; Загрузить двойное слово из порта в/в DX в память по адресу ES:(E)DI (80386+)
 +  
 + ==== OUTS, OUTSB, OUTSW, OUTSD ====
 +Processor : 80286+ \\
 +Flags     : no  
 +  6E          OUTS DX,m8       ; Вывести байт из ячейки памяти DS:(E)SI в порт в/в по адресу в DX (80286+)
 +  6F          OUTS DX,m16      ; Вывести слово из ячейки памяти DS:(E)SI в порт в/в по адресу в DX (80286+)
 +  6F          OUTS DX,m32      ; Вывести двойное слово из ячейки памяти DS:(E)SI в порт в/в по адресу в DX (80386+)
 +  6E          OUTSB            ; Вывести байт из ячейки памяти DS:(E)SI в порт в/в по адресу в DX (80286+)
 +  6F          OUTSW            ; Вывести слово из ячейки памяти DS:(E)SI в порт в/в по адресу в DX (80286+)
 +  6F          OUTSD            ; Вывести двойное слово из ячейки памяти DS:(E)SI в порт в/в по адресу в DX (80386+)
 +  
 + ==== REP, REPE, REPNE ====
 +Processor : 8086+ \\
 +Flags     : no  
 +  F3 6C       REP INS r/m8,DX  ; Загрузить (E)CX байт из порта в/в DX в память по адресу ES:(E)DI (80286+)
 +  F3 6D       REP INS r/m16,DX ; Загрузить (E)CX  слов из порта в/в DX в память по адресу ES:(E)DI (80286+)
 +  F3 6D       REP INS r/m32,DX ; Загрузить (E)CX  двойных слов из порта в/в DX в память по адресу ES:(E)DI (80386+)
 +  F3 A4       REP MOVS m8,m8   ; Записать по адресу ES:(E)DI блок из (E)CX байт, считываемый по адресу DS:(E)SI (8086+)
 +  F3 A5       REP MOVS m16,m16 ; Записать по адресу ES:(E)DI блок из (E)CX  слов, считываемый по адресу DS:(E)SI (8086+)
 +  F3 A5       REP MOVS m32,m32 ; Записать по адресу ES:(E)DI блок из (E)CX  двойных слов, считываемый по адресу DS:(E)SI (80386+)
 +  F3 6E       REP OUTS DX,r/m8 ; Вывести блок из (E)CX байт из памяти по адресу DS:(E)SI в порт в/в по адресу в DX (80286+)
 +  F3 6F       REP OUTS DX,r/m16 ; Вывести блок из (E)CX слов из памяти по адресу DS:(E)SI в порт в/в по адресу в DX (80286+)
 +  F3 6F       REP OUTS DX,r/m32 ; Вывести блок из (E)CX  двойных слов из памяти по адресу DS:(E)SI в порт в/в по адрсу в DX (80386+)
 +  F3 AC       REP LODS AL      ; Считать блок из (E)CX байт по адресу DS:(E)SI в AL (8086+)
 +  F3 AD       REP LODS AX      ; Считать блок из (E)CX слов по адресу DS:(E)SI в AX 8086
 +  F3 AD       REP LODS EAX     ; Считать блок из (E)CX двойных слов по адресу DS:(E)SI в EAX (80386+)
 +  F3 AA       REP STOS m8      ; Заполнить блок из (E)CX байт по адресу ES:(E)DI содержимым AL (8086+)
 +  F3 AB       REP STOS m16     ; Заполнить блок из (E)CX слов по адресу ES:(E)DI содержимым AX (8086+)
 +  F3 AB       REP STOS m32     ; Заполнить блок из (E)CX двойных слов по адресу ES:(E)DI содержимым EAX (80386+)
 +  F3 A6       REPE CMPS m8,m8  ; Найти неравные байты в блоках из (E)CX байт по адресам DS:(E)SI и ES:(E)DI (8086+)
 +  F3 A7       REPE CMPS m16,m16 ; Найти неравные слова в блоках из (E)CX слов по адресу DS:(E)SI и ES:(E)DI (8086+)
 +  F3 A7       REPE CMPS m32,m32 ; Найти неравные двойные слова в блоках из (E)CX двойных слов по адресу DS:(E)SI и ES:(E)DI (80386+)
 +  F3 AE       REPE SCAS m8     ; Найти байт не равный AL в блоке из (E)CX байт по адресу ES:(E)DI (8086+)
 +  F3 AF       REPE SCAS m16    ; Найти слово не равное AX в блоке из (E)CX слов по адресу ES:(E)DI (8086+)
 +  F3 AF       REPE SCAS m32    ; Найти двойное слово не равное EAX в блоке из (E)CX двойных слов по адресу ES:(E)DI (80386+)
 +  F2 A6       REPNE CMPS m8,m8 ; Найти равные байты в блоках из (E)CX байт по адресам DS:(E)SI и ES:(E)DI (8086+)
 +  F2 A7       REPNE CMPS m16,m16 ; Найти равные слова в блоках из (E)CX слов по адресу DS:(E)SI и ES:(E)DI (8086+)
 +  F2 A7       REPNE CMPS m32,m32 ; Найти равные двойные слова в блоках из (E)CX двойных слов по адресу DS:(E)SI и ES:(E)DI (80386+)
 +  F2 AE       REPNE SCAS m8    ; Найти байт равный AL в блоке из (E)CX байт по адресу ES:(E)DI (8086+)
 +  F2 AF       REPNE SCAS m16   ; Найти слово равное AX в блоке из (E)CX слов по адресу ES:(E)DI (8086+)
 +  F2 AF       REPNE SCAS m32   ; Найти двойное слово равное EAX в блоке из (E)CX двойных слов по адресу ES:(E)DI (80386+)
 +
 + ==== STC ====
 +Processor : 8086+ \\
 +Flags     : CF
 +  F9          STC              ; Установить EFLAGS.CF = 1
 +  
 + ==== CLC ====
 +Processor : 8086+ \\
 +Flags     : CF
 +  F8          CLC              ; Сброс флага EFLAGS.CF
 +  
 + ==== CMC ====
 +Processor : 8086+ \\
 +Flags     : CF
 +  F5          CMC              ; Инверсия флага EFLAGS.CF
 +  
 + ==== STD ====
 +Processor : 8086+ \\
 +Flags     : DF
 +  FD          STD              ; Установить EFLAGS.DF = 1
 +
 + ==== CLD ====
 +Processor : 8086+ \\
 +Flags     : DF
 +  FC          CLD              ; Сброс флага EFLAGS.DF
 +
 + ==== STI ====
 +Processor : 8086+ \\
 +Flags     : IF
 +  FB          STI              ; Установить флаг разрешения внешних маскируемых прерываний
 +
 + ==== CLI ====
 +Processor : 8086+ \\
 +Flags     : IF
 +  FA          CLI              ; Сброс флага EFLAGS.IF (внешние маскируемые прерывания запрещены)
 +  
 + ==== LAHF ====
 +Processor : 8086+ \\
 +Flags     : no
 +  9F          LAHF             ; AH = EFLAGS(SF,ZF,0,AF,0,PF,1,CF)
fasm.1723970756.txt.gz · Last modified: 2024/08/18 08:45 by arv