Download Tutorial de Linguagem Assembly

Transcript
Este programa imprime o primeiro de dois dígitos hexadecimais.
Nono exemplo
-a100
297D:0100
297D:0102
297D:0104
297D:0106
MOV
MOV
MOV
SHR
AH,02
DL,BL
CL,04
DL,CL
297D:0108
297D:010B
297D:010E
297D:0110
297D:0113
297D:0115
297D:0117
297D:011A
297D:011D
297D:0120
297D:0122
297D:0125
297D:0127
ADD
CMP
JL
ADD
INT
MOV
AND
ADD
CMP
JL
ADD
INT
INT
DL,30
DL,3A
0113
DL,07
21
DL,BL
DL,0F
DL,30
DL,3A
0125
DL,07
21
20
;Função 2 (escreve um caractere na tela)
;Põe o valor de BL em DL
;Põe o valor 04 em CL
;Desloca os 4 bits mais altos do número ao
;nibble mais à direita.
;Adiciona 30 a DL
;Compara Dl com 3A
;Salta ao endereço 0113, se menor
;Adiciona 07 a DL
;Chama interrupção do DOS
;Põe o valor de BL em DL
;Transporta fazendo AND dos números bit a bit
;Adiciona 30 a DL
;Compara Dl com 3A
;Salta ao endereço 0125, se menor
;Adiciona 07 a DL
;Chama interrupção do DOS
;Finaliza o programa
Este programa imprime o segundo de dois dígitos hexadecimais.
Décimo exemplo
-a100
297D:0100
297D:0102
297D:0104
297D:0106
297D:0109
297D:010C
297D:010E
297D:0111
297D:0113
297D:0115
297D:0117
297D:0119
297D:011B
297D:011D
297D:011F
297D:0121
MOV
INT
MOV
SUB
CMP
JLE
SUB
MOV
SHL
INT
SUB
CMP
JLE
SUB
ADD
INT
AH,01
21
DL,AL
DL,30
DL,09
0111
DL,07
CL,04
DL,CL
21
AL,30
AL,09
011F
AL,07
DL,AL
20
;Função 1 (lê caractere do teclado)
;Chama interrupção do DOS
;Põe o valor de AL em DL
;Subtrai 30 de DL
;Compara DL com 09
;Salta ao endereço 0111, se menor ou igual
;Subtrai 07 de DL
;Põe o valor 04 em CL
;Insere zeros ... direita
;Chama interrupção do DOS
;Subtrai 30 de AL
;Compara AL com 09
;Salta ao endereço 011f, se menor ou igual
;Subtrai 07 de AL
;Adiciona AL a DL
;Finaliza o programa
Este programa pode ler dois dígitos hexadecimais.
Décimo primeiro exemplo
-a100
297D:0100
297D:0103
CALL
INT
0200
20
;Chama um procedimento
;Finaliza o programa
-a200
297D:0200
297D:0201
297D:0203
297D:0205
297D:0207
297D:0209
PUSH
MOV
INT
CMP
JB
CMP
DX
AH,08
21
AL,30
0203
AL,46
;Põe o valor de DX na pilha
;Função 8
;Chama interrupção do DOS
;Compara AL com 30
;Salta se CF é ativado ao endereço 0203
;Compara AL com 46