Меню сайта

Урок 28. Оператор Segment

Решить проблему — адресации сегментов поможет ассемблер. — В одной из
— — — своих -частей — программа — на -языке — ассемблера — должна -определить
— — — составляющие ее — сегменты. Кроме того -специальные команды сообщают
— — — ассемблеру, — какие сегменты — скаким — регистром связаны. — Благодаря
— — — этому ассемблер может, когда требуется,определить какой сегментный
— — — префикс нужен — в коде команды. — Еслипрограммист задает — ссылку, не
— — — связанную -с регистром — DS, — но -доступную через — другойсегментный
— — — регистр, -то — ассемблер — сам -сформирует — правильный — префикс. -Это
— — — позволяет программисту работатьнепосредственно с данными и текстом
— — — программы, оставив ассемблеру работу поосуществлению адресации.
— — — — — Объявление сегментов позволяет ассемблеруследить за тем, какие
— — — сегменты доступны через сегментные — — — регистры и определять возможные
— — — ошибки. Например, — в программе могут — появиться переменные, которые
— — — недоступны из-за того, что на — сегмент этой переменной не указывает
— — — ни один -из сегментных регистров. -Ассемблер квалифицирует это — как

— — — — — — — -Microsoft (R) Macro Assembler Version 5.00 — — — — — — — — — — — — — 1/1/80 03:53:05
— — — — — — — -Фиг. 3.9 — Сегменты — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — Page — 1-1

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — PAGE — — -,132
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — TITLE — -Фиг. 3.9 — Сегменты

— — — — — — — — -0000 — — — — — — — — — — — — — — — — — DATA — — -SEGMENT
— — — — — — — — -0000 — 01 — — — — — — — — — — — — — — — — — — — VAR1 — — — DB — — — — — — 1 — — — — — — — — — — Переменная в сегменте DATA
— — — — — — — — -0001 — — — — — — — — — — — — — — — — — DATA — — -ENDS

— — — — — — — — -0000 — — — — — — — — — — — — — — — — — BUFFER -SEGMENT
— — — — — — — — -0000 — 02 — — — — — — — — — — — — — — — — — — — VAR2 — — — DB — — — — — — 2 — — — — — — — — — — Переменная в сегменте BUFFER
— — — — — — — — -0001 — — — — — — — — — — — — — — — — — BUFFER -ENDS

— — — — — — — — -0000 — — — — — — — — — — — — — — — — — CODE — — -SEGMENT
— — — — — — — — -0000 — 03 — — — — — — — — — — — — — — — — — — — VAR3 — — — DB — — — — — — 3 — — — — — — — — — — Переменная в сегменте CODE

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — ASSUME -CS:CODE, DS:DATA, ES:BUFFER

— — — — — — — — -0001 — FE 06 0000 R — — — — — — — — — — — — — — -INC — — — — VAR1 — — — — -Переменная из сегмента DATA
— — — — — — — — -0005 — 26: FE 06 0000 R — — — — — — — — — — -INC — — — — VAR2 — — — — -Переменная из сегмента BUFFER
— — — — — — — — -000A — 2E: FE 06 0000 R — — — — — — — — — — -INC — — — — VAR3 — — — — -Переменная из сегмента CODE

— — — — — — — — -000F — — — — — — — — — — — — — — — — — CODE — — -ENDS
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — END

— — — — — — — — — — — — — — — — — — — — — Фиг. 3.9 Сегменты
— — — ошибку. -Она возникает — из-за того, — что в — программене обеспечена
— — — адресуемость. — Это — ограничение, — но -лучше — обнаружить — ошибку при
— — — ассемблировании, чем во время работыпрограммы.
— — — — — Оператор SEGMENT определяет все — сегменты, давая каждому из них
— — — имя. -Программа на — Фиг. 3.9 — демонстрирует определение — нескольких
— — — сегментов. — — — Вкачестве — имени сегмента — может использоваться — любое
— — — допустимое имя переменной. У
тверждениеSEGMENT сообщает ассемблеру,
— — — что -все следующие — команды и данные вовремя — выполнения программы
— — — будут -находиться в — этом сегменте. — Оператор ENDS — — — — — указывает конец
— — — текущего сегмента. В этом — утверждении тоже указывается имя сегмен-
— — — та. Каждому утверждению — SEGMENT должно соответствовать утверждение
— — — ENDS. В противном случае ассемблерзапутается и выдаст сообщение об
— — — ошибке.

Категория: Программирование на Ассемблере | Дата: 18.02.13

Меню раздела
Блок