Specifications
MICROPROCESSADORES
EXEMPLOS E EXECRCÍCIOS
6
Luís Miguel Charrua Figueiredo 6 - 10 E.N.I.D.H.
PUBLIC WRITE_HEX_DIGIT
;......................................................................;
; ;
;Este procedimento converte os 4 bits mais baixos do registo DL ;
;num número hexadecimal e imprime-os ;
;Use: WRITE_CHAR ;
;......................................................................;
WRITE_HEX_DIGIT PROC
PUSH DX ;Põe na stack o valor do registo DX
CMP DL,10 ;Compara o valor 10 com o valor do registo DL
JAE HEX_LETTER ;se não, salta para HEX_LETER
ADD DL,"0" ;se é, converte em dígito numérico
JMP Short WRITE_DIGIT ;escreve o caracter
HEX_LETTER:
ADD DL,"A"-10 ;converte um caracter para um número hexadecimal
WRITE_DIGIT:
CALL WRITE_CHAR ;mostra o caracter no ecran
POP DX ;Retorna o valor inicial para o registo DL
RET ;Retorna o controlo ao procedimento que chamou
WRITE_HEX_DIGIT ENDP
PUBLIC WRITE_CHAR
;......................................................................;
;Este procedimento imprime um caracter no ecran usando uma função D.O.S.;
;......................................................................;
WRITE_CHAR PROC
PUSH AX ;Põe na stack o valor do registo AX
MOV AH,2h ;Função 2h
INT 21h ;Interrupção 21h
POP AX ;Retira da stack o valor inicial do registo AX
RET ;Retorna o controlo ao procedimento que chamou
WRITE_CHAR ENDP
END TEST_WRITE_DECIMAL ;finaliza o programa
Exemplo 5
Este programa mostra no ecran o valor dos 256 caracteres do código ASCII.
;nome do programa: five.asm
.model small
.stack
.code
PRINT_ASCII PROC
MOV DL,00h ;move o valor 00h para o registo DL
MOV CX,255 ;move o valor decimal 255 para o registo CX










