Получить значение по смещению Tasm - Assembler

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

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

У меня в регистре данных лежат два числа
dataseg segment para 'data'
   var1 dw 3 
   var2 dw 5 
 dataseg ends
Данные сдвинуты на 100h, и эта инструкция
mov dx, ds:[256]
записывает в регистр dx число var1. Я думал, что эта инструкция
mov dx, ds:[256+offset var2]
должна записать в регистр dx число var2, но вместо этого в регистре получаю адрес var2(т.е. 102). А можно получить само значение 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

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

  1. Объявление сегмента данных с названием data_s    - Объявление переменной var1 типа word и инициализация значением 3    - Объявление переменной var2 типа word и инициализация значением 6
  2. Объявление сегмента кода с названием code_s    - Установка соответствий сегментов (assumption) ss:nothing, cs:code_s, ds:data_s, es:code_s    - Объявление процедуры begin      - Помещение значения из ячейки памяти с адресом ds:[256] в регистр ax      - Возврат из процедуры    - Конец процедуры begin (endp)
  3. Окончание сегмента кода (code_s)
  4. Завершение программы (end begin)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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