
- •Основы микропроцессорной техники
- •Введение
- •1. Система команд микропроцессора 8080 Представление команд в числовой форме
- •Мнемоническое представление команд Ассемблер
- •Директивы Ассемблера процессора 8080
- •Методы адресации операндов команд
- •Биты признаков
- •Общее представление команд
- •Команды пересылок
- •Однобайтные пересылки
- •Двухбайтные пересылки
- •Команды передачи управления
- •Команды безусловных переходов
- •Команды условных переходов
- •Команды организации подпрограмм
- •Команды безусловных вызовов и возврата
- •Команды условных вызовов и возврата
- •Команды арифметических, логических и сдвиговых операций
- •Команды сложения
- •Команды вычитания
- •Команды логических операций
- •Команды сравнения
- •Команды сдвига
- •Специальные арифметическо-логические команды
- •Команды управления стеком
- •Команды ввода, вывода и управления состоянием процессора Команды ввода и вывода
- •Команды управления прерываниями
- •Команда перевода процессора в состояние останова
- •Учебная микро-эвм умк-80
- •Управление микро-эвм средствами Монитора
- •Чтение и модификация содержимого памяти хххх
- •Чтение и модификация содержимого регистров
- •Запуск программы пользователя
- •Отражение типа машинного цикла через слово состояния
- •Пошаговые режимы
- •Порядок выполнения работы Заполнение памяти средствами Монитора
- •Определение исходного положения области стека
- •Ввод программы средствами Монитора
- •Лабораторная работа № 1.2 Учебная микро-эвм умпк-80
- •Краткие сведения из теории Назначение умпк-80
- •Структура умпк-80 и распределения адресного пространства
- •Управление микро-эвм средствами Монитора
- •Тестирование микро-эвм и начальная установка
- •Порядок выполнения работы Исследование порядка включения умпк-80
- •Исследование содержимого памяти
- •Запись числа в память умпк-80
- •Запись числа в программно-доступные регистры
- •Запуск программы
- •Контроль выполнения команд программы
- •Содержание отчёта
- •Контрольные вопросы
- •Лабораторная работа № 2 Отдельные команды, простые программы
- •Краткие сведения из теории Типы команд
- •Форматы команд
- •Способы адресации операндов
- •Признаки результатов операций
- •Представление программы
- •Порядок выполнения работы Исследование отдельных команд арифметических и логических операций
- •Исследование команд пересылок и способов адресации операндов
- •Исследование команд арифметического сложения
- •Исследование операций сравнения однобайтных чисел
- •Содержание отчёта
- •Контрольные вопросы
- •Библиографический список
Директивы Ассемблера процессора 8080
Директива .org
[<имя>:] org <адрес> [;комментарий]
Она указывает адрес ячейки памяти, в которую следует поместить первый байт следующий за директивой org команды.
Пример 1.11:
begin: .org 100h ;Начало программы
MVI A,34h
MOV B,A
…
mm1: .org 300h ;Продолжение программы
LXI B,400h
.....
Директива .org 100h указывает, что байты команды нужно расположить в памяти с адреса 100h (h-шестнадцатеричная форма представления числа), а команда LXI B,400h разместится по адресу 300h. После трансляции этот фрагмент программы будет выглядеть следующим образом:
Адрес Число Метка Мнемокод Комментарий
0100 begin: .org 100h ;Начало программы
0100 3E 34 MVI A,34h
0102 47 MOV B,A
…………………………………………
0300 mml: .org 300h ;Продолжение программы
0300 01 00 04 LXI B,400h
…………………………………………
Директивы .db и .dw
[<имя>:] .db <число,число,..> [;комментарий]
Эта директива определяет значения ячеек памяти размером в байт. Значения определяются числами, записанными после директивы .db (define byte).
Пример 1.12:
Prog: .org 100h ;Начало программы
LDA Param1 ;
MOV D,A ;
LDA Param2+1 ;
ADD D ;
STA Param1+2 ;
…………………………
Data: .org 500h ;Область данных
Param1: .db 10h, 0h, 36h, 0A
Param2: .db 32h, 64h
Листинг трансляции выглядит так:
Адрес Число Метка Мнемокод Комментарий
0100 begin: .org 100h ;Начало программы
0100 3A 00 05 LDA Param1 ;
0103 57 MOV D,A ;
0104 3A 05 05 LDA Param2+1 ;
0107 82 ADD D ;
0108 32 02 05 STA Param1+2 ;
…………………………………………………
0500 Data: .org 500h ;Область данных
0500 10 00 36 Param1: .db 10h, 0h, 36h, 0A
0A
0504 32, 64 Param2: .db 32h, 64h
Можно определять ячейки размером в слово (два байта). Для этого служит директива .dw (define word). Если в предыдущем примере db заменить на dw, то часть листинга с областью данных может выглядеть следующим образом
Пример 1.13:
0500 Data: .org 500h ;Область данных
0500 0010 Param1: .dw 0010h, 0A36 h
0A36
0504 6432 Param2: .dw 6432h
Директива .equ
[<имя>:] .equ <число> [;комментарий]
Язык Ассемблера позволяет вместо адресов ячеек памяти оперировать с их символическими именами. Это является его преимуществом по сравнению с программированием в машинных кодах. Директива .equ присваивает имени в поле метки конкретное значение числа в поле операндов.
Пример 1.14:
Adr_Tbl .equ 500h ;Определение адреса начала таблицы данных
Adress .equ 400h ;Определение адреса байта данных
Prog: .org 100h ;Начало программы
LXI B,Adr_Tbl ;
LXI H,Adress ;
LDAX B ;
ADI 05 ;
MOV M,A ;
……………………………;
.org 400h ;Начало таблицы Adr_Tbl
.db 00, 01, 04, 09 ;
.org 500h ;Место байта данных Adress
.db 0
Директива .end
Самая простая директива, не имеет операндов и указывает ассемблирующей программе, что текст программы окончен.
Методы адресации операндов команд
Выполнение процессором команд приводит либо к каким-то действиям над операндами, либо к изменению состояния процессора. Операнды в командах микропроцессора 8080 определяются одним из 5 способов (методов) адресации, представленных в табл. 1.3.
Пример 1.15
Адрес Число Метка Мнемокод Комментарий
0800 3E 03 MVI A,03 ;
команда пересылки числа 03 из состава команды в аккумулятор: операнд-источник 03 указан в составе команды при помощи непосредственного метода, а операнд-приёмник указан в аккумуляторе (регистр А) то есть регистровым методом.
Таблица 1.3
Способы адресации операндов в командах
Название |
Описание |
Непосредст-венный |
Операнд содержится в байте B2 двухбайтной команды или в байтах B2, B3 трёхбайтной команды |
Регистровый |
Операнд находится в регистре, указываемом в коде команды |
Прямой |
Младший байт адреса операнда указывается в байте B2, a старший – в байте B3 команды |
Косвенно-регистровый |
Адрес операнда определяется парой регистров, указываемой в коде команды |
Стековый |
Адрес операнда определяется текущим содержимым регистра указателя стека SP |
Пример 1.16
Адрес Число Метка Мнемокод Комментарий
0802 01 00 0B LXI B,0B00h ;
команда пересылки числа 0B00 из состава команды в регистровую пару BC: операнд-источник 0B00 указан в составе команды при помощи непосредственного метода, а операнд-приёмник указан в регистровой паре BC то есть регистровым методом.
Пример 1.17
Адрес Число Метка Мнемокод Комментарий
0805 02 STAX B ;
команда пересылки числа из аккумулятора в ячейку памяти с адресом взятым из регистровой пары BC: операнд-источник указан в аккумуляторе регистровым методом, а операнд-приёмник адресован через адрес, хранящийся в регистрах BC, то есть косвенно-регистровым методом.
Пример 1.18
Адрес Число Метка Мнемокод Комментарий
0806 32 01 0B STA 0B01h ;
команда пересылки из аккумулятора в ячейку памяти с адресом 0B01: операнд-источник указан в аккумуляторе регистровым методом, а операнд-приёмник адресован через адрес, входящий в состав самой команды, то есть прямым методом.
Пример 1.19
Адрес Число Метка Мнемокод Комментарий
0809 D5 PUSH D ;
команда записи в стек содержимого регистровой пары DE: операнд-источник определён в регистровой паре регистровым методом, а операнд-приёмник адресован через адрес вершины стека, хранящийся в регистре SP, то есть стековым методом.