copia um byte ou word de uma fonte especificada para um destino especificado. MOV destino, fonte
PUSH copia word especificada para o topo da pilha. POP copia word do topo da pilha para local especificado. PUSHA copia todos os registradores para a pilha (80186 emdiante).
POPA copia words da pilha para todos os registradores. XCHG Exchange bytes ou words. XLAT
substitui AL por um byte de uma tabela, endereado por [BX+AL] MOV BX, 2800 ; end inicial da tabela. XLAT ; AL =[BX+AL] Instrues para entrada/sada de dados: IN
copia um byte ou word de uma porta especificada para o acumulador (a porta sempre uma cte ou DX). IN AL, OC8H IN AX, DX OUT
copia umbyte ou word do acumulador para uma porta especificada (a porta sempre uma cte ou DX). OUT OC8H, AL OUT DX, AX Instrues para transferncia de endereo especial: LEA carrega emumregistrador de 16 bits, o endereo (offset) de uma varivel. LEA BX, [BP]DELTA LDS carrega DS e umreg de 16 bits comumendereo FAR (32 bits). LDS SI, SEGMENTO[DI] LES carrega DS e umreg de 16 bits comumendereo FAR (32 bits). LES DI, [BX]BUFFER Instrues para transferncia para flags: LAHF copia a parte baixa do registrador de flags (FL) para AH. SAHF copia o byte contido emAH, para a parte baixa do registrador de flags (FL). PUSHF copia o registrador de flags para a pilha. POPF copia o topo da pilha para o registrador de flags. Instrues para adio: ADD
adio: ADD destino, fonte
ADD AL, 74H ADD DX, BX ADC
adio comcarry
ADC DX, BX ADC AL, 45H INC
incrementa umbyte ou word especificada
INC BL INC VARIVEL AAA
ajuste ASCII do acumulador depois da adio. converte umvalor BCD para ASCII aps a adio, somente para o reg AL.
DAA ajuste para BCD, aps uma soma, somente reg AL. Instrues para subtrao: SUB subtrao SUB AL, VARIAVEL SUB DX, BX SBB subtrao comcarry. SUB AL, 74H SUB BX, [BX] DEC
decrementa umbyte ou word especificada
DEC CL DEC VARIVEL NEG inverte o sinal de umnmero.(complemento de 2) CMP
antes: ASCII 5 - ASCII 9 =>AL=FCH (-4) depois: result =04H, CF =1 DAS ajuste para BCD, aps uma subtrao, somente reg AL. Instrues para multiplicao: MUL
multiplicao no sinalizada byte x byte ou word x word MUL BH ; AL x BH =>result emAX MUL CX ; AX x CX =>result emDX e AX IMUL multiplicao sinalizada AAM
converte binrio para BCD aps a multiplicao antes: BCD 5 X BCD 9 =>AX =002DH depois: AX =0405H Instrues para diviso: DIV
diviso semsinal:DIV fonte AL=quociente e AH=resto DIV BH =>AX/BH DIV CX =>DXeAX/CX IDIV
diviso comsinal:DIV fonte AL=quociente e AH=resto DIV BL =>AX/BL DIV CX =>DXeAX/CX AAD
converte BCD para binrio antes da diviso. antes: AX=0607 (BCD) depois: AX =43H (67 emdecimal) CBW
converte uma word sinalizada em uma doubleword sinalizada. antes: DX=0000H e AX=F0C7H (-389710) depois: DX=FFFFH e AX=F0C7H (-389710) Instrues lgicas: NOT inverte todos os bits do destino NOT AX NOT [SI+06H] AND
AND destino, fonte
AND BX, 00FFH AND CX, [SI] OR OR destino, fonte
OR CL, BH OR AH, 0H XOR XOR destino, fonte
XOR BX, FFH XOR AL, AL TEST AND fonte, fonte resultado somente nos flags. TEST DX, AX TEST VARIAVEL, 0FH Instrues para deslocamento: SHL deslocameto esquerda SHL destino, contagem SHL DX, 1 SHL AX, CL SHR deslocameto direita SHR destino, contagem SHR BX, 1 SHR [BX], CL SAL deslocameto esquerda SAL destino, contagem SAL [SI+BX], 1 SAL AX, CL SAR deslocameto direita SAR destino, contagem SAR SI, 1 SAR DX, CL Instrues para rotao: ROL
rotao esquerda ROL destino, contagem ROL BH, 1 ROL BX, CL ROR
rotao direita comflag carry RCR destino, contagem RCR BX, 1 RCR [BX], CL Instrues para string: REP repete operao_string o nmero de vezes contido emCX. REPE/REPZ REPNE/REPNZ repete operao_string enquanto condio for verdadeira ou enquanto CX maior que zero. MOVS/MOVSB/MOVS W transfere string ( [ES:DI] <=[DS:SI] ) emblocos de byte (MOVSB), palavra (MOVSW) ou pela definio destino/fonte. CMPS/CMPSB/CMPSW comparao de strings INS/INSB/INSW entrada de string por uma porta. A partir do 80186 OUTS/OUTSB/OUTSW SCAS/SCASB/SCASW varre o string apontado por ES:DI procurando o contedo de AL (SCASB), AX (SCASW). LODS/LODSB/LODSW carrega AL ou AX como byte (LODSB), a palavra (LODSW) ou o objeto designado por fonte (LODS) localizado embloco de memria apontado por DS:SI. STOS/STOSB/STOSW carreaga o bloco de memria apontado por DS:DI comAL, AX. Instrues para set/reset de flags: STC set carry flag CF =1 CLC clear carry flag CF =0 CMC complement the carry flag inverte CF STD set direction flag DF =1 (decrementa apontador de string) CLD clear direction flag DF =0 (incrementa apontador de string) STI set interrupt flag IF =1 (habilita interrupes) CLI clear interrupt flag IF =0 (desabilita interrupes) Instrues incondicionais para saltos e subrotinas: CALL
chamada de subrotina
- sub-rotinas NEAR (perto): altera somente IP CALL LABEL => IP =LABEL CALL BX => IP =BX CALL WORD PTR [BX] => IP =[BX+3] e [BX+2] - sub-rotinas FAR (distante): altera CS e IP CALL SUBROT => SUBROT PROC FAR CALL DWORD PTR [BX] => CS =[BX+1] e [BX] IP =[BX+3] e [BX+2] RET Retorno de subrotina J MP
J ump incondicional
J MP LABEL J MP BX J MP WORD PTR [BX] - near jump J MP DWORD PTR [SI] - far jump Instrues condicionais para saltos: J A J NBE J ump if above J ump if not below or equal salta se superior salta se no inferior ou igual CF=0 e ZF=0
J AE J NB J ump if above or equal J ump if not below salta se superior ou igual salta se no inferior CF=0
J B J NAE J ump if below J ump if not above or equal salta se inferior salta se no superior ou igual CF=1
J BE J NA J ump if below or equal J ump if not above salta se inferior ou igual salta se no superior CF=1 ou ZF=1
J C J ump if carry salta se ocorrer carry CF=1 J E J Z J ump if equal J ump if zero salta se igual salta se resultado zero ZF=1
J G J NLE J ump if greater J ump if not less or equal salta se maior (>) salta se no menor ou igual ZF=0 e CF =OF
J GE J NL J ump if greater or equal J ump if not less salta se maior ou igual (>=) salta se no menor SF =OF
J L J NGE J ump if less J ump if not greater or equal salta se menor (<) salta se no maior ou igual SF OF
J LE J NG J ump if less or equal J ump if not greater salta se menor ou igual (<=) salta se no maior ZF=1 ou SF OF
J NC J ump if no carry salta se no ocorreu carry CF=0 J NE J NZ J ump if not equal J ump if not zero salta se no igual salta se no ocorreu zero ZF=0
J NO J ump if no overflow salta se no ocorreu overflow OF=0 J NP J PO J ump if no parity J ump if parity odd salta se no ocorreu paridade salta se paridade mpar PF=0
J NS J ump if not signed salta se positivo SF=0 J O J ump if overflow salta se ocorreu overflow OF=1 J P J PE J ump if parity J ump if parity even salta se ocorreu paridade salta se paridade par PF=1
J S J ump if signed (if negative) salta se negativo SF=1 Instrues especiais para saltos: LOOP dec CX e salta enquanto CX 0 LOOPE/LOOPZ dec CX e salta enquanto CX 0 e Z=1 (LOOPE/LOOPZ) LOOPNE/LOOPNZ dec CX e salta enquanto CX 0 e Z=0 (LOOPNE/LOOPNZ) J CXZ salta se CX =0h Instrues de interrupes: INT executa uma rotina de interrupo. INT n INTO interrupo quando ocorrer overflow (OF =1). INTO ==>executa a interrupo 4 se OF=1 IRET retorno de interrupo Instrues para sincronizao como hardware externo: HLT cessa a execuo do processador aguardando uma interrupo. WAIT suspende a operao do processador at o recebimento de umsinal do coprocessador (pino TEST). Evita o acesso simultneo de de mais de umprocessador a ummesmo endereo de memria. ESC Usado para enviar instrues para o coprocessador. LOCK impede o acesso de outros processadores ao barramento durante a execuo da prxima instruo. NOP nenhuma operao