2016-06-19 1 views
-3

У меня есть код на ассемблере:Давать нуль при вызове постоянны в ASM

mov al, VGA_WIDTH * 2 
mov dl, byte [Y] 
mul dl 

VGA_WIDTH является константой, равной 60, и Y представляет собой байты равны 3, когда я умножать их я получаю ноль (а) я могу предположить, что когда я добавляю eax (ответ) к смещению, он просто не меняет смещение.

У меня есть аналогичный код, который работает отлично, я просто не понимаю, почему этого не происходит.

+2

Научиться использовать отладчик. Кроме того, создайте [mcve]. – Jester

ответ

1

Вот некоторые указатели, чтобы рассмотреть:

  • Является ли установка регистра DS сегмента для решения Y переменных?

  • Инструкция mul dl дает результат в AX регистре, пока вы говорите о «eax (ответ)». Неправильно интерпретировать результат?

+0

Спасибо, что ответили на регистр ds, указав на таблицу gdt, которую я установил для tty в этой программе, я ее исправил. – spazinlime

+0

, и вы можете получить доступ к топору с помощью eax, но верхний 16-бит равен нулю или то, что ранее было сохранено в eax – spazinlime

Смежные вопросы