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/09/12 08:34] – [IN] arvfasm [2024/09/26 08:40] (current) – [CLC] arv
Line 663: Line 663:
   ED          IN EAX,DX         ; Загрузить двойное слово из порта в/в DX в регистр AL (80386+)   ED          IN EAX,DX         ; Загрузить двойное слово из порта в/в DX в регистр AL (80386+)
      
-   ==== OUT ====+ ==== OUT ====
 Processor : 8086+ \\ Processor : 8086+ \\
 Flags     : no Flags     : no
Line 672: Line 672:
   EF          OUT DX,AX         ; Вывести слово из AX в порт в/в по адресу в DX (8086+)   EF          OUT DX,AX         ; Вывести слово из AX в порт в/в по адресу в DX (8086+)
   EF          OUT DX,EAX        ; Вывести двойное слово из EAX в порт в/в по адресу в DX (80386+)   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.1726130066.txt.gz · Last modified: 2024/09/12 08:34 by arv