BITS 16 ; seta o segmento de dados mov ax, 0x07C0 mov ds, ax ; entra no Mode 13h mov ah, 0x00 mov al, 0x13 int 0x10 ; cor do caractere a imprimir mov bl, 47 ; chama print para imprimir msg1 mov si, msg1 call print ; seta cor do caractere, mensagem a imprimir ; e chama print novamente mov bl, 23 mov si, msg2 call print ; loop infinito jmp $ print: ; estes valores são usados pelo interrupt 0x15 ; para atrasar a execução mov cx, 1 mov dx, 00 _repeat: ; carrega um caractere em al e retorna caso este ; seja igual a zero lodsb cmp al, 0 je _return ; atrasa a execução mov ah, 0x86 int 0x15 ; imprime o caractere mov ah, 0x0E int 0x10 ; repete jmp _repeat _return: ret msg1: db 'Feliz Aniversario, s0n1c-', 13, 10, 0 msg2: db 'by xsrv', 0 times 510-($-$$) db 0 dw 0xAA55