Микропроцессор Intel 486

3. Особенности работы с учебной программной
моделью микропроцессора

Для выработки первоначальных навыков обращения с системой команд изучаемого микропроцессора предлагается работа с его программной моделью, написанной на языке Delphi и предназначенной для работы в операционной системе MS Windows. Модель включает в себя файлы i486.exe и i486.hlp. При запуске исполняемого файла на экране появится главное окно программы, где отображаются оперативная память, регистры процессора, индикаторы портов 0 и 1, а также редактор для набора программ. Для управления моделью предусмотрено меню и кнопки быстрого доступа к наиболее важным функциям. С помощью одной из команд этого меню можно получить доступ к справочной информации (HELP), где достаточно подробно описана работа с моделью. Работа ведется с применением языка программирования, представляющего собой упрощенный ассемблер.

Как известно, ассемблером называется машинно-зависимый транслятор, преобразующий символьную (мнемоническую) запись команд в соответствующие двоичные команды, "понятные" процессору. Кроме символьных команд, язык ассемблера обычно включает в себя директивы и метки. Примеры меток (последовательности символов, после которых ставится двоеточие) уже встречались нам выше. Метки используются для организации переходов либо циклов. В рассматриваемой модели метку можно использовать только с целью применения в команде LOOP.

Директивы используются, в частности, для определения данных. Выше также встречались примеры директив DB (определить байт) и DW (определить слово). Первая из них может также использоваться для определения символьных строк. Перед директивой обычно ставится символическое имя определяемых данных (для ссылки на них методом прямой адресации), а после директивы указываются нужные байты, слова, строки.

Рассмотрим примеры программ для работы с моделью.

1. Записать во все РОН константу 5.

MOV AX, 5
MOV BX, AX
MOV CX, AX
MOV DX, AX
HLT
Набрав эту программу в редакторе модели, оттранслируем и запустим ее. В регистрах общего назначения появится изображение константы 5.

2.Вычислить сумму 1+2+…+19+20 и вывести ее на индикатор порта 0.

Удобно программировать вычисление этой суммы в обратном порядке, т.е. начиная с 20 – тогда можно воспользоваться регистром с убывающим содержимым. В данном случае нам подходит цикл LOOP со счетчиком в CX – ведь его содержимое как раз уменьшается на каждой итерации цикла. С целью продемонстрировать применение директивы DW определим в программе константу 20 именно с ее помощью.

B DW 20
MOV AX, 0
MOV CX, B
MET:
ADD AX, CX
LOOP MET
OUT 0, AX
HLT

3.Вывести на индикатор порта 0 степени двойки от 1 до 128. Это пример прежде всего на использование команды сдвига влево. Каждый такой сдвиг равнозначен умножению на 2.

MOV AX, 1
MOV CX, 8
MET:
OUT 0, AX
SHL AX, 1
LOOP MET
HLT

Назад Содержание Вперёд