Specifications

MICROPROCESSADORES
EXEMPLOS E EXECRCÍCIOS
6
Luís Miguel Charrua Figueiredo 6 - 6 E.N.I.D.H.
297D:0219 POP DX ;Extrai o valor de DX da pilha
297D:021A RET ;Retorna o controlo ao programa principal
297D:021B CMP AL,41 ;Compara AL com 41
297D:021D JB 0203 ;Salta se CF é activado ao endereço 0203
297D:021F MOV AH,02 ;Função 2 (escreve um caractere no ecran)
297D:022 MOV DL,AL ;Põe o valor AL em DL
297D:0223 INT 21 ;Chama interrupção do DOS
297D:0225 SUB AL,37 ;Subtrai 37 de AL
297D:0227 POP DX ;Extrai o valor de DX da stack
297D:0228 RET ;Retorna o controle ao programa principal
Exemplos usando o Tasm/Tlink
Exemplo 1
Este programadois caracteres e apresenta-os no ecran.
;nome do programa: one.asm
;
.model small
.stack
.code
mov AH,1h ;Função 1 do DOS
Int 21h ;lê o caracter e retorna o código ASCII ao registo AL
mov DL,AL ;move o código ASCII para o registo DL
sub DL,30h ;subtrai de 30h para converter a um dígito de 0 a 9
cmp DL,9h ;compara se o dígito está entre 0 e 9
jle digit1 ;se verdadeiro obtém o primeiro número (4 bits)
sub DL,7h ;se falso, subtrai de 7h para converter a uma letra A-F
digit1:
mov CL,4h ;prepara para multiplicar por 16
shl DL,CL ;multiplica para converter dentro dos 4 bits mais altos
int 21h ;obtém o próximo caracter
sub AL,30h ;repete a operação de conversão
cmp AL,9h ;compara o valor 9h com o conteúdo do registo AL
jle digit2 ;se verdadeiro, obtém o segundo dígito
sub AL,7h ;se falso, subtrai de 7h
digit2:
add DL,AL ;adiciona o segundo dígito
mov AH,4Ch ;função 4Ch do DOS (exit)
Int 21h ;interrupção 21h
End ;finaliza o programa