Получить значение по смещению Tasm - Assembler
Формулировка задачи:
У меня в регистре данных лежат два числа
Данные сдвинуты на 100h, и эта инструкция
записывает в регистр dx число var1.
Я думал, что эта инструкция
должна записать в регистр dx число var2, но вместо этого в регистре получаю адрес var2(т.е. 102). А можно получить само значение var2 по смещению?
dataseg segment para 'data' var1 dw 3 var2 dw 5 dataseg ends
mov dx, ds:[256]
mov dx, ds:[256+offset var2]
Решение задачи: «Получить значение по смещению Tasm»
textual
Листинг программы
data_s segment var1 dw 3 var2 dw 6 data_s ends code_s segment assume ss:nothing,cs:code_s,ds:data_s,es: code_s begin proc mov ax,ds:[256] ret begin endp code_s ends end begin
Объяснение кода листинга программы
- Объявление сегмента данных с названием
data_s
- Объявление переменной var1 типа word и инициализация значением3
- Объявление переменной var2 типа word и инициализация значением6
- Объявление сегмента кода с названием
code_s
- Установка соответствий сегментов (assumption) ss:nothing, cs:code_s, ds:data_s, es:code_s - Объявление процедуры begin - Помещение значения из ячейки памяти с адресом ds:[256] в регистр ax - Возврат из процедуры - Конец процедуры begin (endp) - Окончание сегмента кода (code_s)
- Завершение программы (end begin)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д