diff options
-rw-r--r-- | stage1/print.asm | 47 | ||||
-rw-r--r-- | stage2/main.asm | 47 |
2 files changed, 47 insertions, 47 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 diff --git a/stage2/main.asm b/stage2/main.asm index 50fee42..2181999 100644 --- a/stage2/main.asm +++ b/stage2/main.asm @@ -33,53 +33,6 @@ setup: %include "stage2/paging.asm" %include "stage1/print.asm" -; 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 - [bits 64] long_mode: |