Адресация определённого элемента в переменной - Assembler

Узнай цену своей работы

Формулировка задачи:

Здавствуйте, хочу по очереди рисовать картинки в графическом режиме (DOS) по нажатии кнопки мыши. У меня есть 2 переменные:
BMFile      db  "0",0,"1",0,"2",0,"3",0,"4",0,"5",0,"6",0,"7",0,"8",0,"9",0
var         dw  0
BMFile - это поле с именами файлов картинок от 0 до 9-ти var - простая переменная для хранения чисел Проблема вот в чём:
mov     var,0
        mov     di,var
        mov     di,0
        mov     dx,[offset bmfile + di]
        mov     ah,3dh              ; Datei zum Lesen Г¶ffnen
        int 21h                     ; in ax -> file handle
если в 4-ой строчке вместо di написать статическое значение (к примеру 0 или 2 или кратное 2-ум число до 18) то программа работает нормально, но когда я пытаюсь передать какое либо значение через di (или другой любой регистр) то TASM компилирует код без ошибок, но сама программа как буд то подвисает, курсор мышки двигается нормально, но картинка не прорисовывается... В чём может быть проблема?! может я адресирую не правильно?!

Решение задачи: «Адресация определённого элемента в переменной»

textual
Листинг программы
mov dx,offset bmfile
add dx,di

Объяснение кода листинга программы

  1. Код начинает выполняться с команды mov, которая используется для перемещения значения из одного регистра в другой.
  2. В данном случае, mov dx,offset bmfile означает, что значение регистра dx будет установлено равным смещению (offset) переменной bmfile.
  3. Следующая команда add dx,di означает, что к значению dx будет добавлено значение переменной di.

Оцени полезность:

12   голосов , оценка 4.167 из 5
Похожие ответы