Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Практическое занятие «системы счисления. Перевод чисел из одной системы счисления в другую»↑ Стр 1 из 8Следующая ⇒ Содержание книги
Поиск на нашем сайте
СОДЕРЖАНИЕ
Предисловие 4 Введение 5 1 Системы счисления 7 2 Арифметические и логические операции 14 3 Система команд МП КР580ИК80А 17 4 Арифметические команды 21 5 Логические команды 27 6 Команды сравнения и команды переходов 31 7 Операции умножения и деления 35 8 Работа с массивами чисел 37 9 Организация программной задержки 41 10 Команды управления вводом-выводом, стеком и состоянием микропроцессора 44 Приложения 47 Список литературы 71
ПРЕДИСЛОВИЕ
Наибольшие затраты при проектировании микроЭВМ приходятся на разработку их программного обеспечения. Поэтому и возникла потребность более глубокого овладения средствами вычислительной техники. В настоящих методических указаниях рассмотрены основные вопросы, возникающие при программировании вычислительных и управляющих микропроцессорных систем. Во введении рассмотрена структурная схема микроЭВМ, представленная как совокупность функциональных блоков. Методические указания состоят из двух разделов. Первый раздел посвящен рассмотрению позиционных систем счисления и способам перевода чисел из одной системы счисления в другую. Во втором разделе приведена система команд микропроцессора КР580ИК80А, полный список которых указан в приложении А. Рассмотрены способы адресации, форматы и типы команд микропроцессора. Для изучения каждой темы предполагается проведение практического занятия и выполнение лабораторной работы. В методических указаниях по каждой теме, кроме теоретического материала, содержатся практические примеры решения задач и варианты заданий для выполнения лабораторных работ. Основные требования к оформлению отчета по выполнению лабораторных работ приведены в приложении К. Варианты заданий для самостоятельной работы и контрольных работ приведены в приложениях Б-И.
ВВЕДЕНИЕ
Микропроцессор – это программно-управляемое устройство для обработки цифровой информации и управления, построенное на одной или нескольких больших интегральных схемах (БИС). В состав структурной схемы микропроцессора (рисунок 1) входят три основных узла: арифметическо-логическое устройство (АЛУ), регистры общего назначения (РОН) и устройство управления (УУ). Арифметическо-логическое устройство (АЛУ) – часть микропроцессора, выполняющая главные функции: арифметические и логические операции с данными: сложение, вычитание, И, ИЛИ, исключающее ИЛИ, сравнение, инверсия, сдвиг вправо, сдвиг влево. Регистры общего назначения (РОН) выполняют функции запоминающих устройств. Используются для хранения промежуточных результатов вычислений и различной управляющей информации. Аккумулятор (А) – главный регистр микропроцессора, в нем хранится промежуточный результат арифметических и логических операций. Регистр признаков (РП) предназначен для фиксирования состояния микропроцессора в каждый момент выполнения программы. Регистр признаков включает в себя набор триггеров, называемых флагами, которые используются при выполнении последующих операций в АЛУ, а также при выполнении команд условных переходов. Регистр счетчика команд (РС) формирует адрес следующей по порядку команды программы, выбираемой из памяти, т.е. следит за тем, какая команда выполняется, и указывает, какая будет следующей. Устройство управления (УУ) – часть микропроцессора, организующая последовательность функционирования всех элементов микропроцессора по задаваемой программе для управления и синхронизации обработки данных. Основные функции: обмен данными между памятью, устройствами ввода-вывода и АЛУ.
Рисунок 1
Память включает устройство, обеспечивающее хранение команд и данных. Устройства ввода-вывода (УВВ) – электронные схемы, предназначенные для обмена данными с периферийными устройствами.
Системы счисления Таблица 1 - Системы счисления
Перевод чисел из двоичной, восьмеричнойи шестнадцатеричной системы в десятичную . Каждая цифра умножается на вес соответствующего разряда, затем десятичные числа суммируются. Таблица 2 – Значения позиций чисел
Пример 1. Преобразовать двоичное число 101101102 в десятичный эквивалент. Решение. Процедура преобразования выполняется в соответствии с таблицей 2. Десятичные значения каждой позиции записаны под каждым битом, затем десятичные числа суммируются: . Ответ: 101101102=18210.
Пример 2. Записать восьмеричное число 23578 в десятичной форме. Решение. Согласно таблице 2, вес соответствующих четырех первых восьмеричных разрядов: 512, 64, 8 и 1. Вес соответствующих разрядов умножается на соответствующее этому разряду число, складывается, и получается результат: . Ответ: 23578=126310. Пример 3. Преобразовать шестнадцатеричное число в десятичное. Решение. Процедура действий соответствует таблице 2. Десятичное число содержит 14 (ЕH) единиц, 6 чисел 16, 12 (СH) чисел 256 и 2 числа 4096. Каждая цифра умножается на вес соответствующего разряда, получается сумма, которая и дает десятичное число: . Ответ: 2C6EH=1137410.
Перевод числа из двоичной системы счисления в восьмеричную и шестнадцатеричную и наоборот При переводе целой части двоичного числа в восьмеричное двоичное число, начиная с младшего бита (МБ), разбивается на группы из 3 бит (триады), при необходимости, дополняя недостающие биты нулями слева от СБ. Затем, используя таблицу 1, каждая триада преобразуется в эквивалентную восьмеричную цифру. Аналогичным образом происходит перевод двоичного числа в шестнадцатеричное. Только двоичное число разбивается на группы из 4 бит (тетрады), и каждая тетрада преобразуется в эквивалентную шестнадцатеричную цифру. Перевод дробной части двоичного числа производится аналогичным образом, причем разбиение на триады или тетрады начинается справа от запятой со старшего бита (СБ), дополнение нулями недостающих бит осуществляется справа от МБ дробной части. При переводе из восьмеричной и шестнадцатеричной системы счисления в двоичную систему каждый восьмеричный или шестнадцатеричный символ заменяется своим двоичным эквивалентом из 3 или 4 бит. Перевод дробной части числа из восьмеричной и шестнадцатеричной системы счисления в двоичную производится также путем представления символа в виде триад или тетрад. Пример 1. Преобразовать двоичное число 10011101,001110112 в восьмеричный и шестнадцатеричный эквиваленты. Решение
Рисунок 4
Ответ: .
Пример 2. Преобразовать число 76,158 из восьмеричной системы в двоичную. Решение .
Пример 3. Преобразовать число A8,4F8 из шестнадцатеричной системы в двоичную. Решение .
Арифметические операции Сложение Вычитание Умножение
При арифметическом сложении двух двоичных единиц возникает перенос единицы в старший разряд. При вычитании может возникнуть заем единицы из старшего разряда, поэтому вычитание двоичных чисел лучше производить с помощью сложения (сложение с помощью дополнительного кода). Умножение и деление двоичных чисел производится аналогично умножению и делению десятичных чисел. Логические операции Таблица 3 - Таблица истинности логических операций
Логическая операция НЕ (инверсия) Значение бита Результат 1 0 0 1
Прямой код двоичного числа – это представление двоичного числа в истинной форме. Обратный код – это замена в каждом разряде исходного числа 0 на 1, а 1 на 0 (инвертирование разрядов). Вычитание выполняется в дополнительном коде. Дополнительный код (дополнение числа) – это число, которое необходимо добавить к данному числу для получения нулей во всех его разрядах и единицы (единицы переноса) слева от самого старшего бита данного числа. Дополнение двоичного числа можно найти, заменив в каждом разряде исходного числа 0 на 1, а 1 на 0 (преобразование в обратный код) и прибавив к полученному числу 1. Вычитание реализуется путем инвертирования значений всех разрядов вычитаемого (запись числа в обратном коде), добавления к нему единицы (дополнительный код) и сложения его с уменьшаемым (запись числа в прямом коде). Появление единицы переноса из самого левого разряда свидетельствует о том, что результат – число положительное и представлен в истинной форме (прямой код). Если перенос отсутствует, это свидетельствует о том, что число отрицательное и необходимо вычислить дополнение результата.
Пример 1. Произвести вычитание . Решение. Представим числа в двоичной системе счисления. , . Дополнительный код вычитаемого: . Рисунок 6
Процедура преобразования из двоичной системы в десятичную выполняется в соответствии с таблицей 2. Ответ: 1210=11002.
Пример 2. Произвести вычитание . Решение. Представим числа в двоичной системе счисления. , . Дополнительный код вычитаемого: .
Рисунок 7 Ответ: 1410=000011102.
Способы адресации Применяются пять способов адресации: 1. Прямая адресация – адрес ячейки памяти, где расположен операнд, указывается во втором (младший байт - МБ) и в третьем (старший байт - СБ) байтах команды. 2. Регистровая адресация– в команде задается регистр или пара регистров, где находится соответственно 8- или 16-битовый операнд. 3. Регистровая косвенная адресация – адрес ячейки памяти, где расположен операнд, определяется содержимым парного регистра (регистровой пары), явно или неявно указанного в команде; при этом старший байт адреса находится в первом регистре пары, а младший – во втором. В качестве регистровой пары могут быть использованы регистры H-L, B-C, D-E. При этом регистровые пары обозначаются соответственно H, B и D. 4. Непосредственная адресация – операнд содержится в команде: для двухбайтных команд – во втором байте, для трехбайтных – во втором (младший байт операнда) и в третьем (старший байт операнда) байтах команды. 5. Стековая адресация – адрес ячейки памяти, содержащий операнд, находится в указателе стека. Для управления процессом выполнения программы используется слово-состояние программы. Старший байт слово-состояния представляет содержимое аккумулятора, а младший – содержит флаги условий регистра признаков, определяемые результатом выполнения арифметических и логических операций (рисунок 8).
Рисунок 8 Установка флагов производится при выполнении следующих условий: флаг знака S=1, если знаковый бит результата операции равен 1, иначе сбрасывается; флаг нуля Z=1, если результат операции равен 0, в противном случае сбрасывается; флаг дополнительного переноса АС=1 при наличии переноса из третьего разряда в четвертый, иначе сбрасывается; флаг четности P=1, если результат содержит четное число единиц, иначе сбрасывается; флаг переноса CY=1 при наличии переноса (при арифметическом сложении) или заема (при вычитании) из старшего разряда результата, иначе сбрасывается. x– данный бит может принимать безразличное значение (0 или 1).
Команды пересылок Команды пересылок производят обмен данными между регистрами общего назначения (РОН) и памятью микропроцессорной системы. Команды пересылок не влияют на флаги. Пересылка может происходить: - из памяти в аккумулятор (прямая адресация): LDA <addr> – запись аккумулятора по адресу, указанному во втором и третьем байтах команды; STA <addr> – запись содержимого аккумулятора в память по адресу, указанному во втором и третьем байтах команды; где <addr> - непосредственное адресное значение, может быть константой или меткой в программе; - из регистра в регистр (регистровая адресация): MOV R1, R2 – передача содержимого регистра R2 в регистр R1. Команда MOV R1, R2 может быть использована для создания копий некоторых переменных, которые многократно используются при вычислениях; - из памяти в регистр (регистровая косвенная адресация): MOV M, R – передача содержимого регистра R в память по адресу, который хранится в регистровой паре (H, L); MOV R, M – передача содержимого ячейки памяти, адрес которой хранится в регистровой паре (H, L), в регистр R. Эти команды находят широкое применение при обработке связанных структур данных (массивов чисел и т.д.); - непосредственно в регистр байта данных (непосредственная адресация): MVI R, <data> – передача байта в регистр R, где <data> - непосредственное значение (константа); MVI M, <data> - передача байта в ячейку памяти, адрес которой хранится в регистровой паре (H, L); LXI M, <data> - передача содержимого ячейки памяти, адрес которой хранится в регистровой паре (H, B, D). Команды непосредственной адресации сами содержат операнд. Преимущество таких команд в быстродействии и экономии объема памяти МП системы.
Пример. Переслать содержимое ЯП (0800) в регистр В, используя различные способы адресации.
Таблица 4 - Пример программы
Арифметические команды
Арифметические команды Арифметические команды управляют выполнением операций сложения и вычитания с данными, размещенными в РОН и во внешней памяти. Операции умножения и деления в системе команд микропроцессора КР580ИК80А отсутствуют. Арифметические операции выполняются над положительными и отрицательными числами. Перед выполнением арифметических команд один из операндов располагается в аккумуляторе. В результате выполнения команд в регистре признаков устанавливаются флаги – признаки состояний (см. приложение А). Результат выполнения команд сохраняется в аккумуляторе, исходное содержимое аккумулятора при этом теряется. В системе команд предусмотрены три команды простого сложения и три команды сложения с учетом триггера переноса. В этих командах первый операнд расположен в аккумуляторе, а второй может быть расположен либо в одном из регистров (РОН), либо в ячейке памяти, адресуемой содержимым пары регистров (H, L), либо во втором байте команды.
Команды сдвига Команды сдвига используются для умножения и деления чисел на . Команды сдвига выполняются только в аккумуляторе, результат выполнения операции также располагается в аккумуляторе. Команды умножения на 2: RLC – сдвинуть циклически влево содержимое аккумулятора (рисунок 9). Рисунок 9
RAL– сдвинуть циклически влево содержимое аккумулятора через триггер переноса CY (рисунок 10).
Рисунок 10 Команды деления на 2: RRC- сдвинуть циклически вправо содержимое аккумулятора (рисунок 11). Рисунок 11 RAR - сдвинуть циклически вправо содержимое аккумулятора через триггер переноса CY (рисунок 12).
Рисунок 12
Умножение на нечетные числа происходит с помощью команд сдвига и команд арифметического сложения. Если шестнадцатеричное число нужно умножить на число, не кратное 2N, то сначала число нужно умножить на 2N с помощью команд сдвига, а потом к результату прибавить исходное число с помощью команд сложения (ADD R, ADC R). Пример 1. Сложить два однобайтных числа, находящихся в ЯП (0800) и (0801). Результат записать в ЯП (0802).
Таблица 5 – Пример программы
Пример 2. Из содержимого регистра В вычесть число ODH и умножить результат на 03H. Результат записать в ЯП (0800).
Таблица 6 – Пример программы
Таблица 7 – Пример программы
4.4 Лабораторная работа «Арифметические операции над двухбайтными числами» Составить рабочую программу, считая, что СБ числа находится в ЯП с более младшим адресом. Например, двухбайтное число находится в ЯП , где в ЯП (0800) находится СБ числа, а ЯП (0801) – МБ числа. Варианты заданий. 1. . 4. . 2. . 5. . 3. .
Логические команды
Таблица 8 – Пример программы
Пример. Составить программу установки «1» в 3 бите и «0» в 4 бите ячейки памяти (ЯП) 0800. Результат запитать регистр С. Таблица 9 – Пример программы
Команды сравнения Команды сравнения предназначены для определения равенства двух чисел, а также установления, какое из двух чисел больше или меньше. Сравнение выполняется при помощи АЛУ посредством внутреннего вычитания. Первое из сравниваемых чисел размещается в аккумуляторе, второе может находиться в одном из регистров РОН или в памяти. Особенностью команд сравнения является то, что содержимое аккумулятора и регистра не изменяются при выполнении команды. Флаги регистра признаков устанавливаются в зависимости от результата сравнения. Команды сравнения используют те же методы адресации, что арифметические и логические команды: CMP R - сравнение содержимого аккумулятора и регистра; CMP M - сравнение содержимого аккумулятора и ячейки памяти, адрес которой хранится в регистровой паре (H, L); CPI <data> - сравнение содержимого аккумулятора с содержимым второго байта команды. Команды переходов предназначены для изменения последовательности выполнения команд программы. Команды переходов позволяют организовать в программах циклы и ветвления. Переход может быть условный и безусловный. Условный переход осуществляется по результатам проверок значений разрядов регистра признаков. Предусмотрено девять команд переходов: одна команда безусловного перехода и восемь команд условных переходов. Все команды переходов используют прямую адресацию и являются трехбайтными командами. Во второй и третий байты команды заносится адрес, по которому осуществляется переход; причем во второй байт – младший байт адреса перехода, а в третий – старший байт адреса перехода. Значение регистра признаков команды перехода не изменяют. Команды условных переходов JC <addr> – переход, если есть перенос в старший байт или заем; флаг переноса CY=1. В противном случае выполняется следующая команда; JNC <addr> - переход, если нет переноса или заема; флаг переноса CY=0. В противном случае выполняется следующая команда; JZ <addr> - переход, если результат в аккумуляторе равен нулю; флаг нуля Z=1. В противном случае выполняется следующая команда; JNZ <addr> - переход, если результат в аккумуляторе не равен нулю; флаг нуля Z=0. В противном случае выполняется следующая команда; JP <addr> - переход, если флаг знака S=0, т.е. в аккумуляторе находится положительное число. В противном случае выполняется следующая команда; JM <addr> - переход, если флаг знака S=1, т.е. в аккумуляторе находится отрицательное число. В противном случае выполняется следующая команда; JPE <addr> - переход, если флаг знака P=1, т.е. число в аккумуляторе содержит четное количество единиц. В противном случае выполняется следующая команда; JPO <addr> - переход, если флаг знака P=0, т.е. число в аккумуляторе содержит нечетное количество единиц. В противном случае выполняется следующая команда. Пример 1. Сравнить два однобайтных числа, находящихся в регистрах D и ЯП (0800). Большее из чисел записать в ЯП (0801).
Таблица 9 – Пример программы
Пример 2. Если однобайтное число в регистре В четное, то его проинвертировать и записать в ЯП (0800), если нечетное, записать его в ЯП (0801).
Таблица 10 – Пример программы
Таблица 11 – Пример программы
Продолжение таблицы 11.
Работа с массивами чисел
8.1 Практическое занятие «Работа с массивами» Таблица 12 – Пример программы
Программа нахождения наименьшего числа из массива отличается оператором перехода JC вместо JNC.
Таблица 13 – Пример программы
|