Адресация определённого элемента в переменной - Assembler
Формулировка задачи:
Здавствуйте, хочу по очереди рисовать картинки в графическом режиме (DOS) по нажатии кнопки мыши. У меня есть 2 переменные:
BMFile - это поле с именами файлов картинок от 0 до 9-ти
var - простая переменная для хранения чисел
Проблема вот в чём:
если в 4-ой строчке вместо di написать статическое значение (к примеру 0 или 2 или кратное 2-ум число до 18) то программа работает нормально, но когда я пытаюсь передать какое либо значение через di (или другой любой регистр) то TASM компилирует код без ошибок, но сама программа как буд то подвисает, курсор мышки двигается нормально, но картинка не прорисовывается...
В чём может быть проблема?! может я адресирую не правильно?!
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
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
Решение задачи: «Адресация определённого элемента в переменной»
textual
Листинг программы
mov dx,offset bmfile add dx,di
Объяснение кода листинга программы
- Код начинает выполняться с команды mov, которая используется для перемещения значения из одного регистра в другой.
- В данном случае, mov dx,offset bmfile означает, что значение регистра dx будет установлено равным смещению (offset) переменной bmfile.
- Следующая команда add dx,di означает, что к значению dx будет добавлено значение переменной di.