diff options
Diffstat (limited to 'stage1')
| -rw-r--r-- | stage1/print.asm | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/stage1/print.asm b/stage1/print.asm index 3505eb6..5c4b399 100644 --- a/stage1/print.asm +++ b/stage1/print.asm @@ -10,3 +10,50 @@ print_str: jmp .print .return: ret + +; modify eax, ebx, ecx, edx +print_hex: + mov ebx, 0x10 + jmp print_num +print_dec: + mov ebx, 10 +print_num: + xor ecx, ecx +.convert: + inc ecx + xor edx, edx + div ebx + cmp dl, 10 + jb .digit + add dl, 'A'-10 + jmp .next +.digit: + add dl, '0' +.next: + push dx + cmp eax, 0 + jne .convert +.print: + cmp ecx, 0 + je .return + dec ecx + pop ax + mov ah, 0x0E + int 0x10 + jmp .print +.return: + ret + +newline: + mov al, 10 + call print_chr + + mov al, 13 + call print_chr + + ret + +print_chr: + mov ah, 0x0E + int 0x10 + ret |
