Point out the obvious mistake
Returning back to asm and coding in general, got an issue with what's probably an obvious mistake but I'm stumped non-the-less.
kputs("Testing");
;
; Print a single character to screen
;
kputchar:
; assumes the register ax will contain the character to print
mov edx, [SCREEN] ; edx = screen
; or ax and colour to give a word correct for screen memory
; E.G. character 'A' (0x41) and colour black background white text
; (0x0F00) becomes 0x0F41
or ax, [COLOUR]
mov WORD[edx], ax ; copy ax to memory pointed to by edx
; increment edx by 2 (I.E. point framebuffer to
; place in memory 2 bytes higher than before
add edx, 2
mov [SCREEN], edx
ret
;
; Print a string to screen
;
kputs:
; get our first argument address into esi
push ebp
mov ebp, esp
mov esi, [ebp + 8]
; assumes string address was moved to esi correctly
xor eax, eax ; eax = 0
lodsb ; load next character
; if al = 0 end
or al, al
jz .kputsend
;mov ax, 'A'
call kputchar
jmp kputs
.kputsend:
call knewline
pop ebp
ret
I get a string of random ASCII characters, uncommenting mov ax, 'A' gives me a line of A's so I know my code works fine, it's obviously just something I'm doing wrong grabbing the argument off the stack.
It might be worth noting I have no debug tools that I know of available as I'm not doing this inside any operating system, hence why I'm asking rather than debugging.
If anyone can point out the mistake for me I'd be really happy!
Auraomega
Junior Poster in Training
57 posts since Jul 2010
Reputation Points: 12
Solved Threads: 7
>>I'm not doing this inside any operating system
Oh! :-O Then how are you running that program?
Ancient Dragon
Retired & Loving It
30,049 posts since Aug 2005
Reputation Points: 5,662
Solved Threads: 2,343
It's running almost direct from GRUB, so effectively it's own kernel.
Auraomega
Junior Poster in Training
57 posts since Jul 2010
Reputation Points: 12
Solved Threads: 7
See, I knew it was something obvious; all fixed now thanks!
Auraomega
Junior Poster in Training
57 posts since Jul 2010
Reputation Points: 12
Solved Threads: 7