Другие языки программирования и технологии

Чем отличается Адресное Выражение от Абсолютного? в Ассемблере

Упрощенно говоря, адресное выражение предусматривает задание операнда команды в памяти, а абсолютное предполагает наличия операнда в коде самой команды.

Только учтите, что есть и понятие Адресного Абсолютного выражения и Адресного Перемещаемого выражения - в зависимости от способа адресации к ячейке.
Алексей Сорокин
Алексей Сорокин
8 518
Лучший ответ
Я думаю, что абсолютное выражение не зависит от той области памяти в которую загружена программа. ТО есть абсолютное выражение не меняется в зависимости от значений базовых регистров.
Адресное выражение зависит от значений базовых регистров, то есть от того, в какую область памяти загружена программа.
Например, для 16-битового режима адрес
0000:0002
является абсолютным выражением,
в то время как выражение
cs:0002
является адресным выражением, так как конечное значение зависит от содержимого регистра cs.
На примере оператора указания типа PTR:
(от pointer, указатель) , который записывается следующим образом:
<тип> PTR <выражение>
где <тип> - это BYTE, WORD или DWORD (есть и другие варианты, но мы их пока не рассматриваем) , а выражение может быть константным или адресным. Если указано константное выражение, то оператор указывает на то, что значение этого выражения (число) должно рассматриваться ассемблером как величина указанного типа (размера) ; например, BYTE PTR 0 - это ноль как байт, а WORD PTR 0 - это ноль как слово (запись BYTE PTR 300 ошибочна, т. к. число 300 не может быть байтом) . Отметим, что в этом случае оператор PTR относится к константным выражениям. Если же в PTR указано адресное выражение, то оператор «говорит» , что адрес, являющийся значением выражения, должен восприниматься ассемблером как адрес ячейки указанного типа (размера) ; например: WORD PTR A - адрес А обозначает слово (байты с адресами А и А+1). В данном случае оператор PTR относится к адресным выражениям.
+1 к Watson
Олег Бабич
Олег Бабич
591