All pastes #50640 Raw Edit

Stuff

public text v1 · immutable
#50640 ·published 2006-04-23 03:45 UTC
rendered paste body
.intel_syntax noprefix

.code16
.org 0x7c00

.text

.global _start

_start:

        mov ax, cs         # cs = code segment
        mov ds, ax         # ds = cs
                           # (this way, we don't have to care much about where our data is located)
        mov ax, 0xB800     # 0xB8000 is the base of the text video memory
        mov es, ax         # Remember the memory model!
        mov si, text       # Remember that ds:si -> es:di
        xor di, di         # a xor a is always zero. (di is given the value 0)

around: mov al, [ds:si]    # give al the value of what ds:si points to
        cmp al, 0          # compare if al contains zero ("Hello world!",0)
        je stop            # if so, stop writing to the screen
        mov [es:di], al    # move the content of al to es:di (text video memory)
        inc si             # select the next byte in the Hello world!-string
        add di, 2          # and goto the next position on the screen.
        jmp around         # and go back to the beginning of the loop
stop:   ret                # and return back to the caller function

text:   .ascii "H`ello world!\0"