mirror of
https://github.com/Ed94/bare_x86.git
synced 2024-09-20 05:07:34 -07:00
59 lines
1.0 KiB
ArmAsm
59 lines
1.0 KiB
ArmAsm
; Hello world.
|
|
|
|
; x86
|
|
; 16-bit - Real Mode, V86 Mode
|
|
|
|
%include "AAL.x86.S"
|
|
|
|
|
|
; 16-Bit Mode
|
|
[BITS 16]
|
|
; The ORG directive specifies the starting address of a segment
|
|
[ORG Mem_BootSector_Start]
|
|
|
|
|
|
; A label to the address in memory
|
|
; Auto calculated by the assembler
|
|
start :
|
|
|
|
textmode_ClearScreen :
|
|
; Params
|
|
mov AH, Video_SetMode
|
|
mov AL, VideoMode_Text_80x25
|
|
; Call Interrupt
|
|
int VideoService
|
|
|
|
; Set Data segment to the text mode's memory buffer
|
|
mov AX, Video_Text_MemBuffer
|
|
mov DS, AX
|
|
|
|
%macro SetChar 2
|
|
; word : 16-bit (2-byte) increments
|
|
; [offset] : specifies offset in Data Segment (DS)
|
|
; Character
|
|
mov word [%1 * 2 ], %2
|
|
; Attributes - Low: Black, High: White
|
|
mov word [%1 * 2 + 1], 0x0F
|
|
%endmacro
|
|
SetChar 0x00, 'H'
|
|
SetChar 0x01, 'e'
|
|
SetChar 0x02, 'l'
|
|
SetChar 0x03, 'l'
|
|
SetChar 0x04, 'o'
|
|
SetChar 0x05, ' '
|
|
SetChar 0x06, 'W'
|
|
SetChar 0x07, 'o'
|
|
SetChar 0x08, 'r'
|
|
SetChar 0x09, 'l'
|
|
SetChar 0x0A, 'd'
|
|
|
|
hang :
|
|
jmp short hang
|
|
|
|
|
|
; Byte pad 512 bytes (zeroed)
|
|
times 510-$+start db 0
|
|
; Master Boot Record signature
|
|
db 0x55
|
|
db 0xAA
|