BITS 16 mov bl, 0xFA mov dx, 0x0000 .repeat: in al, 0x60 cmp al, bl je .repeat mov bl, al cmp al, 0x1E je .a cmp al, 0x30 je .b cmp al, 0x2E je .c cmp al, 0x20 je .d cmp al, 0x12 je .e cmp al, 0x21 je .f cmp al, 0x22 je .g cmp al, 0x23 je .h cmp al, 0x17 je .i cmp al, 0x24 je .j cmp al, 0x25 je .k cmp al, 0x26 je .l cmp al, 0x32 je .m cmp al, 0x31 je .n cmp al, 0x18 je .o cmp al, 0x19 je .p cmp al, 0x10 je .q cmp al, 0x13 je .r cmp al, 0x1F je .s cmp al, 0x14 je .t cmp al, 0x16 je .u cmp al, 0x2F je .v cmp al, 0x11 je .w cmp al, 0x2D je .x cmp al, 0x15 je .y cmp al, 0x2C je .z cmp al, 0x39 je .space jmp .repeat .a: mov cl, 41h jmp .print .b: mov cl, 0x42 jmp .print .c: mov cl, 0x43 jmp .print .d mov cl, 0x44 jmp .print .e mov cl, 0x45 jmp .print .f mov cl, 0x46 jmp .print .g mov cl, 0x47 jmp .print .h mov cl, 0x48 jmp .print .i mov cl, 0x49 jmp .print .j mov cl, 0x4A jmp .print .k mov cl, 0x4B jmp .print .l mov cl, 0x4C jmp .print .m mov cl, 0x4D jmp .print .n mov cl, 0x4E jmp .print .o mov cl, 0x4F jmp .print .p mov cl, 0x50 jmp .print .q mov cl, 0x51 jmp .print .r mov cl, 0x52 jmp .print .s mov cl, 0x53 jmp .print .t mov cl, 0x54 jmp .print .u mov cl, 0x55 jmp .print .v mov cl, 0x56 jmp .print .w mov cl, 0x57 jmp .print .x mov cl, 0x58 jmp .print .y mov cl, 0x59 jmp .print .z mov cl, 0x5A jmp .print .space mov cl, 0x20 jmp .print .print mov ax, 0xB800 mov es, ax mov al, cl mov cl, bl mov ah, 0xE4 mov bx, dx mov [es:bx], ax mov bl, cl add dx,2 jmp .repeat times 510-($-$$) db 0 dw 0xAA55