Files
x86-bare-metal-examples/min.S
Ciro Santilli 61f0ad8dda Remove END
2015-10-05 16:58:44 +02:00

25 lines
640 B
ArmAsm

/* Minimal example that does nothing, just halts. */
/* Tell GAS to generate 16 bit code. */
.code16
/* Don't listen to interrupts. */
cli
/*
Zero ds.
This is only needed if we are going to access memory.
The program might work on QEMU without this, but fail on real hardware:
http://stackoverflow.com/questions/32508919/how-to-produce-a-minimal-bios-hello-world-boot-sector-with-gcc-that-works-from-a
You cannot write immediates direclty to it, must pass through ax:
http://stackoverflow.com/questions/19074666/8086-why-cant-we-move-an-immediate-data-into-segment-register
*/
xor %ax, %ax
mov %ax, %ds
/* Stop the processor. */
ret