Text-only version
Departamento de Eletroeletrônica
webcache.googleusercontent.com/searc… 1/55
18/11/2010 2 - Instruções Assembly
Índice
3 - Instruções Assembly........................................................................
webcache.googleusercontent.com/searc… 2/55
18/11/2010 2 - Instruções Assembly
*Modo Imediato
*Modo Direto
MOV [DI-1000h],DX
*Modo Implícito
MOV [DI],DX
MOV AX,[BP+04h]
MOV [BP+DI+10h],BX
webcache.googleusercontent.com/searc… 6/55
18/11/2010 2 - Instruções Assembly
a 65535.
3 - Instruções Assembly
Neste capítulo serão apresentadas asinstruções assembly do 8086, que se
aplicam a qualquer microprocessador dafamília 80XXX da Intel
a) MOV - Move
MOV [SI], AL
MOV [BX+DI],AX
MOV [400], AL
MOV AL,[BX+2]
MOV AX,[SI]
MOV AL,[400]
MOV ES,BX
MOV DS,[SI]
MOV SS,[BX]
MOV AX,CS
MOV CX,SS
MOV [500],DS
webcache.googleusercontent.com/searc… 8/55
18/11/2010 2 - Instruções Assembly
5 - De registrador para registrador /da memória ou registrador para
registrador / deregistrador para a memória
MOV CL,DH
MOV AL,AH
MOV SI,BX
MOV DI,DX
MOV CL,[SI]
MOV DX,[SI+1000]
MOV [BX+DI],DH
MOV TABELA[BX+3],CL
MOV AX,99H
MOV BL,99H
MOV CX,0FFFFH
MOV DI,61CH
Modode operação:
webcache.googleusercontent.com/searc… 10/55
18/11/2010 2 - Instruções Assembly
1- Decrementa o SP
3- Decrementa o SP
4- Move o byte mais baixo do operando para a locação indicada por SS:SP
Modode operação:
2- Incrementa o SP em 1
4- Incrementa o SP em 1
webcache.googleusercontent.com/searc… 11/55
18/11/2010 2 - Instruções Assembly
Formato: CBW
Flags: Nenhum
Formato: CWD
Flags: Nenhum
• Um carry foigerado do MSB para o bit de sinal mais o bit de sinal não gerou um
carry para oCF, ou seja, o resultado foi maior do que o maior número positivo
que pode serrepresentado no formato complemento de dois.
• Um carry foigerado do bit de sinal para o MSB mas nenhum carry foi gerado
para o bit desinal, ou seja, o resultado foi menor do que o menor valor
negativo que pode serrepresentado no formato complemento de dois.
h) ADD - Adição
webcache.googleusercontent.com/searc… 14/55
18/11/2010 2 - Instruções Assembly
de AX e entãosoma o conteúdo do flag carry
(*) O flag carry será setado, apósa execução da instrução ADC, caso uma das
condições abaixo ocorra:
j) SUB - Subtração
webcache.googleusercontent.com/searc… 16/55
18/11/2010 2 - Instruções Assembly
SBB BX,[SI] ;Subtrai a word gravada em DS:SI
do conteúdo deBX e então subtrai do
resultado o conteúdo do flag carry
webcache.googleusercontent.com/searc… 17/55
18/11/2010 2 - Instruções Assembly
webcache.googleusercontent.com/searc… 18/55
18/11/2010 2 - Instruções Assembly
MOV AX,1234H
MOV BX,6000H
webcache.googleusercontent.com/searc… 19/55
18/11/2010 2 - Instruções Assembly
MOV AX,1234H
MOV BX,6000H
webcache.googleusercontent.com/searc… 20/55
18/11/2010 2 - Instruções Assembly
Formato: DAA
ADD AL,AH
DAA
webcache.googleusercontent.com/searc… 22/55
18/11/2010 2 - Instruções Assembly
entre dois valores BCD compactados (um dígito em cadanibble), para obter um
par de dígitos BCD compactados.
Formato: DAS
SUB AL,DL
DAS
webcache.googleusercontent.com/searc… 23/55
18/11/2010 2 - Instruções Assembly
Formato: AAA
ADD AL,CL
AAA
Formato: AAS
webcache.googleusercontent.com/searc… 24/55
18/11/2010 2 - Instruções Assembly
SUB AL,36H
AAS
Formato: AAM
Flags: Afetados PF, SF, ZF; indefinidos, AF, CF, OF. (osflags são afetados de
acordo com o resultado em AL.)
MUL BL
AAM
webcache.googleusercontent.com/searc… 25/55
18/11/2010 2 - Instruções Assembly
Procedimentoexecutado pela instrução:
Formato: AAD
Flags: Afetados PF, SF, ZF; indefinidos, AF, CF, OF. (osflags são afetados de
acordo com o resultado em AL.)
AAD
NOT CL
Propósito: Executar a função lógica AND (“E”) entre cada bitde um operando-
fonte e seu correspondente em um operando-destino, colocando oresultado no
operando-destino.
webcache.googleusercontent.com/searc… 27/55
18/11/2010 2 - Instruções Assembly
Propósito: Executar a função lógica OR (“OU”) entre cada bitde um operando-
fonte e seu correspondente em um operando-destino, colocando oresultado no
operando-destino.
Formato: OR destino,fonte
RCL destino, CL
webcache.googleusercontent.com/searc… 29/55
18/11/2010 2 - Instruções Assembly
posição para a esquerda.
RCR destino, CL
webcache.googleusercontent.com/searc… 30/55
18/11/2010 2 - Instruções Assembly
ROL destino, CL
webcache.googleusercontent.com/searc… 31/55
18/11/2010 2 - Instruções Assembly
Formato: ROR destino,1 ou
ROR destino, CL
SAL destino, CL
webcache.googleusercontent.com/searc… 32/55
18/11/2010 2 - Instruções Assembly
SAR destino, CL
webcache.googleusercontent.com/searc… 33/55
18/11/2010 2 - Instruções Assembly
SHR destino, CL
webcache.googleusercontent.com/searc… 34/55
18/11/2010 2 - Instruções Assembly
-----------
Exemplo: -----------
webcache.googleusercontent.com/searc… 35/55
18/11/2010 2 - Instruções Assembly
atual: JMP novo_longe ----> Segmento de código atual
-----------
-----------
-----------
CALL BX ; Indireta,intra-segmento
webcache.googleusercontent.com/searc… 37/55
18/11/2010 2 - Instruções Assembly
para encerrar uma sub-rotina “near”, que reside nomesmo segmento, a instrução
RET deverá apenas retirar uma palavra do topo dapilha e movê-la para o
registrador IP. Para endereçar uma procedurre “far”, quereside em um outro
segmento de código, a instrução RET deverá retirar as duaspalavras que foram
armazenadas na pilha pela instrução CALL inter-segmento,restaurando os antigos
valores de CS e IP.
Operaçãoda instrução
• Incrementar oSP em 2.
• Incrementar oSP em 2.
Formato: RET
Procedimentoda instrução:
webcache.googleusercontent.com/searc… 38/55
18/11/2010 2 - Instruções Assembly
• Decrementa oSP em 2, salva o IP na pilha e carrega-o com a palavra de baixa
ordem dentro dovetor selecionado. A próxima instrução a ser executada será
então a primeiradentro da rotina de interrupção.
Flags: Afetados: IF e TF
Operaçãoda instrução
• Incrementar oSP em 2.
• Incrementar oSP em 2.
• Incrementar oSP em 2.
Formato: IRET
webcache.googleusercontent.com/searc… 39/55
18/11/2010 2 - Instruções Assembly
LOOPZ alvo
Formato: LOOPNEalvo ou
LOOPNZ alvo
• MOVS - Movestring
• CMPS - Comparastring
webcache.googleusercontent.com/searc… 43/55
18/11/2010 2 - Instruções Assembly
• SI -Registrador de índice de fonte
webcache.googleusercontent.com/searc… 44/55
18/11/2010 2 - Instruções Assembly
q1) CMPS/CMPSB/CMPSW - Comparaduas string do tipo byte ou word
Propósito: Comparar o elemento indicado por DI, dentro dosegmento extra, com
o conteúdo do acumulador. A instrução efetua a subtração dobyte ou palavra
indicada por DI do conteúdo do acumulador AL ou AX, afetandoporém somente os
flags, e não os operandos. Após a comparação, o registrador DIé
automaticamente incrementado ou decrementado, dependendo do estado do flag
dedireção. O valor do incremento ou decremento é 1 ou 2, dependendo se
acomparação foi realizada entre operandos do tipo byte ou word,
respectivamente.
webcache.googleusercontent.com/searc… 47/55
18/11/2010 2 - Instruções Assembly
Diante das instruções MOVS, LODS eSTOS, pode-se usar o prefixo REP, que
decrementa o registrador CX (sem afetaros flags) e repete a instrução string
enquanto CX ≠ 0.
REPZ instrução_string
REPNZ instrução_string
Formato: CLC
Flags: Afetado: CF
Formato: CMC
Flags: Afetado: CF
Formato: STC
Flags: Afetado: CF
Formato: CLD
webcache.googleusercontent.com/searc… 49/55
18/11/2010 2 - Instruções Assembly
Flags: Afetado: DF
Formato: STD
Flags: Afetado: DF
Formato: CLI
Flags: Afetado: IF
Formato: STI
Flags: Afetado: IF
webcache.googleusercontent.com/searc… 50/55
18/11/2010 2 - Instruções Assembly
Formato: LAHF
(SF)=bit 7 de AH
(ZF)=bit 6 de AH
(AF)=bit 4 de AH
(PF)=bit 2 de AH
(CF)=bit 0 de AH
Formato: SAHF
Formato: PUSHF
Formato: POPF
A porta é identificada com um valor de8 bits que permite a acesso a portas
cujos endereços variam de 0 a 255, ou com o uso de DX que,sendo de 16 bits,
permite a especificação de endereços de portas que variam de0 a 65535.
IN acumulador, DX
Exemplo: IN AL, 38H ;Transfere para AL, o byte na porta de entrada 38H.
A porta é identificada com um valor de8 bits que permite a acesso a portas
cujos endereços variam de 0 a 255, ou com o uso de DX que,sendo de 16 bits,
permite a especificação de endereços de portas que variam de0 a 65535.
Exemplo: OUT 61H,AL ;Transfere para a porta de saída 61H, o byte em AL.
LEA SI,[BX+DI+5]
webcache.googleusercontent.com/searc… 53/55
18/11/2010 2 - Instruções Assembly
Formato: XLAT
12 14 16 18 20 22 24 26 28 30 32 34...
MOV BX,0300H
MOV AL,04H
XLAT
o registrador AL conterá o valor 20. Isto é, ovalor inicial 04 foi convertido para 20
(elemento de índice 04). O primeiroelemento da tabela tem índice 00.
webcache.googleusercontent.com/searc… 55/55