19 lines
		
	
	
		
			642 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			19 lines
		
	
	
		
			642 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| .code16 # tell the assembler that we're using 16 bit mode
 | |
| .global init # makes our label "init" available to the outside
 | |
| 
 | |
| init: # this is the beginning of our binary later.
 | |
|   #jmp init # jump to "init"
 | |
|   #ljmpw $0xFFFF, $0 # jumps to the "reset vector", doing a reboot
 | |
|   jmp printhelloworld
 | |
| 
 | |
| printhelloworld:
 | |
|   mov $0xe37, %ax
 | |
|   int $0x10 # video bios interrupt
 | |
|   mov $0xe38, %ax
 | |
|   int $0x10 # video bios interrupt
 | |
| 
 | |
| .fill 510-(.-init), 1, 0 # add zeroes to make it 510 bytes long
 | |
| # . is current position - start position
 | |
| .word 0xaa55 # magic bytes that tell BIOS that this is bootable
 | |
| # x86 is little endian - so bytes are swapped in memory!
 |