fasm
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
fasm [2024/08/18 08:45] – [SHL] arv | fasm [2024/09/26 08:40] (current) – [CLC] arv | ||
---|---|---|---|
Line 454: | Line 454: | ||
D3 /5 SHR r/ | D3 /5 SHR r/ | ||
C1 /5 ib SHR r/ | C1 /5 ib SHR r/ | ||
+ | | ||
+ | ==== SHLD, SHRD ==== | ||
+ | Processor : 80386+ \\ | ||
+ | Flags : SF, ZF, PF, CF | ||
+ | OF A4 SHLD r/ | ||
+ | OF A4 SHLD r/ | ||
+ | OF A5 SHLD r/ | ||
+ | OF A5 SHLD r/ | ||
+ | OF AC SHRD r/ | ||
+ | OF AC SHRD r/ | ||
+ | OF AD SHRD r/ | ||
+ | OF AD SHRD r/ | ||
+ | | ||
+ | ==== RCR, RCL, ROL, ROR ==== | ||
+ | Processor : 8086+ \\ | ||
+ | Flags : OF, CF | ||
+ | D0 /2 RCL r/ | ||
+ | D2 /2 RCL r/ | ||
+ | C0 /2 ib RCL r/ | ||
+ | D1 /2 RCL r/ | ||
+ | D3 /2 RCL r/ | ||
+ | C1 /2 ib RCL r/ | ||
+ | D1 /2 RCL r/ | ||
+ | D3 /2 RCL r/ | ||
+ | C1 /2 ib RCL r/ | ||
+ | D0 /3 RCR r/ | ||
+ | D2 /3 RCR r/ | ||
+ | C0 /3 ib RCR r/ | ||
+ | D1 /3 RCR r/ | ||
+ | D3 /3 RCR r/ | ||
+ | C1 /3 ib RCR r/ | ||
+ | D1 /3 RCR r/ | ||
+ | D3 /3 RCR r/ | ||
+ | C1 /3 ib RCR r/ | ||
+ | D0 /0 ROL r/ | ||
+ | D2 /0 ROL r/ | ||
+ | C0 /0 ib ROL r/ | ||
+ | D1 /0 ROL r/ | ||
+ | D3 /0 ROL r/ | ||
+ | C1 /0 ib ROL r/ | ||
+ | D1 /0 ROL r/ | ||
+ | D3 /0 ROL r/ | ||
+ | C1 /0 ib ROL r/ | ||
+ | D0 /1 ROR r/ | ||
+ | D2 /1 ROR r/ | ||
+ | C0 /1 ib ROR r/ | ||
+ | D1 /1 ROR r/ | ||
+ | D3 /1 ROR r/ | ||
+ | C1 /1 ib ROR r/ | ||
+ | D1 /1 ROR r/ | ||
+ | D3 /1 ROR r/ | ||
+ | C1 /1 ib ROR r/ | ||
+ | |||
+ | ==== TEST ==== | ||
+ | Processor : 8086+ \\ | ||
+ | Flags : OF, SF, ZF, PF | ||
+ | A8 ib TEST AL, | ||
+ | A9 iw TEST AX, | ||
+ | A9 id TEST EAX, | ||
+ | F6 /0 ib TEST r/ | ||
+ | F7 /0 iw TEST r/ | ||
+ | F7 /0 id TEST r/ | ||
+ | 84 /r TEST r/ | ||
+ | 85 /r TEST r/ | ||
+ | 85 /r TEST r/ | ||
+ | |||
+ | ==== BSWAP ==== | ||
+ | Processor : 80486+ \\ | ||
+ | Flags : no | ||
+ | 0F C8+rd BSWAP r32 ; Перестановка байтов в 32-битном регистре | ||
+ | |||
+ | |||
+ | ==== JMP ==== | ||
+ | Processor : 8086+ \\ | ||
+ | Flags : no | ||
+ | EB cb JMP rel8 ; Короткий переход, | ||
+ | E9 cw JMP rel16 ; Ближний переход, | ||
+ | E9 cd JMP rel32 ; Ближний переход, | ||
+ | FF /4 JMP r/m16 ; Ближний косвенный переход, | ||
+ | FF /4 JMP r/m32 ; Ближний косвенный переход, | ||
+ | EA cd JMP ptr16: | ||
+ | EA cp JMP ptr16: | ||
+ | FF /5 JMP m16: | ||
+ | FF /5 JMP m16: | ||
+ | |||
+ | ==== 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: | ||
+ | 9A cp CALL ptr16: | ||
+ | FF /3 CALL m16: | ||
+ | FF /3 CALL m16: | ||
+ | | ||
+ | ==== 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 ; Короткий переход, | ||
+ | 73 cb JAE rel8 ; Короткий переход, | ||
+ | 72 cb JB rel8 ; Короткий переход, | ||
+ | 76 cb JBE rel8 ; Короткий переход, | ||
+ | 72 cb JC rel8 ; Короткий переход, | ||
+ | E3 cb JCXZ rel8 ; Короткий переход, | ||
+ | E3 cb JECXZ rel8 ; Короткий переход, | ||
+ | 74 cb JE rel8 ; Короткий переход, | ||
+ | 74 cb JZ rel8 ; Короткий переход, | ||
+ | 7F cb JG rel8 ; Короткий переход, | ||
+ | 7D cb JGE rel8 ; Короткий переход, | ||
+ | 7C cb JL rel8 ; Короткий переход, | ||
+ | 7E cb JLE rel8 ; Короткий переход, | ||
+ | 76 cb JNA rel8 ; Короткий переход, | ||
+ | 72 cb JNAE rel8 ; Короткий переход, | ||
+ | 73 cb JNB rel8 ; Короткий переход, | ||
+ | 77 cb JNBE rel8 ; Короткий переход, | ||
+ | 73 cb JNC rel8 ; Короткий переход, | ||
+ | 75 cb JNE rel8 ; Короткий переход, | ||
+ | 7E cb JNG rel8 ; Короткий переход, | ||
+ | 7C cb JNGE rel8 ; Короткий переход, | ||
+ | 7D cb JNL rel8 ; Короткий переход, | ||
+ | 7F cb JNLE rel8 ; Короткий переход, | ||
+ | 71 cb JNO rel8 ; Короткий переход, | ||
+ | 7B cb JNP rel8 ; Короткий переход, | ||
+ | 79 cb JNS rel8 ; Короткий переход, | ||
+ | 75 cb JNZ rel8 ; Короткий переход, | ||
+ | 70 cb JO rel8 ; Короткий переход, | ||
+ | 7A cb JP rel8 ; Короткий переход, | ||
+ | 7A cb JPE rel8 ; Короткий переход, | ||
+ | 7B cb JPO rel8 ; Короткий переход, | ||
+ | 78 cb JS rel8 ; Короткий переход, | ||
+ | 0F 87 cw/cd JA rel16/ | ||
+ | 0F 83 cw/cd JAE rel16/ | ||
+ | 0F 82 cw/cd JB rel16/ | ||
+ | 0F 86 cw/cd JBE rel16/ | ||
+ | 0F 82 cw/cd JC rel16/ | ||
+ | 0F 84 cw/cd JE rel16/ | ||
+ | 0F 84 cw/cd JZ rel16/ | ||
+ | 0F 8F cw/cd JG rel16/ | ||
+ | 0F 8D cw/cd JGE rel16/ | ||
+ | 0F 8C cw/cd JL rel16/ | ||
+ | 0F 8E cw/cd JLE rel16/ | ||
+ | 0F 86 cw/cd JNA rel16/ | ||
+ | 0F 82 cw/cd JNAE rel16/ | ||
+ | 0F 83 cw/cd JNB rel16/ | ||
+ | 0F 87 cw/cd JNBE rel16/ | ||
+ | 0F 83 cw/cd JNC rel16/ | ||
+ | 0F 85 cw/cd JNE rel16/ | ||
+ | 0F 8E cw/cd JNG rel16/ | ||
+ | 0F 8C cw/cd JNGE rel16/ | ||
+ | 0F 8D cw/cd JNL rel16/ | ||
+ | 0F 8F cw/cd JNLE rel16/ | ||
+ | 0F 81 cw/cd JNO rel16/ | ||
+ | 0F 8B cw/cd JNP rel16/ | ||
+ | 0F 89 cw/cd JNS rel16/ | ||
+ | 0F 85 cw/cd JNZ rel16/ | ||
+ | 0F 80 cw/cd JO rel16/ | ||
+ | 0F 8A cw/cd JP rel16/ | ||
+ | 0F 8A cw/cd JPE rel16/ | ||
+ | 0F 8B cw/cd JPO rel16/ | ||
+ | 0F 88 cw/cd JS rel16/ | ||
+ | |||
+ | ==== LOOP, LOOPE, LOOPZ, LOOPNE, LOOPNZ ==== | ||
+ | Processor : 8086+ \\ | ||
+ | Flags : no | ||
+ | E2 cb LOOP rel8 ; Уменьшить (E)CX и выполнить короткий переход, | ||
+ | E1 cb LOOPE rel8 ; Уменьшить(E)CX и выполнить короткий переход, | ||
+ | E1 cb LOOPZ rel8 ; Уменьшить(E)CX и выполнить короткий переход, | ||
+ | E0 cb | ||
+ | E0 cb | ||
+ | | ||
+ | ==== INT ==== | ||
+ | Processor : 8086+ \\ | ||
+ | Flags : no | ||
+ | CC INT 3 ; Вызов прерывания 3 (#BP, точка останова) (8086+) | ||
+ | CD ib INT imm8 ; Вызов прерывания imm8 (8086+) | ||
+ | CE INTO ; Вызов прерывания 4 (#OF, переполнение), | ||
+ | | ||
+ | ==== BOUND ==== | ||
+ | Processor : 8086+ \\ | ||
+ | Flags : no | ||
+ | 62 /r BOUND r16, | ||
+ | 62 /r BOUND r32, | ||
+ | |||
+ | ==== IN ==== | ||
+ | Processor : 8086+ \\ | ||
+ | Flags : no | ||
+ | E4 ib IN AL, | ||
+ | E5 ib IN AX, | ||
+ | E5 ib IN EAX, | ||
+ | EC IN AL,DX ; Загрузить байт из порта в/в DX в регистр AL (8086+) | ||
+ | ED IN AX,DX ; Загрузить слово из порта в/в DX в регистр AL (8086+) | ||
+ | ED IN EAX, | ||
+ | | ||
+ | ==== OUT ==== | ||
+ | Processor : 8086+ \\ | ||
+ | Flags : no | ||
+ | E6 ib OUT imm8, | ||
+ | E7 ib OUT imm8, | ||
+ | E7 ib OUT imm8, | ||
+ | EE OUT DX,AL ; Вывести байт из AL в порт в/в по адресу в DX (8086+) | ||
+ | EF OUT DX,AX ; Вывести слово из AX в порт в/в по адресу в DX (8086+) | ||
+ | EF OUT DX, | ||
+ | | ||
+ | ==== MOVS, MOVSB, MOVSW, MOVSD ==== | ||
+ | Processor : 8086+ \\ | ||
+ | Flags : no | ||
+ | A4 MOVS m8,m8 ; Записать в ячейку по адресу ES:(E)DI байт из ячейки с адресом DS:(E)SI (8086+) | ||
+ | A5 MOVS m16, | ||
+ | A5 MOVS m32, | ||
+ | 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, | ||
+ | A7 CMPS m32, | ||
+ | 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, | ||
+ | 6D INS m32, | ||
+ | 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, | ||
+ | 6F OUTS DX, | ||
+ | 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/ | ||
+ | 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, |
fasm.1723970756.txt.gz · Last modified: 2024/08/18 08:45 by arv