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

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

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

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

Решение задачи: «Получить значение по смещению Tasm»

textual
Листинг программы
  1. data_s segment
  2.    var1 dw 3
  3.    var2 dw 6
  4.  data_s  ends
  5.  code_s segment
  6.  assume ss:nothing,cs:code_s,ds:data_s,es: code_s
  7.   begin   proc
  8.    mov ax,ds:[256]
  9.  ret
  10.  begin endp
  11.  code_s ends
  12.  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы