24 lines
805 B
NASM
24 lines
805 B
NASM
|
[bits 32]
|
||
|
; Define some constants
|
||
|
VIDEO_MEMORY equ 0xb8000
|
||
|
WHITE_ON_BLACK equ 0x0f
|
||
|
|
||
|
; prints a null - terminated string pointed to by EDX
|
||
|
print_string_pm:
|
||
|
pusha
|
||
|
mov edx, VIDEO_MEMORY ; Set edx to the start of vid mem.
|
||
|
|
||
|
print_string_pm_loop:
|
||
|
mov al, [ ebx ] ; Store the char at EBX in AL
|
||
|
mov ah, WHITE_ON_BLACK ; Store the attributes in AH
|
||
|
cmp al, 0 ; if ( al == 0) , at end of string , so
|
||
|
je print_string_pm_done ; jump to done
|
||
|
mov [ edx ], ax ; Store char and attributes at current
|
||
|
; character cell.
|
||
|
add ebx, 1 ; Increment EBX to the next char in string.
|
||
|
add edx, 2 ; Move to next character cell in vid mem.
|
||
|
jmp print_string_pm_loop ; loop around to print the next char.
|
||
|
|
||
|
print_string_pm_done:
|
||
|
popa
|
||
|
ret ; Return from the function
|