Escolar Documentos
Profissional Documentos
Cultura Documentos
Assembly Bsico
Registradores de segmentos
DS rea de memria que est sendo utilizada
Ponteiros: IP = PC
216 segmentos
0000-0000
.
216endereos
.
0000-FFFF
.
.
.
.
FFFF-0000
.
.
Qual o tamanho memria?
FFFF-FFFF
adio
Registradores gerais
AL, BL
AX,BX
BL,AL
BX,AX
operao
AL = AL + BL
AX = AX + BX
BL = BL + AL
BX = BX + AX
adio
Registradores gerais
AL, BL
AX,BX
BL,AL
BX,AX
operao
AL = AL - BL
AX = AX - BX
BL = BL - AL
BX = BX - AX
Cdigo da multiplicao
32060
7d3c00
256
Multiplicao
Registradores Gerais
BL
BX
operao
AX = AL * BL
DX:AX = AX*BX
Diviso
Registradores Gerais
BL
BX
operao
AX = AL / BL
DX:AX = AX/BX
AL = quociente AH = resto
AX = quociente DX = resto
Apresentao de Dados
Apresentao de Dados
Apresentao de Dados
A interrupo 20 (int 20) objetivo: retornar do controle do computador para
o sistema operacional (ou seja o encerramento do programa).
Caso um programa no possua a interrupo int 20 o mesmo pode ficar em
estado de bloqueado, eternamente, pois para aquele processo o SO no
recebeu o comando de volta.
Continuando o programa entrando
com a instruo int 20
Apresentao de Dados
Apresentao do comando U
Apresentao de Dados
O comando mov
Apresentao de Dados
Gravando programa
Apresentao de Dados
Abrindo programa
Apresentao de Dados
Programa para imprimir na tela a string alo mundo!
Apresentao de Dados
Veja s o que o comando D (dump) faz:
Fim da mensagem
Apresentao de Dados
Salvando o programa al mundo.
Incio do programa:
Transparncia 25
Apresentao de Dados
O flag carry (CY e NC)
10000
Apresentao de Dados
Uma nova adio, sobreposta a anterior, gerou NC para o carry.
Apresentao de Dados
Apresentando valores em binrio:
Comando RCL (Rotao, por meio do carry, para esquerda.
Exemplo
BX = 00AA tal que BL = AA.
Em binrio:
BX = 0000 0000 1010 1010
BL = 1010 1010
RCL BL, 1
Rotao para a esquerda
Soma 1 em BL (quando no estoura flag CY)
Apresentao de Dados
CONTINUANDO
Valor inicial de BX: 00AA (ou apenas AAh)
Ao
IP
Execuo Carry
1
r IP
t
0100
2
r IP
t
0100
3
r IP
t
0100
4
r IP
t
0100
5
r IP
t
0100
6
r IP
t
0100
7
r IP
t
0100
8
r IP
t
0100
Flag
CY
Anotao
1
(BX)BL
0054
NC
00A9
CY
0052
NC
00A5
CY
004A
NC
0095
CY
002A
NC
0055
Apresentao de Dados
Veja o exemplo ilustrativo
1
10
101
1010
10101010
01010100
10101000 + 1 =
10101001
01010010
10100100 + 1 =
10100101
54
A9
52
Carry no estoura com isto realiza soma
A5
Apresentao de Dados
Desenvolvendo o mesmo programa com um loop:
Apresentao de Dados
Executando:
Apresentao de Dados
Executando
Apresentao de Dados
Um verso um pouco melhor do mesmo programa:
Informa o SO para imprimir um caractere armazenado em DL
DL = 30 + Carry
se Carry = NC ento 30 + 0
se Carry = CY ento 30 + 1
Apresentao de Dados
Outros Flags
Zero Flag (ZF) Sinalizado com ZR (zero) ou NZ (no zero)
Sign Flag (SF) Sinalizado com NG (negativo) ou PL (positivo)
Over Flag (OF) Sinalizado com OV (overflow) ou NV (no overflow)
Apresentao de Dados
Analisando o Flag ZF
Apresentao de Dados
Analisando os Flags: Sign Flag (SF) e Over Flag (OF)
Apresentao de Dados
Objetivo: mostrar um valor de um dgito expresso em notao hexadecimal.
0aF
Parte numrica 30 a 39
Parte alfabtica de 41 a 46
3A
3B
3C
3D
3E
3F
40
41
42
43
D
E
F
44
45
46
Apresentao de Dados
Utilizar dois grupos de caracteres
30 a 39
40 a 46
Diferena de 7 posies.
010F
Apresentao de Dados
O comando SHR Rotaciona para direita um nmero X de bits. Este nmero
deve estar armazenado em CL. Valor mximo da rotao = 16 (10hex).
Apresentao de Dados
Exibindo valores em hexadecimal (nibble a esquerda da parte baixa de bx).
[Escreva em seu caderno qual o processamento realizado por cada linha].
Apresentao de Dados
Utilizando comando e para exibir um valor em hexa (nibble a direita de part
baixa de bx).
0B45:0100 mov ah,02
Apresentao de Dados
Exibindo dos dgitos em hexa na tela (toda parte baixa de bx).
Entrada de Dados
Utilizar a int 21 com controle de entrada 01 em AH. Exemplo
Leitura e armazenamento
do valor hexadecimal,
armazenando em AL
Leitura do valor 05,
Armazenado em al com
35 (ascii ref a 5)
35 30 = 5
AL - 09
Salta para 010c se
zf = zr
Subtrai 07 em al, encontrando as
letras.
Entrada de Dados
Leitura de dois caracteres em Hexa
Possibilita leitura
Realiza a leitura ex: A = 61
Realiza a leitura ex: DL = AL
Realiza a leitura ex: DL = 31
DL - 9
Se zf = zr
DL - 7 = 2A
CL = 4
Move para esquerda (L) um nibble de DL
Nova leitura ex: A = 61
AL = AL 30
AL - 9
Se zf = zr
AL 7 = 2A
DL = A + 2A