Mais uma vez, implantei uma imagem do Linux em uma unidade USB (por algum motivo, acabou sendo Manjaro, mas essa é uma história completamente diferente), e pensamentos estranhos surgiram na minha cabeça: o BIOS viu uma unidade flash USB e depois? Bem, sim, existe um MBR, provavelmente o GRUB, e ... E uma vez no MBR o código personalizado de outra pessoa foi exibido, significa que uma pessoa simples da Adygea pode programar algo em um computador "grande", mas fora do sistema operacional.
E como é ousado demais fazer essas coisas em idiomas de alto nível e não conhecemos montadores, poupamos diretamente os códigos de operação do 8086.

Introdução
Plano:
- Retirar #
- Retirar Hello, Habrauser!
- Exibir caracteres de entrada (você já pode entreter filhos).
Isenções de responsabilidade e isenções de responsabilidade
Para não nos incomodarmos com o rugido do flopper, treinaremos gatos QEMU. , , dd x86- . .
MBR, - (?) (?) — , Enter. .
— , ( !) - . ( .) ! .
MBR
:
- , Bootstrap Area.
- , ( ) 0x7c00( Compaq).
- , , ( , --). : 640KB, . ( , .)
, — , .
, , , , (sic!) . , ( - ), , .
, - «» 80- «-» 90-, : «» «». «», Lode Runner, «».
«» +
!
 -, , , , , — errata.
, , , .
:
- , MOV,INT,ADD,DIV— , , , . , , , .
- , , , : imm8,r16,r/m32,rel8. , , (, ) , ,DIV BLF6 F3(DIVr/m8, , , — .)F6—DIV,NEG, (opcode extension— .)
, , dd, , , , , — , , -. -, … , POSIX , 
➜  $ echo "48 65 6c 6c 6f 2c 20 48 61 62 72 21" | xxd -r -p 
Hello, Habr!%    
:
➜  $ echo -e "# Comment\n48 65 6c 6c 6f 2c 20  # First line\n48 61 62 72 21        # Last line" | sed 's/#.*$//g' | xxd -r -p
Hello, Habr!%  
( sed-, xxd , hex-dump. ?)
, , .
, sh-#!/bin/sh
IN="${1:-/dev/stdin}"
OUT="${2:-/dev/stdout}"
> $OUT
while read line
do
    echo "$line" | sed 's/#.*$//' | xxd -r -p >> $OUT
done < $IN
 
: LF (aka \n), . , , , , - , — .
— , !
➜  $ ./build loader.mbr loader.img && stat -f %z loader.img
512
512 — , . , .
, bin- 512B, . « dd /dev/zero, !» — . , c ( , ipython) !
,
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
 
, , , QEMU, Exception'.

, , ( ), MBR.
,...
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00
 
, :
55 AA
:
$ qemu-system-i386 -nic none loader.img
-nic none , PXE, — .

, BIOS , ! , !
PRINT "#"
, !
B4 0E                      
B0 23                      
CD 10                      
00 00
00 00 00 00 00 00 00 00
( , 512).
, QEMU !

, , , , :
- B4 0E—- AH- 0E(- mov ah, 0e), BIOS ( ), , .
- B0 23— :- AL- #. ? «»? — ASCII-- man ascii!
- CD 10— : BIOS-, . ,- AL- AH, , : .
AL :
- $(- B0 24)
- %(- B0 25)
- á(- B0 A0, )
PRINT "Hello, Habrauser!"
, , . .
- . — printf('Hell of word') .
, , :
,
B4 0E    
B0 0A    
CD 10
B0 48    
CD 10    
B0 65    
CD 10
B0 6C    
CD 10
B0 6C
CD 10
B0 6F    
CD 10
B0 2C    
CD 10
B0 20    
CD 10
B0 48    
CD 10
B0 61    
CD 10
B0 62    
CD 10
B0 72    
CD 10
B0 61    
CD 10
B0 75    
CD 10
B0 73    
CD 10
B0 65    
CD 10
B0 72    
CD 10
B0 21    
CD 10
00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
 ,
, , :

:
- ,
- , ,
- , BIOS' — - , Booting from Hard Disk....
, :
B8 00 06          
CD 10
B4 0E             
BE 80 7C          
AC                
3C 00             
74 06             
CD 10             
EB F7             
00 00 00 00 00
00 00 00 00 00 00 00 00
...
48 65 6C 6C 6F 2C 20 48   
61 62 72 61 75 73 65 72   
21                        
00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
:
- : , 0x7c00, . ? data- ( ), ( !),SI— .
- SI- AC(- LODS). ,- SI- AL,- SI! , !
- . , . , , ?
- AL, , — ( , 6 ),- 00.
- AL- , BIOS-...
- … 7 — LODS!
, . , .
, - . : BIOS- . … . — ( , — ).
printer.mbr typewriter.mbr.
, :
B4 07   
B0 00   
CD 10   
B4 00   
CD 16   
3C 0D   
75 06   
B4 0E   
CD 10   
B0 0A   
B4 0E   
CD 10   
EB EC   
1
:
- ( QEMU) .
- AH = 00h- 16h, , ,- AL.
- , : OD(akaCRakaReturn/Enter, , ( -), .
- CR- CR,- LF, ,- Enter.
- AL- OD, , .
- : -- , ! 20 .
, :

, :
- , «» ,
- , ,
- «»: Backspace, .
. emacs- .
, .
, - :

, . , :
B8 12 00          
CD 10
B4 0E             
B3 00             
FE C3             
BE 80 7C          
AC                
3C 00             
74 F6             
CD 10             
EB F7             
00
00 00 00 00 00 00 00 00
...
48 65 6C 6C 6F 2C 20 48   
61 62 72 61 68 61 62 72   
21 20                     
00 00 00 00 00 00
00 00 00 00 00 00 00 00
color-printer.mbr
- (? ? BIOS?) , ,
- BL(. , .)
- FE- BL
- : , , , .
.
, .
, :
— !
— .
, Sublime Text :
— --, ! !
.
- .
UPD: eisaev, Andrew_Pinkerton, MrSmith33, Anthony1025 , , .