#assembly #nasm
#сборка #nasm
Вопрос:
Это кажется тривиальным вопросом, но я заблудился.
В этом примере character
это 2-байтовая переменная, а регистр bx
— один байт. Я пытаюсь сделать cmp bx, [character]
, что явно не сработает из-за разницы в размере.
Я пытаюсь сравнить bx
только с первым байтом character
. Мысли?
Ответ №1:
ребистер bx имеет 16-битный размер и состоит из двух 8-битных bl и bh!
Для 16-битного cmp вы можете использовать префикс:
cmp bx, word ptr[character]
для 8-битного bl cmp
cmp bl, byte ptr[character]
или 8-битный bh cmp
cmp bh, byte ptr[character 1]
Комментарии:
1. Спасибо! Я искал первый байт (а не второй), поэтому cmp bh, byte ptr [символ 0] выполнили задание.
2. Префикс не нужен (или не должен быть). Приличный ассемблер может выяснить, что
bl
будет сравниваться с байтом иbx
словом.