Получение относительного адреса по физическому - Assembler
Формулировка задачи:
Известна Формула вычисления физического адреса по сегменту и смещению:
Физ_адр = (сегмент * 10h) + смещение
Простите за дилетантский вопрос, а есть ли обратная формула (т.е вычисление относительного адреса по физическому)? Пытался сам её вывести - не получилось. Перерыл интернет - тоже ничего подобного не нашел...
Решение задачи: «Получение относительного адреса по физическому»
textual
Листинг программы
model tiny .code org 100h b: xor ax,ax mov ds,ax mov ax,-1 mov es,ax mov di,3357h mov si,3367h mov ax,ds:[di] mov bx,es:[si] push cs pop ds lea dx,dbNo cmp ax,bx jnz @@01 lea dx,dbYes @@01: mov ah,9 int 21h ret dbNo db 'no$' dbYes db 'Yes$' end b
Объяснение кода листинга программы
- Начальная инициализация:
— Переменная
ax
инициализируется значением 0. — Переменнаяds
инициализируется значением 0. — Переменнаяes
инициализируется значением 0. — Переменнаяdi
инициализируется значением 3357h. — Переменнаяsi
инициализируется значением 3367h. - Загрузка сегмента данных и кода в регистры ds и ax соответственно.
- Загрузка адреса первой инструкции в переменную di.
- Загрузка адреса второй инструкции в переменную si.
- Загрузка значения из памяти по адресу, который находится в регистре di, в переменную ax.
- Загрузка значения из памяти по адресу, который находится в регистре si, в переменную bx.
- Сравнение значений переменных ax и bx.
- Если значения равны, то переход к следующей инструкции.
- Если значения не равны, то переход к инструкции с меткой @@01.
- Загрузка значения 'no$' в переменную dx.
- Вывод значения переменной dx на экран с помощью функции 9 и interrupt 21h.
- Возврат в основную программу.
- Если значения переменных ax и bx не равны, то переход к следующей инструкции.
- Загрузка значения 'Yes$' в переменную dx.
- Вывод значения переменной dx на экран с помощью функции 9 и interrupt 21h.
- Возврат в основную программу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д