qemu运行第一个X86汇编程序

新建一个文件,命名为start.asm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
mov ax, 0b800h
mov ds, ax

mov byte [0x00], '2'
mov byte [0x02], '0'
mov byte [0x04], '2'
mov byte [0x06], '2'
mov byte [0x08], ','
mov byte [0x0a], 'H'
mov byte [0x0c], 'a'
mov byte [0x0e], 'p'
mov byte [0x10], 'p'
mov byte [0x12], 'y'
mov byte [0x14], ' '
mov byte [0x16], 'n'
mov byte [0x18], 'e'
mov byte [0x1a], 'w'
mov byte [0x1c], ' '
mov byte [0x1e], 'Y'
mov byte [0x20], 'e'
mov byte [0x22], 'a'
mov byte [0x24], 'r'
mov byte [0x26], '!'

jmp $

times 510-($-$$) db 0
db 0x55, 0xaa

编译汇编程序

1
$ nasm -f bin start.asm -o start.img

qemu运行

1
$ qemu-system-x86_64 -fda start.bin

会看到如下输出

Screenshot_20220103_130235.png

虚拟机运行

Untitled

Untitled

Untitled

其十六进制如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
B8 00 B8 8E D8 C6 06 00 00 32 C6 06 02 00 30 C6 06 04 00 32 C6 06 
06 00 32 C6 06 08 00 2C C6 06 0A 00 48 C6 06 0C 00 61 C6 06 0E 00
70 C6 06 10 00 70 C6 06 12 00 79 C6 06 14 00 20 C6 06 16 00 6E C6
06 18 00 65 C6 06 1A 00 77 C6 06 1C 00 20 C6 06 1E 00 59 C6 06 20
00 65 C6 06 22 00 61 C6 06 24 00 72 C6 06 26 00 21 EB FE 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 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

我们可以看到结束为55AA