На головну

непрямий перехід

  1. Gt; >> врізка перехід в 64-разрдяний режим
  2. JCC метка_перехода
  3. Loopne / loopnz метка_перехода
  4. N На перехідний опір зварного з'єднання мають найбільший вплив особливості структури і напруженого стану шва.
  5. Адміністративно-державне управління в перехідних суспільствах.
  6. Аналогічна вимога поширюється і на перехід з режиму одиночних ходів на режим послідовних ходів.
  7. апарату при переході до непу

Тепер розглянемо інший різновид безумовного переходу - непрямий перехід. У цьому випадку в команді переходу вказується не сам адреса переходу, а то місце, де знаходиться ця адреса. Таким місцем може бути регістр загального призначення або слово пам'яті:

JMP r16 або JMP m16

У цих командах береться вміст зазначеного регістра або слова пам'яті, воно розглядається як адреса деякої команди програми і саме за цією адресою робиться перехід. Причому ця адреса розглядається як "справжній", а не відрахований від команди переходу.

Приклади ([х] - вміст комірки або регістра х):

A DW L

...

JMP А; goto [A] = goto L

MOV DX, A; DX = L

JMP DX; goto [DX] = goto L

L: ...

Непрямі переходи використовуються в тих випадках, коли адреса переходу стає відомим тільки під час рахунку програми.

Візьмемо команду JMP Z, де Z - деякий ім'я (але не ім'я регістра). Що це таке - прямий перехід по мітці Z або непрямий перехід за адресою з осередку Z? Якщо ім'я Z описано до цієї команди, то тут проблеми немає: якщо ім'ям Z позначена команда (рис. А), то це перехід по мітці, а якщо ім'я Z описано в директиві DW (рис. Б), то це непрямий перехід.

Z: INC AX Z DW L JMP Z; goto? ... ... ... JMP Z; goto Z JMP Z; goto L Z ... a) б) в)

Але якщо Z - посилання вперед, т. Е. Це ім'я описується пізніше (рис. В), тоді асемблер не знатиме, який тут перехід. Щоб зняти цю неоднозначність, прийнято наступну угоду: в подібній ситуації асемблер завжди вважає, що Z - мітка, і тому завжди формує команду прямого переходу по цій мітці (причому команду довгого переходу). Якщо ж потім виявиться, що Z - НЕ мітка, то буде зафіксована помилка.

Так ось, якщо нас це правило не влаштовує, якщо нам потрібен непрямий перехід, то ми зобов'язані повідомити про це асемблеру. Для цього використовується оператор PTR: замість просто імені Z треба записати конструкцію WORD PTR Z, якої ми повідомляємо асемблеру, щоб він розглядав Z як ім'я змінної розміром в слово, щоб він формував машинну команду непрямого переходу.

Отже, при переходах вперед маємо такі випадки:

JMP Z; goto Z JMP Z; помилка JMP WORD PRT Z; goto L ... ... ... Z: Z DW L Z DW L

прямий перехід | Команди порівняння та умовного переходу

Особливості складання чисел в зворотному і додатковому кодах. | Числа з фіксованою точкою. | Числа з плаваючою точкою. | Арифметичні операції над числами з фіксованою точкою | Арифметичні операції над двійковими числами з плаваючою точкою | Множення двійкових чисел | Склад обладнання | Визначення обсягу оперативної пам'яті | Команди додавання і віднімання | команди множення |

© um.co.ua - учбові матеріали та реферати