我正在使用引导程序代码。 我的代码应该在显示屏的左上角打印“ A”。 我使用NASM:
BITS 16
mov al, 0x41 ; hex code for 'A'
mov ebx, 0xB8000 ; text screen video memory
mov byte [ebx], al ; write 'A' into video memory
; hlt machine
end:
hlt
jmp end
; MBR signature
times 510-($-$$) db 0
db 0x55, 0xAA
到目前为止,我的代码可以正常工作,
nasm boot.asm -o boot.bin && qemu-system-x86_64 boot.bin
当我用boot.bin
分解objdump -D -b binary -mi386 boot.bin
文件时,得到以下输出:
Disassembly of section .data:
00000000 <.data>:
0: b0 41 mov $0x41,%al
2: 66 bb 00 80 mov $0x8000,%bx
6: 0b 00 or (%eax),%eax
8: 67 88 03 mov %al,(%bp,%di)
b: f4 hlt
c: eb fd jmp 0xb
...
1fe: 55 push %ebp
1ff: aa stos %al,%es:(%edi)
除了部分or (%eax),%eax
,我完全理解了输出。
该指令的目的是什么?为什么NASM会生成该指令?