Какова цель или (% eax),% eax? - PullRequest
       30

Какова цель или (% eax),% eax?

0 голосов
/ 11 сентября 2018

Я играю с кодом загрузчика. Мой код должен печатать «А» в верхнем левом углу дисплея. Я использую 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 сгенерировал ее?

...