
























Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Linguagem de Montagem Assembly para processadores 8086 e 8088 usando o montador TASM
Tipologia: Slides
1 / 32
Esta página não é visível na pré-visualização
Não perca as partes importantes!

























(Aula 16)
Roberta Lima Gomes - LPRM/DI/UFESSistemas de Programação I – Eng. Elétrica
2007/
2222
a^ ProfRoberta L.G. - LPRM/DI/UFES
modelo^
de^ memória
a^ usar^
em^ nosso
programa
.STACKReserva^
espaço^ de
memória
para^ as
instruções
de^ programa
na^ pilha
.CODEDefine^ as
instruções
do^ programa,
relacionado
ao^ segmento
de^ código
ENDFinaliza
um^ programa
assembly
4444
a^ ProfRoberta L.G. - LPRM/DI/UFES
5555
a^ ProfRoberta L.G. - LPRM/DI/UFES
^ AX:^ Acumulador^ ^ Usado em operações aritméticas. ^ BX:^ Base^ ^ Usado para indexar tabelas de memória (ex.: índice de vetores). ^ CX:^ Contador^ ^ Usado como contador de repetições em loop e movimentação repetitivade dados. ^ DX:^ Dados^ ^ Uso geral.
AX^ BX^ CX^ DX^
(16 bits)
AH/AL BH/BL CH/CL DH/DL
(8 bits)
7777
a^ ProfRoberta L.G. - LPRM/DI/UFES
mov var, Ds
memória,^
reg_seg
mov Ax, Ds
reg16,^ reg_seg
mov Ds, Ax
reg_seg,^
reg
mov var, 12
registrador,
imediato
mov Si, var
registrador,
memória
mov var, Si
memória,^
registrador
mov Ax, var
acumulador,
memória
mov var, Al
memória,^
acumulador
mov Bx, Cx
registrador,
registrador
Exemplo
Operação
8888
a^ ProfRoberta L.G. - LPRM/DI/UFES
int^ x,^ y,
z; main(){ x^ =^ 7;y^ =^ 13;z^ =^ x;}
mov^ x,7mov^ y,13mov^ DX,xmov^ z,DX .DATAx^ dw^
y^ dw^
z^ dw^
10101010
a^ ProfRoberta L.G. - LPRM/DI/UFES
int^ x^ =^
unsigned
int^ y^ =
unsigned
int^ soma,
sub; main(){ x^ =^ x
+^ 8;soma =^ x^ +^ y;x = x -^3 ; sub = x^ -^ y }
add^ x,^
;x=x+ mov^ DX,x
;DX=x add^ DX,y
;DX=DX+y=x+y mov^ soma,Dx
;soma=DX=x+y sub^ x,3 ;
;x=x- mov^ DX,x
;DX=x sub^ DX,y
;DX=DX-y=x-y mov^ sub,DX
;sub=DX=x-y .DATAx^ dw^
y^ dw^
soma^ dw^
sub^ dw^
11111111
a^ ProfRoberta L.G. - LPRM/DI/UFES
13131313
a^ ProfRoberta L.G. - LPRM/DI/UFES
^ destino xor origem (bit a bit)
Xor var, 3
memória, imediato
Xor Si, 0CAh
registrador, imediato
Xor Al, 10101111b
acumulador, imediato
Xor var, Dx
memória, registrador
Xor Cl, var
registrador, memória
Xor Bx, Cx
registrador, registrador
Exemplo Operação
14141414
a^ ProfRoberta L.G. - LPRM/DI/UFES
xor^ DH,DH
xor^ DH,AH
xor^ AH,AH
xor^ AH,BH
xor^ BH,BH
xor^ BH,DH
16161616
a^ ProfRoberta L.G. - LPRM/DI/UFES
^ Registrador de Flags: Consiste em um grupo individual de bits decontrole (flag)
[O D I T S Z A P C] OF (Overflow Flag):
Setada quando ocorre overflow aritmético. DF (Direction Flag):
Setada para auto-incremento em instruções de string. IF (Interruption Flag):
Permite que ocorram interrupções quando setada.Pode ser setadapelo sistema ou pelo usuário. TF (Trap Flag) (debug):
Usada por debugadores para executar programas passo a passo. SF (Signal Flag):
Resetada (SF=0) quando um resultado for um número positivo ou zero esetada (SF=1) quando um resultado for negativo. ZF (Zero Flag):
Setada quando um resultado for igual a zero. AF (Auxiliar Flag):
Setada quando há “vai um” na metade inferior de um byte. PF (Parity Flag):
Setada quando o número de bits 1 de um resultado for par. CF (Carry Flag):
Setada se houver “vai um” no bit de maior ordem do resultado. Tambémusada por instruções para tomadas de decisões.
17171717
a^ ProfRoberta L.G. - LPRM/DI/UFES
flags de estado
Flags setadas de acordo com oresultado de: destino - origem^ ZF=0, SF= 0, CF=
19191919
a^ ProfRoberta L.G. - LPRM/DI/UFES
^ JE rótulo
(Jump if Equal ... JZ) ZF = 1 --> Salta se A == B ^ JNE rótulo
(Jump if not equal...JNZ) ZF = 0^ -->^ Salta se A != B ^ JA rótulo
(Jump if Above) (CF=0) AND (ZF=0)
--> Salta se A>B
^ JAE rótulo
(Jump if Above or Equal) CF=^
--> Salta se A>=B ^ JB rótulo
(Jump if Below) CF=
--> Salta se A<B ^ JBE rótulo
(Jump if Below or Equal) (CF=1) OR (ZF=1) --> Salta se A<=B
20202020
a^ ProfRoberta L.G. - LPRM/DI/UFES
já^ é^ pressuposto
ser^ o^ maior
deles
;Salta
se^ AX^ >=
;caso
BX^ seja
de^ fato
o^ maior
deles
;continuação
do^ programa
...