Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lec_asm_06_3495.doc
Скачиваний:
1
Добавлен:
03.01.2020
Размер:
178.18 Кб
Скачать

67

Языки программирования и методы трансляции.

Программирование на языке ассемблера

1. Внутренние регистры

Внутри микропроцессора информация содержится в группе 16-битовых элементов, называемых регистрами. Всего имеется 14 регистров: 12 регистров данных и адресов и в дополнение к ним указатель команд (регистр адре­са команд) и регистр состояния (регистр флагов). Можно подразделить 12 регистров данных и адресов на три группы по четыре регистра, а именно на регистры данных, регистры указателей и индексов и регистры сегментов.

1.1. Регистры данных

Имеется четыре 16-бито­вых регистра данных. Они имеют имена АХ, ВХ, СХ, DX и используются, если необходимо оперировать 16-битовыми словами. Однако, если необходимо оперировать 8-битовыми байтами, регистры данных можно рассматривать как восемь 8-битовых регистров. При этом считается, что каждый из 16-битовых регистров образован из двух 8-битовых регистров AL, АН, BL, ВН, CL, СН, DL и DH. Буквы L и Н означают соответственно младшие и старшие байты 16-битовых регистров.

Всеми этими регистрами можно пользоваться при программировании, но сле­дует учитывать, что ряд команд использует их неявным образом.

Регистр AX (аккумулятор) является основным сумматором и применяется для всех операций ввода-вывода, некоторых операций над строками и некоторых арифметических операций: умножения, деления и сдвига.

Регистр ВХ (базовый) использоваться при адресации данных в памяти.

Регистр СХ (счетчик) необходим для управления числом повторении циклов и для операций сдвига влево или вправо. Регистр СХ используется также для вычислений.

Регистр DX (регистр данных) применяется для некоторых операций ввода-вывода и операций умножения и деления над большими числами, которые используют два регистра DX:AX.

Заметим, что только регистры данных могут использоваться и как 16-битовые, и как 8-бито­вые. Все регистры остальных групп – 16-битовые.

1.2. Регистры сегментов

В ЭВМ, сконструированных на базе мик­ропроцессора 8088, программы и данные хранятся в отдельных областях памяти. Эти области называются сегментами. Сегменты могут располагаться в любом месте памяти и иметь размер до 64 Кбайт.

Микропроцес­сор 8088 может использовать одновременно четыре сегмента. Начальные адреса этих сегментов содержатся в его четырех регистрах сегментов. Эти регистры выполняют следующие функции:

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

Регистр сегмента стека SS указывает на текущий сегмент стека. Стек представляет собой область памяти, используемую для временного хра­нения данных и адресов. Микропроцессор 8088 использует стек для хранения адреса возврата из текущей подпрограммы, но стек можно использовать также для восстановления содержимого регистров, изменяемых при работе програм­мы.

Регистр сегмента данных DS указывает на текущий сегмент дан­ных, обычно содержащий используемые в программе переменные.

Регистр дополнительного сегмента ES указывает на текущий дополнительный сегмент, который используется при выполнении операций над строками.

Микропроцессор 8088 использует 20-битовые адреса ячеек оперативной памяти. Адрес каждой ячейки задается двумя числами: номером блока и смещением. Физический адрес образуется путем добавления 16-би­тового смещения к номеру блока, умноженному на 16. Номер блока извлекается из регистра сегмента. Таким образом,

физический адрес = смещение + 16 • (регистр сегмента).

В действительности микропроцессор 8088 вместо умножения на 16 использует содержимое регистра сегмента так, как если бы оно имело четыре дополнительных нулевых бита.

Например:

0000 0000 0001 0000 (смещение)

+ 0010 0000 0000 0000 (0000) (номер блока)

0010 0000 0000 0001 0000 (физический адрес).

Имея в своем распоряжении 20-битовый адрес, микропроцессор 8088 может адресовать 1 Мбайт.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]