"Printing to the screen without a db"

All about the OSDev Wiki. Discussions about the organization and general structure of articles and how to use the wiki. Request changes here if you don't know how to use the wiki.
Post Reply
Synon
Member
Member
Posts: 169
Joined: Sun Sep 06, 2009 3:54 am
Location: Brighton, United Kingdom

"Printing to the screen without a db"

Post by Synon »

I was reading this article and noticed the following message:
note, you don't want to use this in a bootloader, it messes with the data section and I don't know how to place the boot signature at the end of the data section and still pad out to 512 bytes
I'm not sure if this is a good or bad idea, but it seems to work; rather than use the code

Code: Select all

%macro print 1+
    section .data    ; At the end of the binary.
%%string:
    db %1,0
    section .text    ; Back to where we were.
 
    mov si,%%string
    call print_string    ; Print it out using the print_string function.
%endmacro
as in the Wiki article, if you remove the section information:

Code: Select all

%macro print 1+
	%%string:	db	%1,	0
	mov	si,	%%string
	call	putstr
%endmacro
you can use it normally. I've tested this and it seems to work if you don't put any section information in your program, and instead let the assembler do this. It works with nasm, I'm not sure about other assemblers (though I think this article only applies to nasm anyway).

I'm not sure if there are any side-effects to doing this, though.
User avatar
Combuster
Member
Member
Posts: 9301
Joined: Wed Oct 18, 2006 3:45 am
Libera.chat IRC: [com]buster
Location: On the balcony, where I can actually keep 1½m distance
Contact:

Re: "Printing to the screen without a db"

Post by Combuster »

You're executing data that way. The reason it works is because you are lucky not to screw up the system and align back up before the mov si...
"Certainly avoid yourself. He is a newbie and might not realize it. You'll hate his code deeply a few years down the road." - Sortie
[ My OS ] [ VDisk/SFS ]
Synon
Member
Member
Posts: 169
Joined: Sun Sep 06, 2009 3:54 am
Location: Brighton, United Kingdom

Re: "Printing to the screen without a db"

Post by Synon »

Combuster wrote:You're executing data that way. The reason it works is because you are lucky not to screw up the system and align back up before the mov si...
Oh, right, ok.
Post Reply