******************************************************************************** REF: tous ce que j'ai | LES INSTRUCTIONS ASSEMBLEUR | pus trouver... | PAR | | ALLIGATOR427 | 09/96 ******************************************************************************** Pourquoi un ../article\.. sur les instructions ASM? Vu qu'on vous fait des cours de crack, sans les instructions pour vous reperer cela me semblait incomplet. Alors, dans l'attente de la traduc de winice en francais (he oui! on vous le fera!), ca depanne & complete! AAA ajustement ascii de apres une addition. Format BCD AAD ajustement ascii de avant une division BCD AAM ajustement ascii de apres une multiplication. Format BCD AAS ajustement ascii de apres une soustraction. ADC addition avec retenue ADD addition sans retenue AND operation logique ET ARPL ajuste le niveau du privilege (mode protégée) BOUND teste un nombre par rapport a des limites BSF cherche 1 bit de droite a gauche BSR " " " " " gauche a droite BSWAP conversion d'un registre en un format INTEL BT charge 1 bit en CF BTC " " " " " " et complement BTR " " " " " " " " " puis le met a 0 dans la source BTS " " " " " " " " " " " " " " " " "1 " " " " "" " " CALL appel de sous programme CBW convertit l'octet signé de en un mot dans CDQ convertit le mot signé de EAX en un quadruple mot dans CLC mets l'indicateur a 0 dans CF CLD " " " " " " " " " " " " " DF CLI " " " " " " " " " " " " " IF CLTS mets a 0 l'indicateur de changement de contexte Task-Switch-Flag mode protégée. CMC complemente l'indicateur CF CMP comparaison logique CMPS[b][w] compare des chaines de caracteres CMPSD compare des chaines de caractere 80386() CMPXCHG compare l'accumulateur avec AL, AX, ou EAX CWD convertit le contenu signe de AX en un double mots DX:AX CWDE " " " " " "" " "" " " " " " " " "" " " " " " " " dans EAX DAA ajustement decimal de AL apres une addition BCD DAS " " " " " " " " " " " " " " " " " soustraction BCD DEC decrementation DIV division non signee ENTER construit un cadre de pile pour une procedure de haut niveau. ESC acces pour le coprocesseur HLT arret du processeur en attente d'un evenement externe IBTS insere une chaine de bits (mode protegee) IDIV division signée IMUL multiplication signée IN lit un octet ou mot sur un port peripherique INC incrementation INS[b][w] lit une chaine sur un port INT interruption logiciel INTO active l'interruption 4 si l'indicateur OF est armé INBD efface le contenu de la mem cache du 486 INVLPG exploitation du 486 en mode virtuel. multiprocesseur 8088 IRET retour d'interruption IRETD " " " " " " " " " "" depuis un segment de 32bits JA branchement si superieur JAE "" " " " "" " " "" " ou egal JB branchement si inferieur JBE " " " " " " " " " " " " " ou egal JC branchement si CF est a 1 JNC " " " " "" " "" " "" 0 JCXZ " " " " " " " CX " " " " JECXZ branchement si le registre ECX est a 0 JE branchement en cas d'egalité JG branchement si arithmetiquement superieur ou egale JMP branchement a l'adresse indiquée JNA branchement si non superieur JNAE branchement si non superieur ou egal JNB branchement si non inferieur JNBE "" " " " "" " " " "" " " " ou egal JNE branchement en cas de non egalité JNG branchement si arithmetiquement non superieur JNGE " " " " "" " " "" " " " " "" " " "" "" " ou egal JNL branchement si non inferieur arithmetiquement JNLE branchaement si arithmetiquement non inferieur ou egale JNO branchement si l'indicateur OF est a 0 JNP branchement si parité impaire (indicateur PF a 0) JNS branchement si positif JNZ branchement si different JO branchement si OF est a 1 JP branchement si parité pair. indicateur PF est a 1 JPE " " " " " " " " " " " " " " " " " " " " " " " " " JPO " " " "" " " " " " " "impair. " " " " " "" " " 0 JS branchement si negatif JZ branchement en cas d'egalité LAHF charge en AH la partie basse du registre des indicateurs LAR charge le drout d'acces (mode protegée) LDS charge une adresse physique en DS: registre LEA " " " " " " "" " "effective LEAVE libere le cadre de pile, installer par entrée LES charge une adresse physique en ES: registre LFS " " " "" " "" " " " "" " " " FS: " '" " LGDT charge le registre de la table des descripteurs globaux (mode protégée) LGS charge une adresse physique en GS: registre LIDT charge le registre de la table des descripteurs d'interruption (MODE P) LLDT charge le registre de la table des descripteurs locaux LMSW " " " le mot d'etat de la machine (mode protégée) LOCK verrouille le bus LODS[b][w] charge AL/AX avec le contenu de DS:SI LODSD charge EAX avec le contenu de DS:SI LOOP branchament tant que CX #0 LOOPE " " " "" " " " "" " " " "et ZF =1 LOOPNZ " " " " " " "" "" " " "" " ""=0 LOOPZ " " " " " " " " " " "" "" " " =1 LSL charge une limite de segment (mode protegée) LSS charge une adresse physique en SS: registre LTR charge le registre de tache (mode protégée) MOV tranfere une donnée MOVS transfere une chaine de caractere octet par octet ou mot pour mot de DS:SI en ES:DI MOVSD transfere une chaine de caracteres double mot par double mot MOVSX tranfert avec extension de signe MOVZX tranfert avec une extension de 0 MUL multiplication non signée NEG negation par complement de 2 NOP pas d'operation, voir utilisation de samsom pour ex: NOT operation logique NON complement a 1 OR operation logique OU inclusif OUT transmets un octet ou mot a un periph OUTS[b][w] transmets une chaine a un port OUTSD transmets un double mot a un port POP depile un mot POPA depile les registres POPAD depile tous les registres 32 bits POPF depile un mot et le tranfere vers le registre des indicateurs POPFD " """ " DOUBLE MOT "" " " " " "" " " "" " " " " "" " " " "" " "" " sur 32bits PUSH: empile une valeur PUSHA empile tous les registres PUSHAD " " " " " "" " " "" "" 32 bits PUSHF empile le registre des indicateurs PUSHFD empile le registre des indicateurs a 32bits RCL rotation a gauche a travers CF RCR rotation a droite a travers CF REP[z][nz] prefixes de repetition REP[e][ne] pour traiter les chaines de caractere en association avec CX et les indicateurs RET[n][f] retour de sous programme ROL rotation a gauche ROR rotation a droite SAHF copie AH dans la partie basse du registre des indicateurs. SAL decalage a gauche avec introduction de 0 SAR " " " " " droite avec signe SBB soustraction non signée avec prise en compte de CF SCAS[b][w] compare une chaine octet par octet ou mot par mot avec le contenu de AL/AX SCASD compare une chaine double mot par double mot avec le contenu EAX SETA initialisation a 1 si CF et ZF sont a 0, sinon initialisation a 0 SETAE " " " " " " " " " " "" est a 0, sinon init. a 0 SETB " " " " " " " " " " " " " " " 1, " " " " " " " " SETBE " " " " " " " " " " " CF ou ZF est a 1, sinon initialisation a 0 SETE " " " " " " " " " " " ZF est a 1, sinon init. a 0 SETG " " " " " " " " " " " " " " " " 0 et SF=OF, sinon init. a 0 SETGE " " " " " " " " " " " SF=OF, sinon init. a 0 SETL " " " " " " " " " " " SF#OF, sinon init. a 0 SETLE " " " " " " " " " " " ZF est a 1 et SF#OF, sino init a 0 SETNA " " " " " " " " " " " CF ou ZF est a 1, init a 0 SETNAE " " " " " " " " " " " CF est a 1, sinon init. a 0 SETNB " " "" " " "" "" "" CF est a 0, sinon init a 0 SETNBE " " " " " " " "" " " "CF et ZF sont a 0, sinon, init. a 0 SETNE " " " " " " " " " " " ZF est a 0, sino init a 0 SETNG " " " " " " " " " " " " " " " " 1 ou SF#OF, sinon init. a 0 SETNGE " " " " " " "" " " " "SF#OF, sinon init. a 0 SETNL " " " " " " " " " " " "SF et OF sont egaux, sinon init. a 0 SETNLE " " " " " " " " " " " "ZF est a 0 et SF=OF, sinon init a 0 SETNO " " " " " " " " " " " OF est a 0, sinon init a 0 SETNP " " " " " " " " " " " "PF est a 0, " " " "" " " " SETNS " " " " " " "" " "" " SF " " " " " " "" " " " "" SETNZ " " "" " " " "" " " " "ZF " " " "" " "" " " " " SETO " " " " " " " " "" " OF est a 1, "" " "" " " "" SETP " " " " " " " " " " " PF " " " " " " " " " "" " SETPE " " " " "" " " " " " " " " " " " " "" "" " "" " SETPO " " " " " " " " " " " " " " " " 0, " " " " " " "" " SETS " " " " " " " " " " " " SF est a 1, sinon " " " " " SETZ " " " " " " " " "" " " ZF " " " " " " " " "" "" " SGDT sauvegarde le registre de la table des descripteurs globaux(mode prot.) SHL voir SAL SHLD decalage double a gauche SHR decalage a droite avec introduction de 0 SHRD decalage double a droite SIDT sauvegarde le registre de la table des interruptions. (mode protégée) SLDT " " " " " " " " " " " " " " " " " " "" descripteurs locaux (mode P) SMSW sauvegarde le mot d'etat de la machine (mode P) STC mets a 1 l'indicateur CF STD " " " " "" "" " " " DF STI " " " " " " " "" " "IF STIOS[b][w] transfert octet par octet, mot par mot le contenu de AL en ES:DI STOSD transfert double mot par double mot le contenu de EAX en ES:DI STR sauvegarde le registre de tache (mode Protégée) SUB soustraction non signée TEST test si un bit est a 1 VERR test l'autorisation de lecture d'un segment (mode protégée) VERW test l'autorisation d'ecriture dans un segment (mode protégée) XADD addition signée WAIT attends que la ligne BUSY ne soit plus actif XBINVD efface le contenu de la memoire cache du 486 XBTS prends une chaine de bits (mode protégée) XCHG echange les contenus de 2 registres XLAT charge en AL l'octet de la table DS:BX+AL XOR operation logique ou exclusive FINI!!!! Putain c'etait chiant!!! j'espère vraiment que vous en aurez utilité!