почему после каждой строки сборки (8086) добавляется 00 000? - PullRequest
0 голосов
/ 16 января 2012

Программа сборки преобразуется в двоичный код, и я запустил простой код в эмуляторе для 8086. Я исключил IP для 0004, вместо этого он был 0006.

MOV AX,21H
ADD AX,42H

Я думаю IP должно быть 0004H , 0000 FOR MOV , затем 0000 читать 21H и то же самое для ADD и 42H .

В то время как в эмуляторе это:

01000: B8 184
01001: 21 003
01002: 00 000 NULL
02003: 05 005
01004: 53 066
01005: 00 000 NULL

почему в код добавляются 01002 и 01005? И что это значит?

1 Ответ

4 голосов
/ 16 января 2012

Я думаю, это потому, что регистр ax равен 16 битам, поэтому константа на самом деле тоже 16 бит (два байта). Просто ваши константы настолько малы, что вы не замечаете, что старший байт всегда равен нулю.

Попробуйте

mov ax, 1234h

и посмотри, отличается ли это.

...