Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Программа работы на стенде при изучении МПК серии К580



Работа рассчитана на несколько посещений. Ее содержанием является:

– ознакомление с внутренней организацией МП КР580ВМ80 и режимами его работы;

– детальное изучение системы команд МП 8080 и способов адресации;

– изучение программируемого интерфейса ввода-вывода;

– приобретение навыков программирования и построения простейших контроллеров на основе МПК серии К580.

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

Переключите стенд в режим ПДП (включите тумблер ПДП и проконтролируйте состояние светодиода ППД). С помощью клавишного регистра адреса задайте адреса двух-трех произвольных ячеек памяти и по индикаторам ШИНА ДАННЫХ считайте содержимое адресуемых ячеек.

Для записи данных в адресуемую ячейку памяти на клавишном регистре адреса набирайте ее адрес. С помощью 8-разрядного клавишного регистра данных набирайте код вводимых данных, после чего нажмите клавишу ЗАП. Записываемую информацию в адресуемую ячейку памяти контролируйте по световым индикаторам ШИНА АДРЕСА и ШИНА ДАННЫХ. При необходимости скорректируйте данные (повторно запишите исходные данные по заданным адресам).

Для иллюстрации режима записи данных в ОЗУ запишите требуемые восьмеричные числа по заданным адресам.

  по адресу H=001 L=377
  по адресу H=002 L=000
  по адресу H=002 L=001

ПРИМЕЧАНИЕ: в этом задании и во всех последующих программах адреса, команды и данные приводятся в восьмеричной системе счисления. Для представления 16-битного адреса памяти используются два байта. Старший байт адреса обозначается H, а младший — L. Если адрес Н не указан, то он соответствует восьмеричному коду 000.

Изучение режимов работы МП КР580ВМ80 и приобретение начальных навыков программирования устройств на его основе выполняется с помощью десяти тестовых программ, тексты которых приводятся ниже.

Программа 1 позволяет загрузить требуемые данные в два заданных регистра РОН.

Загрузка данных в регистры процессора К580 в принципе не представляет труда и выполняется командами непосредственной загрузки MVI Rd,data и LXI RP,data16. Сложнее реализовать контроль правильности загрузки, поскольку из-за ограниченного числа выводов МП КР580ВМ80 нельзя непосредственно проверить содержимое регистров блока РОН. Существуют несколько косвенных способов контроля содержимого РОН. Например, можно переслать содержимое регистров в память и затем в режиме ПДП проверить содержимое соответствующих ячеек памяти.

Программа 1

Адрес Код команды Мнемоника команд Комментарии
L=000   lxi h ;Загрузка начального адреса памяти
    B2 ;Мл. байт адреса
    B3 ;Ст. байт адреса
    LXI B ;Запись исходных данных в регистры B и C
    B2 ;B2 à (C)
    B3 ;B3 à (B)
    MOV M, B ;Запоминание (B)
    INX H ;Формирование следующего адреса памяти
    MOV M, C ;Запоминание (С)
    HLT ;Останов

В данной программе использован именно этот способ чтения содержимого РОН (пересылка содержимого регистров в память выполняется командами с адресами 006 и 010). Другим косвенным способом проверки значений РОН является реализация загрузки содержимого РОН в стек с помощью команды PUSH RP.

Проанализируйте и выполните программу 1 в пошаговом режиме по машинным циклам. Обратите внимание, что при выполнении программы после считывания команд, требующих для своей реализации дополнительного цикла внешнего обмена, порядок высвечиваемых адресов памяти нарушается. В этих командах при выполнении дополнительных циклов обмена на световых индикаторах ШИНА АДРЕСА высвечивается адрес ячейки памяти, к которой происходит обращение, а на индикаторах ШИНА ДАННЫХ отображается записываемая (считываемая) информация.

В режиме ПДП проверьте содержимое ячеек памяти с адресами L=200 и L=201 (Н=000). Фактическое содержимое ячеек памяти сравните с исходными данными, вводимыми в заданные регистры.

Проанализируйте результат выполнения команды HLT. При ее выполнении выходы буферных регистров АДРЕС и ДАННЫЕ переводятся в состояние высокого сопротивления (на стенде загораются все индикаторы ШИНА АДРЕСА), в байте состояния формируются сигнал ПОСТ, свидетельствующий о переходе МП в состояние «Останов», и на линии ожидания устанавливается единичный сигнал ОЖ. Выполнение программы прекращается. В состоянии «Останова» микропроцессор может находиться в течение любого временного интервала.

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

В микропроцессорных системах с МП К580 стек моделируется в памяти. Для определения области ОЗУ, выделяемой под стек, необходимо использовать команду загрузки указателя стека lxi SP, в2 в3. Обращение к стеку выполняется командами PUSH RP (загрузить в стек содержимое регистровой пары, указываемой в команде) и РОР RP (извлечь из стека).

В качестве примера разработайте программу, позволяющую извлечь данные, предварительно записанные в стек, изменить их на единицу (используя операцию инкремента — декремента) и занести скорректированные данные снова в стек. Для определенности до начала выполнения программы запишите встек (ячейки памяти садресами L=200 и L=201) числа 222 и 333 соответственно.

Один из возможных алгоритмов программы 2 может быть следующий:

– инициализировать указатель стека для определения области ОЗУ, выделяемой под стек, например, значением SPH=000 и SPL=200;

– извлечь данные из стека и загрузить их в адресуемую регистровую пару (варианты по указанию преподавателя: регистровые пары B, D, H);

– модифицировать данные в регистрах путем увеличения содержимого одного регистра и уменьшения содержимого другого регистра пары на 1;

– запомнить модифицированные данные в стеке;

– завершить выполнение программы командой Останов.

Выполните программу 2 в пошаговом режиме. Обратите внимание на то, что при выполнении команд PUSH RP и POP RP при последовательных нажатиях кнопки ПУСК после считывания кода команды на световым индикаторах ШИНА АДРЕСА и ШИНА ДАННЫХ высвечивается результат выполнения этих команд, т. е. содержимое, загружаемое (извлекаемое) в (из) ячейки памяти, адресуемой указателем стека. После выполнения программы прочтите содержимое ячеек с адресами L=200 и L=201. Объясните полученный результат и ответьте на вопросы:

Почему при работе со стеком необходимо инициализировать указатель SP?

Почему при выполнении команд обращения к стеку содержимое указателя стека изменяется на два?

В каком направлении «растет» стек при загрузке?

Почему при выполнении команд PUSH RP загружаются ячейки памяти с адресами (SP – 1) и (SP – 2), а при выполнении команды POP RP информация извлекается из ячеек памяти с адресами (SP) и (SP + 1)?

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

Программа 3

Адрес Код команды Мнемоника команд Комментарии
L=000   lxi H ;Загрузка начального адреса памяти
    B2 ;Мл. байт адреса
    B3 ;Ст. байт адреса
    MVI A  
    B2  
    ADD M  
    MOV M, A  
    HLT  

Выполните программу 3 в пошаговом режиме и проверьте содержимое ячейки с адресом L=200. Повторите выполнение программы в автоматическом режиме. Для этого необходимо с помощью клавиши НУ вывести МП из режима «Останов» и переключить тумблер НЕПР/ШАГ в положение НЕПР. После каждого завершения программы проверяйте содержимое ячейки памяти с адресом L=200 и фиксируйте результат.

Разработайте и выполните программу 3.1 вычитания двух чисел, одно из которых расположено в регистре блока РОН (Варианты: регистры B, C, D, E, H, L). Результат выполнения фиксируйте в памяти.

Разработайте и выполните программу 3.2 сложения двоично-десятичных чисел. Рассмотрите действие команды DAA для различных значений суммируемых операндов. Результат выполнения фиксируйте в памяти.

Разработайте и выполните программу 3.3 вычитания двоично-десятичных чисел. При написании этой программы учтите, что команда DAA не корректирует результат вычитания двоично-десятичных чисел. Полезно напомнить, что операция вычитания эквивалентна операции сложения в дополнительных кодах. Дополнительный код положительного числа есть само число, а дополнительный код отрицательного числа есть число, являющееся дополнением до максимально возможного числа заданного числа разрядов используемой системы исчисления плюс единица. В соответствии с этим определением дополнительный код двухразрядного двоичного числа N доп определяется по правилу N доп = (99 – N) +1. При вычислении N доп можно использовать обычное двоичное вычитание, поскольку заем из старшего десятичного разряда не возникает. Число N доп, вычисленное по этому правилу, есть обычное двоично-десятичное число. Используя алгоритм сложения двоично-десятичных чисел, получить результат вычитания двоично-десятичных чисел не представляет труда.

Разработайте и выполните программу 3.4 сложения двух 16-разрядных двоичных чисел. Объясните назначение команды ADC RS. Операнды команды разместите в регистровых парах B и D, а результат выполнения загрузите в память с помощью команд, прямо адресующих приемник.

Разработайте и выполните программу 3.5 вычитания двух 16-разрядных двоичных чисел. Объясните назначение команды SBB RS. Операнды команды разместите в регистровых парах B и D, а результат выполнения загрузите в память с помощью команд, косвенно адресующих приемник.

Программа 4 реализует «обнуления» заданной области памяти.

Программа «обнуления» реализована в виде циклического алгоритма. Перед выполнением программы проверьте содержимое памяти с адресами от L=011 до L=040. В указанных ячейках могут присутствовать ненулевые данные. Почему?

Выполните программу 4 в автоматическом режиме (для этого переключите тумблер НЕПР/ШАГ в положение НЕПР). После выполнения программы перейдите в режим ПДП и проконтролируйте содержимое ячеек по адресам от L=011 до L=040. Повторите выполнение программы в пошаговом режиме после сброса (нажатия кнопки НУ). Убедитесь, что часть программы «стерта». Почему? Запишите в отчете оставшуюся часть программы. Какова роль стертой части программы?

Программа 4

Адрес Код команды Мнемоника команд Комментарии
L=000   SUB A ;Обнуление А
    lxi H  
    B2  
    B3  
    MOV M, A  
    INX H  
    JMP  
    B2  
    B3  

Отметим, что рассмотренная программа представляет собой пример некорректной программы, так как в ней не предусмотрены средства останова. Какую группу команд необходимо добавить в программу для корректного завершения программы?

Программа 5 иллюстрирует формирование Слова Состояния Программы PSW при выполнении различных групп команд микропроцессора.

Программа 5

Адрес Код команды Мнемоника команд Комментарии
L=000   MVI B  
    B2
    MVI A  
    B2
    XRA B  
    RAL  
    LXI SP  
    B2  
    B3  
    PUSH PSW  
    HLT  

Проанализируйте значение Слова Состояния Программы PSW, формируемое при выполнении команд программы. Результат анализа представьте в виде:

Мнемоника команды Значение PSW
MVI B data (A):= xxxxxxxx PФ:= xx0x0x1x
MVI A data (A):= 00000001 PФ:= хx0x0x1x
XRA B (A):= 10000001 PФ:= 10000110
и т. д.  

здесь х указывает на неопределенное значение бита в анализируемом байте PSW (при сбросе состояние PSW не определено); PФ — содержимое регистра флагов (признаков), кодируемое в соответствии с рис. 2.4.

Выполните программу 5. После выполнения программы последовательно прочтите содержимое ячеек с адресами L=200 и L=201 и объясните полученный результат.

Программа 6, состоящая всего из одной команды HLT, иллюстрирует способ обращения к фрагменту программы, расположенному не с нулевого адреса, с использованием «клавиатурного» режима выполнения команд.

Программа 6

Адрес Код команды Мнемоника команд Комментарии
H=100 L=200   HLT ;Останов

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

Для задания произвольного адреса программы (команды) удобно использовать команду безусловного перехода, реализуемую в пошаговом режиме выполнения команды с клавиатуры(для этого необходимо установить тумблер ЗУ/КЛАВ в положение КЛАВ, тумблер КЦ/МЦ — в положение МЦ, тумблер НЕПР/ШАГ — в положение ШАГ). Выполнение команды JMP 200 100 в «клавиатурном» режиме реализуется при последовательном наборе на клавишном регистре данных кода команды (код 303) и адреса перехода (кодов 200 и 100). Каждый набор должен сопровождаться нажатием кнопки ПУСК. Выполните команду JMP 200 100 в клавиатурном режиме. В результате ее выполнения в счетчик команд должен быть загружен адрес перехода 200 100. Переключите стенд в режим выполнения программы, записанной в памяти (для этого переведите тумблер ЗУ/КЛАВ в положение ЗУ). Убедитесь, что на световых индикаторах ШИНА АДРЕСА высвечивается адрес первой команды программы 6 (адрес 100 200). Выполните программу 6.

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

Программа 7

Адрес Код команды Мнемоника команд Комментарии
L=000   lxi SP ;Инициализация указателя стека
    B2  
    B3  
    POP PSW ;Извлечение из стека Слова Состояния Программы
  * * ;Код одной из восьми команд условных переходов ;(JNZ, JZ, JNC, JC, JPO, JPE: JP или JM)
    B2 ;Младший байт адреса перехода
    B3 ;Старший байт адреса перехода
    HLT  
...      
  ** ;Слово состояния программы PSW, ;хранящееся в стеке
   

Перед выполнением программы запишите в память по адресу L=200 код 002, соответствующий нулевому значению всех флагов в регистре признаков, а по адресу L=004 — код 302, идентифицирующий команду условного перехода по ненулевому результату JNZ. Выполните программу в пошаговом режиме. Объясните, почему при заданном состоянии регистра признаков и выбранном типе команды условного перехода осуществляется циклическое выполнение программы.

Измените данные в ячейке по адресу L=200 на число 102. Обратите внимание, как при этом изменится содержимое регистров признаков в слове PSW, которое хранится в стеке. Выполните программу и объясните, в чем разница по сравнению с предыдущей программой.

Выполните программу, изменив содержимое ячейки с адресом L=004 на число 312, и объясните, почему программа выполняется именно таким образом.

Проверьте действия команд условных переходов для каждого из четырех контролируемых признаков результата (нуль, перенос, четность, знак). Для этого повторите выполнение программы, изменяя код команды условного перехода и содержимое регистра признаков путем предварительной загрузки данных в ячейки памяти по адресам 200 и 004 в соответствии с табл. 4.1.

Таблица 4.1

Данные по адресу L=004 (коды команд условного перехода) Данные по адресу L=200 (содержимое регистра признаков)
322 и 332 002 и 003
342 и 352 002 и 006
362 и 372 002 и 202

Разработайте и выполните программу 8, демонстрирующую действие команд вызова подпрограммы (CALL addr) и возврата в основную программу (RET). Используйте для этого команды LXI SP,data16, CALL addr и RET. Выполните программу в пошаговом режиме. Сравните команды CALL addr и JMP addr. В чем отличие этих команд при их исполнении?

Программа 9 поясняет действие команд RST N и RET при работе с прерывающими программами.

Программа 9

Адрес Код команды Мнемоника команд Комментарии
L=000   lxi SP Инициализация указателя стека
    B2  
    B3  
    RST 1 Вызов подпрограммы по адресу L=010
    HLT  
    RET  
Адрес (состояние ША) Содержимое памяти (состояние ШД) Комментарий
     
     
и т. д.    

Выполните программу 9 в пошаговом режиме. Приведите полное описание работы программы по машинным циклам в виде следующей таблицы

Сравните команды CALL addr и RST N. В чем отличие в действии этих команд?

Программа 10 демонстрирует работу нескольких прерывающих друг друга вложенных программ.

Программа 10

Адреса Код команды Мнемоника команд Комментарии
L=000   lxi SP Инициализация указателя стека
    B2  
    B3  
    RST 1 Вызов подпрограммы 1 по адресу L=010
    HLT  
    RST 2 Вызов подпрограммы 2 по адресу L=020
    RET Возврат из подпрограммы 1
    RST 3 Вызов подпрограммы 3 по адресу L=030
    RET Возврат из подпрограммы 2
    RST 4 Вызов подпрограммы 4 по адресу L=040
    RET Возврат из подпрограммы 3
    RST 5 Вызов подпрограммы 5 по адресу L=050
    RET Возврат из подпрограммы 4
    RET Возврат из подпрограммы 5

Выполните программу 10 в пошаговом режиме. Проанализируйте ход ее выполнения и представьте алгоритм работы. Как изменится ход выполнения программы, если в вызываемой (прерывающей) программе будет отсутствовать команда RET?.





Дата публикования: 2014-11-02; Прочитано: 1475 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.012 с)...