或(%eax),%eax的目的是什么?

时间:2018-09-11 12:26:49

标签: assembly x86 nasm objdump

我正在使用引导程序代码。 我的代码应该在显示屏的左上角打印“ 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,我完全理解了输出。

该指令的目的是什么?为什么NA​​SM会生成该指令?

0 个答案:

没有答案