Parabéns, Aleth!! :0
var
é coisa do passado. Agora a gente chama o const
e o let
.".MODEL SMALL
ORG 100h
.DATA
lpcstrMsg DB 46h, 45h, 4Ch, 49h, 5Ah, 20h, 4Eh, 41h, 54h, 41h, 4Ch, 21h, 20h, 03h, 00h
.CODE
LEA DX, lpcstrMsg
PUSH DX
PUSH 1110_1100b
CALL PRINT
RET 00h
; Acessa um regiao de dados da memoria
MACRO CHGDS POS
PUSH AX
MOV AX, POS
MOV DS, AX
POP AX
ENDM CHGDS
; Escreve um texto na tela
PRINT PROC
POP BP
POP AX
POP DX
PUSH BX
PUSH CX
; Prepara as posicoes de leitura e escrita
MOV SI, DX
MOV DI, 00h
@PRINT_WRITE:
CHGDS 0700h ; Acessa a memoria de dados
MOV DL, [SI] ; Recebe o caractere
MOV DH, AL ; Define a cor do caractere
TEST DL, DL
JE @PRINT_END ; Encerra leitura quando chegar ao final do texto
CHGDS 0B800h ; Acessa a memoria do video
MOV [DI], DX ; Escreve o caractere no video
INC SI ; Proximo caractere
ADD DI, 2 ; Proxima posicao do video
JMP @PRINT_WRITE
@PRINT_END:
POP CX
POP BX
PUSH BP
RET 00h
ENDP PRINT