Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЕК_3_2.DOC
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
113 Кб
Скачать
☆

2. Система адресации памяти

Как уже было показано в первом вопросе, для совместимости микропроцессоров К580 и К1810 все регистры последнего 16-разрядные. Однако для расширения объема памяти адресная шина имеет 20 разрядов (для сравнения у 8-разрядного МП ША только 16-рназрядная). Для формирования 20-разрядных адресов применяется специальная схема и более сложная система адресации, к рассмотрению которой мы переходим.

Для того чтобы легче было понять систему адресации, применяемую в МП К1810, будем считать, что любая ячейка памяти имеет два типа адресов: физический и логический.

Физический адрес представляется 20-разрядным двоичным числом и однозначно определяет любую из 1Мбайт ячеек памяти. С использованием шестнадцатиричной системы счисления адреса всех ячеек лежат в диапазоне от 00000 до FFFFF. Весь обмен информацией между МП и памятью осуществляется с использованием физических адресов.

В программах чаще используют логические адреса, которые позволяют обращаться к командам без знаний места, где эта команда будет размещена в памяти. Логический адрес состоит из двух составных частей: значения адреса сегмента и значения смещения в сегменте. Адрес сегмента и смещения выражаются 16-разрядными числами.

Как только устройство шинного интерфейса обращается к памяти, формируется физический адрес из логического по следующему правилу: значение адреса сегмента смещается на четыре разряда влево (слева приписывается четыре нуля), и полученное 20-разрядное число (с четырьмя нулями в младших четырех разрядах) складывается со значением смещения (рис.2)

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

В любой момент времени программа может осуществить доступ к одному из сегментных регистров: регистру сегментов программы (кодов) - CS, регистру сегмента данных - DS, регистру сегмента значения стека - SS. Содержание каждого из сегментных регистров может быть изменено за счет записи в них 16-разрядных значений чисел. Деление всего адресного пространства (памяти) на сегменты может производиться произвольно по усмотрению программиста, так что сегменты могут пересекаться в адресном пространстве.

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

3. Программирование микропроцессора

Для выполнения набора определенных операций в память МП з

Таблица 1

аносится программа, называемая машинной или программой на машинном языке.

Смещение

К

Таблица 2

оды команд

Коды

0100

00111110

3Е

0101

00000001

01

0102

11000110

С6

0103

00000010

02

0104

00110010

32

0105

00000111

07

0106

00000001

01

Рассмотрим простейшую программу сложения двух чисел 1 и 2 (табл. 1). При этом будем предполагать, что в рабочем сегменте она располагается со смещения 010016. Для человека очень сложно понять такую программу. Восприятие программы несколько упрощается, когда она представляется в шестнадцатиричном коде, как показано в табл. 1.

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

Та же программа, записанная на языке ассемблера с комментариями, может быть представлена в виде табл. 2

Смещение

М

Таблица 2

немоника

Коментарий

0100

МОV AX,01

Загрузить в аккумулятор число 1

0102

ADD AX,02

Сложить число 2 с содержимым аккумулятора

0104

MOV 0107,AX

Переслать содержимое аккумулятора в ячейку 0107

Таблица 2


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

МП 8086 имеет достаточно развитую систему команд. Однако для построения простейшей программы модели цифрового автомата с жесткой логикой, которая будет исследоваться в ходе лабораторной работы, можно ограничиться использованием только трех типов команд: пересылки, арифметического сложения и передачи управления.

Команды пересылки имеют мнемонику MOV. После кода команды необходимо указать, куда осуществляется пересылка и откуда. Пусть необходимо содержимое регистра ВХ переслать в регистр АХ. Тогда следует указать:

MOV AX, BX.

С помощью данной команды можно осуществить загрузку любого регистра общего назначения (в указанный регистр переслать заданное число). Если, например, необходимо записать в регистр ВХ число 20, то следует указать:

MOV ВХ, 20.

Данная команда позволяет записать число в память или считать его из памяти, если смещение ячейки в сегменте, к которой осуществляется обращение, размещено в регистре ВХ.

MOV AX, [BX] – переслать содержимое ячейки памяти, смещение которой задано в регистре ВХ, в аккумулятор.

Команды арифметического сложения имеют мнемонику ADD. После кода команды необходимо задать адреса операндов. В простейшем случае операнды могут находиться в РОН, причем первое число – в аккумуляторе АХ. Если второе число находится в регистре DX, то тогда команда на сложение этих чисел будет:

ADD AX, DX.

Данная команда позволяет увеличить содержимое одного из РОН на некоторое число, которое непосредственно указывается в команде. Пусть необходимо содержимое регистра ВХ увеличить на 2. Тогда команда запишется в виде:

ADD BX, 2.

Команды передачи управления используются для организации циклов в программе. Наиболее простой и чаще встречаемой является команда безусловного перехода JMP. По этой команде в указатель команд (программный счетчик) заносится число, следующее за кодом команды. Если при выполнении программы встречается команда

JMP 0100,

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

Для организации циклов используется команда LOOP с указанием адреса. Если записано:

LOOP 0105,

то после декодирования в программный счетчик загружается число 0105 и начинается выполнение команд, расположенных между адресами 0105 и кодом LOOP, причем число повторений цикла определяется содержимым регистра СХ. С каждым повторением цикла содержимое СХ уменьшается на 1. При СХ=0 цикл заканчивается и выполняется команда, следующая за LOOP.

С использованием рассмотренных выше команд разработана программа, моделирующая работу цифрового автомата с жесткой логикой, исследуемого в ходе лабораторной работы. Программа обеспечивает смену кодовых комбинаций в регистре АХ, причем сами комбинации и порядок их

Адрес

Мнемоника

Комментарии

0100

0103

0106

0109

010b

010e

0110

MOV AX, 0

MOV BX, 0120

MOV CX, A

MOV AX, [BX]

ADD BX, 2

LOOP 0109

JMP 0103

Обнулить содержимое регистра АХ.

Загрузить в регистр ВХ адрес первого числа.

Загрузить в регистр СХ количество чисел 10 (А).

Переслать в регистр АХ содержимое ячейки памяти, адрес которой записан в регистре ВХ (первое число).

Увеличить содержимое регистра ВХ на 2.

Уменьшить содержимое регистра СХ на 1 и если СХ не равно 0, то перейти к выполнению команды по адресу 0109, если СХ=0, выполнить следующую команду.

Перейти к выполнению команды по адресу 0103.

с

Таблица 3

мены будет определяться исходными данными в соответствии с заданием курсовой работы. Программа модели с комментариями приведена в табл. 3.

Несмотря на то, что язык ассемблера значительно удобнее, чем машинный, на нем все же трудно писать сложные программы. Для упрощения программирования разработаны языки высокого уровня (Бейсик, Паскаль и др.). Они разработаны на английском языке и не зависят от конструкции и типа микропроцессора. Одна команда на языке высокого уровня соответствует 20 - 30 машинным командам. Для перевода языков высокого уровня в машинный используются достаточно сложные трансляторы.