Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Система и формат команд МП К1810



Система команд МП К1810 является расширенным множеством системы команд МП К580, в котором сохранено большинство команд МП К580, за исключением редкоиспользуемых команд условных вызовов и возвратов.

Команды основных операций МП К1810 задают два операнда, одним из которых является содержимое регистра или ячейки памяти, а другим — содержимое регистра или соответствующего поля в теле команды (непосредственный операнд). Результат операции может записываться на место операнда в регистре или памяти.

Система команд МП использует прямую, относительную (посредством базовых регистров), непосредственную, косвенную адресацию. В МП могут выполняться арифметические операции над 8- и 16-разрядными числами со знаком и без знака, над упакованными и неупакованными двоично-кодированными десятичными числами. Для простых операций обработки последовательностей данных (цепочек) имеются однобайтные команды, для которых посредством префикса можно задавать число повторений. Имеются команды передачи управления двух типов, осуществляющие переходы соответственно внутри текущего программного сегмента и к произвольному сегменту, который при этом становится текущим. Кроме того, для управления режимом работы МП имеется несколько команд, с помощью которых можно изменять состояние МП: сброс и установка отдельных признаков в регистре F, ожидание, блокировка шины, пошаговый режим, останов и т. п.

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

· однооперандная команда;

Первый байт команды   Постбайт адресации
КОП W   mod КОП r/m
  Третий байт команды     Четв. байт команды
Младший байт смещения   Старший байт смещения
           

· двухоперандная команда;

Первый байт команды   Постбайт адресации
КОП d W   mod reg r/m
  Третий байт команды     Четв. байт команды
Младший байт смещения   Старший байт смещения
             

· двухоперандная команда с непосредственным операндом;

Первый байт команды   Постбайт адресации
КОП W   mod КОП r/m
  Третий байт команды     Четв. байт команды
Младший байт смещения   Старший байт смещения
  Пятый байт команды     Шестой байт команды
Младший байт данных   Старший байт данных
           

 

Формирование команды во всех трех случаях аналогичен. В первом байте команды содержится код операции и два однобитных поля: направления передачи d и слова w. При d=l осуществляется передача «в», а при d=0 — передача «из» МП. Направление передачи относится ко второму операнду (регистру), определяемому полем reg второго байта команды. Поле wзадает формат операнда: при w = 0 МП оперирует с байтом, а при w=l производится обработка 16-битного слова.

Второй байт команды, называемый постбайтом адресации, определяет работающий регистр или ячейку памяти и состоит из трех полей: режима (mod), регистра (reg) и селектора регистр/память (r/m).

В поле reg задается один из регистров, содержащий второй операнд команды.

Поле mod задает используемый режим адресации и предназначено для определения первого операнда команды. Кроме этого код поля mod задает способ использования смещений disp.

Поле r/m команды кодируется способ вычисления эффективного адреса ЕА (смещения) операнда.

Байты с третьего по шестой являются не обязательными.

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

По функциональному признаку все множество команд МП К1810 можно разделить на шесть групп:

- Команды пересылки данных;

- Команды арифметических операций;

- Команды логических операций;

- Команды для работы со строками;

- Команды передачи управления;

- Команды управления микропроцессором.

 

 

Таблица 3.1

Команды сокращения и условные обозначения

Наименование/ обозначение Смысловое значение
OPR Операнд
SRC Операнд-источник
DST Операнд-получатель
REG Регистр
RSRC Регистр-источник
RDST Регистр-получатель
CNT Счетчик
DISP Смещение (общее обозначение)
D8 8-битовое смещение
D16 16-биговое смещение
ADDR Адрес
ЕА Эффективный адрес
SEG Сегмент
DATA Непосредственный операнд (общее обозначение)
DATA8 8-битовый непосредственный операнд
DATA16 16-битовый непосредственный операнд
АХ,ВХ,СХ,DX,AL,АН,ВL,ВН,CL,CH,DL, DH,ВР,SP,SI,Dl,IP Регистры микропроцессора Intel 8086
CS, SS, ES, DS Сегментные регистры микропроцессора Intel 8086.

Таблица 3.2.

Система команд МП КР1810

Действие Мнемоника и формат Описание
Команды пересылки данных
Команды пересылки данных общего назначения
     
Передать MOV DST, SRC (DST) ← (SRC)
Включить в стек PUSH SRC (SP)← (SP)-2; (SP)+1:SP))← (SRC)
Извлечь из стека POP DST (DST)← ((SP)+1:(SP)); (SP) ← (SP) + 2
Обменять XCHG OPR1,OPR2 (OPR1)← >(OPR2)
Команды пересылки, работающие с аккумулятором
Преобразователь XLAT OPR (A) ← ((BX) + (AL))
Ввести, короткая форма, байт IN AL, PORT (AL) ← (PORT)
Ввести короткая форма, слово IN AX, PORT (AX) ← (PORT + 1; PORT)
Ввести длинная форма, байт IN AL, DX (AL) ←((DX))
Ввести длинная форма, слово IN AX, DX (AX)← ((DX)+1:(DX))
Вывести короткая форма, байт OUT PORT, AL (PORT) ← (AL)
Вывести короткая форма, слово OUT PORT, AX (PORT+ 1:PORT)← (AX)
Вывести длинная форма, байт OUT DX, AL ((DX)) ← (AL)
Вывести длинная форма, слово OUT DX, AX ((DX))+l:(PX))← (AX)
Команды пересылки адресов  
Загрузить эффективный адрес LEA REG, SRC (REG) ← SRC
Загрузит←в PC указатель LDS REG, SRC (REQ)← -(SRC); (DB) ← (SRC+2)
Загрузить в ES указатель LES REG, SRC (PEG) (SRC); (FS) ← (SRC+2)
Команды пересылки битов условий
Загрузить АН из флажков LAHF (АН) ← (младший байт PSW)
Запомнить АН во флажках SAHF (младший байт PSW) ← (АН)
Включить в стек флажки PUSHF (SP)← (SP)-2; ((SP)+1:(SP))← (PSW)
Извлечь из стека флажки POPF (PSW)← ((SP)+1:(SP)); (SP)← (SP)-2
Арифметические команды. При реализации арифметических действий устанавливаются 6 бит условий: CF, AF, ZF, SF, PF, OF. Команды вычитания
Вычесть SUB DST, SRC (DST)← (DST) -(SRC)
Вычесть с заемом SBB DST, SRC (DST) ← (DST) - (SRC) - (CF)
Декремент DEC OPR OPR← (OPR) - 1
Изменить знак NFG OPR OPR ← (OPR)
Сравнить CMPOPR1,OPR2 (OPRI)-(OPR2)
Десятичная коррекция вычитания DAS   (AL) ← разность в (AL) корректируется в упакованный BCD-формат
Коррекция неупакованного ВCD-вычитания AAS   (АН) ← (АH) + перенос от коррекции; (AL) ← разность в (AL) корректируется в неупакованный BCD-формат
Команды сложения
Сложить ADD DST, SRC (DST) +- (SRC) + ( DST)
Сложить с переносом ADD DST, SRC (DST) ← (SRC) + ( DST) + (CF)
Инкремент INC OPR OPR ← (OPR) + 1
Десятичная коррекция сложения DAA (AL) ← сумма в (AL) корректируется в упакованный двоично-десятичный формат (BCD-формат)
Коррекция неупакованного BCD-сложения AAA   (AL) ←сумма в (AL) корректируется в неупакованный BCD-формат
Команды умножения
Умножить со знаком   IMUL SRC   Операнды -байты: (АХ) ← (AL) * (SRC); операнды - слова: (DX:AX) (АХ) * (SRC);
Умножить без знака MUL SRC Аналогична команде IMUL, но операнды и произведение беззнаковые
Коррекция неупакованного BCD-умножения ААМ   (АН) ← заем от коррекции; (АХ) ← произведение в АL корректируется в неупакованный BCD-формат, AH содержит старшую цифру
Команды деления и команды формирования знака для операций деления со знаком
Разделить со знаком   IDIV SRC   Делитель - байт: (AL) ← частное (AX)/(SRC); (АН) ← остаток (AX)/(SRC); Делитель - слово: (АХ) ← частное (DX:AX)/(SRC); (DX) ← остаток (DX:AX)/(SRC); частное и остаток имеют знаки, знак остатка равен знаку делимого
Разделить без знака   DIV SRC   Аналогична команде 1DIV, но операнды, частное и остаток беззнаковые
Коррекция неупакованного BCD-деления AAD   (AL)← 10*(AH)+(AL); (АН) ← 0
Преобразовать байт в слово CBW Расширяет знак AL в АН
Преобразовать слово в двойное слово CWD   Расширяет знак АХ в DX  
Логические команды
Форматы команд сдвигов
Сдвинуть логически влево SHL OPR, CNT  
Сдвинуть арифметически влево SAL OPR, CNT  
Сдвинуть логически вправо SHR  
Сдвинуть арифметически вправо SARQPR.CNT  
Сдвинуть циклически влево ROL OPR, CNT  
Сдвинуть циклически вправо ROR OPR, CNT  
Сдвинуть циклически влево через перенос RCL OPR, CNT  
Сдвинуть циклически вправо через перенос RCR OPR, CNT  
Логические команды
Инвертировать NOT OPR (OPR) ← NOT (OPR)
Объединить по И AND DST, SRC (DST) ← (DST) AND (SRC)
Объединить по ИЛИ OR DST, SRC (DST) — (DST) OR (SRC)
Сложить по модулю 2 (Исключающее ИЛИ) XOR DST, SRC (DST) ← (DST) XOR (SRC)
Проверить TEST OPR 1.OPR2 (OPR1)AND(OPR2)
Команды передачи управления Существует две разновидности команд вызова, перехода и возврата: команды, передающие управление в пределах текущего сегмента кода, и команды, передающие управление в любой сегмент кода, который затем становится текущим. Возможны переходы как прямые, так и посменные.
Вызовы подпрограмм, переходы и возвраты из подпрограмм
Внутрисегментный прямой вызов CALL DST (SP) ← (SP) - 2; ((SP)+1:(SP))← (IP); (IP)← (IP) + D16
Внутрисегментный косвенный вызов CALL DST   (SP) ← (SP) - 2; ((SP)+1:(SP))← (IP); (IP) ← (EA)
Межсегментный прямой вызов   CALL DST   (SP) ← (SP) - 2; ((SP)+1:(SP))-(CS); (SP)-(SP)-2; ((SP)+1:(SP))← (IP); (IP)← D16; (CS) - сегментный адрес
Межсегментный косвенный вызов   CALL DST   (SP)← (SP)-2; ((SP)+1:(SP))-(CS); (SP) ← (SP) - 2; ((SP)+1:(SP))← (IP); (IP) - (EA); (CS) ← - (EA + 2)
Внутрисегментный возврат RET   (IP)← ((SP)+l:(SP)); (SP) ← (SP)+2
Внутрисегментный возврат с непосредственными данными RET EXP   Аналогична предыдущей команде и (SP) ← (SP) + D16; (IP)← ((SP)+l:(SP)); (SP)+-(SP)-2; (CS) ← ((SP)+l:(SP))
Межсегментный возврат RET (SP) ← (SP) + 2
Межсегментный возврат с непосредственными данными RET EXP   Аналогична предыдущей команде и (SP)← -(SP) +D16
Внутрисегментный прямой короткий переход JMP SHORT OPR   (IP) ← (IP) + 8-битовое смещение, определяемое OPR
Внутрисегментный прямой близкий переход JMP NEAR PTR   (IP) ← (IP) + 16-биговое смещение, определяемое OPR
Внутрисегментный прямой косвенный переход JMP OPR   (IP) ← (ЕА), где ЕА определяется OPR
Внутрисегментный прямой далекий переход JMP FAR PTR OPR   (IP) ← смещение OPR в сегменте; (CS) ← адрес сегмента, содержащего OPR
Межсегментный косвенный переход JMP OPR (IP) ← (ЕА), где ЕА определяется OPR; (CS) (ЕА + 2)
Условные переходы
Перейти, если нуль или равно JZ OPR JE ZF=1
Перейти, если не нуль или неравно JNZ OPR   JNL ZF=0  
Перейти, если знак установлен JS OPR       ZF=1  
Перейти, если знак сброшен JNS OPR   ZF= 0
Перейти если есть переполнение JO OPR       OF =1  
Перейти, если нет переполнения JNO OPR       OF=0  
Перейти, если паритет установлен (четный паритет) JP OPR   JPЕ   PF = 1  
Перейти, если паритет сброшен (нечетный паритет) JNP OPR   JPO   PF=0  
Перейти, если ниже/не выше или равно (без знака) JB OPR   JNAЕ, JC CF= 1  
Перейти, если не ниже/выше или равно (без знака) JNB OPR   JAE, JNC CF=O  
Перейти, если ниже или равно/не выше (без знака) JBE OPR   JNA   ((СF)ОR(ZF)) = 1  
Перейти, если не ниже или равно/выше (без знака) JMBL OPR   JA   ((CF)OR(ZF)) = 0  
Перейти, если меньше/не больше или равно (со знаком) JL OPR JNGЕ ((СF)ХОR(ZF)) = 1  
Перейти., если не меньше/больше или равно (со знаком) JNL OPR JGЕ   ((CF)ХOR(ZF)) = 0  
Перейти, если меньше ((SF)XOR(OF))OR(SF)) = 1 или равно/не больше (со знаком) JLE OPR   JNC   (CF) = 0  
Перейти, если не меньше или равно/больше (со знаком) JNLE OPR   JG (((SF)XOR(OF))OR(SF)) = 1
Команды передачи управления для формирования циклов
Зациклить LOOP OPR   (СХ) не равно нулю
Зациклить, пока не нуль или равно LOOPZ OPR   LQOPE   ZF= 1 и (СХ)не равно нулю
Зациклить, пока не нуль» или не равно LOOPNZ OPR   LOOPNE ZF= 0 и (СХ)не равно нулю
Перейти по СХ JCXZ OPR   (СХ) = 0
Вывозы программ прерывания
Прерывание с типом   INТ TYPE   (SP)← (SP)-2; ((SP) + 1:(SP}) ← (PSW); (SP)← -(SP)-2; (SP)+ l:(SP)) ← (CS); (SP)← (SP)-2; ((SP)+1:(SP))← (IP); (IP) ← (TYPE* 4); (CS) ← (TYPE * 4 + 2)
Однобайтовое прерывание INТ   Аналогично предыдущей, кроме TYPE =3
Прерывание при переполнении   INTO   (SР) ←(SР) -2; ((SP) + 1:(SP)) ← (PSW), (SP)← (SP)-2, ((SP) + 1:(SP)) ← (CS), (SP)← (SP)-2; ((SP) + 1:(SP)) ← (IP), (IP)← (l0H), (CS)← (12H)
Возврат из прерывания JRET   (IP) ← ((SP)+1:(SP)), (SP) ← (SP) + 2, (CS) ← ((SP) + 1:(SP)), (SP) ← (SP) + 2, (PSW) ← ((SP) + 1:(SP)), (SP) ← (SP) + 2
Команды управления МП
Сбросить перенос CLC   CF← 0
Инвертировать перенос CMC   CF ← NOT(CF)
Установить перенос STC   CF← 1
Сбросить направление CLD   DF← 0
Установить направление STD DF← 1
Сбросить прерывание CLI IF← 0
Установись прерывание STI IF← 1
Холостая операций NOP Не вызывает никаких действий
Остановить HLT Прекращает действия ЭВМ
Переключить ESC Подключает сопроцессор
Ждать WAIT Ожидает активного уровня сигнала на входе TEST

 

2. Подготовка к выполнению работы

2.1. Согласно варианту из таблицы 3.3. нарисовать подробный алгоритм и написать программу на языке АССЕМБЛЕР для МП К1810 по нахождению значения функции. Операнды функции – по 3 байта.

Таблица 3.3

№ вар Переменная № вар Переменная № вар Переменная

 

2.2. Пользуясь табл. 3.2, перевести программу в машинные коды.

2.3. Загрузить программу в в память вычислительной машины и выполнить ее. Проверить правильность результатов, с подсчитанными в первой лабораторной работе.

2.4. Согласно варианту из таблицы 3.4. нарисовать алгоритм и написать программу на языке АССЕМБЛЕР для МП К1810 по организации условий при работе с массивами чисел.

Таблица 3.4.

№ вар Задание
Дан массив из 10 однобайтных чисел. Создать новый массив, исключая из первого повторяющиеся члены и расположить его в порядке убывания.
Дан массив из 10 однобайтных чисел. Создать новый массив, выбрав из первого числа от 10 до 30 и расположить его в порядке возрастания.
Даны два массива из 10 однобайтных чисел. Провести между ними операцию «ИЛИ» и полученный новый массив расположить в порядке убывания.
Дан массив из 20 однобайтных чисел. Создать новый массив, выбрав из первого числа от 07 до 20 и расположить его в порядке убывания.
Дан массив из 15 однобайтных чисел. Создать новый массив, исключив из первого числа от 10 до 30 и расположить его в порядке возрастания.
Дан массив из 30 однобайтных чисел. Создать новый массив, выбирая из первого каждый третий член, складывая их с константой А. Новый массив в порядке убывания.
Дан массив из 20 однобайтных чисел. Создать новый массив, исключив из первого числа от 07 до 20 и расположить его в порядке убывания.
Дан массив из 10 однобайтных чисел. Создать новый массив, выбирая из первого повторяющиеся члены и расположить его в порядке возрастания.
Дан массив из 15 однобайтных чисел. Создать новый массив, выбрав из первого числа меньше 30, провести над ними операцию «И» с константой А и расположить его в порядке возрастания.
Дан массив из 30 однобайтных чисел. Создать новый массив, исключая из первого каждый третий член, а оставшиеся сложить с константой А. Новый массив в порядке убывания.
Дан массив из 10 однобайтных чисел. Если в нем присутствует константа А, из первого массива создать новый массив проведя со всеми членами операцию «исключающего ИЛИ» и расположить его в порядке возрастания.
Дан массив из 10 однобайтных чисел. Исключив из первого числа больше 20, над оставшимися провести операцию «исключающего ИЛИ» с константой А и создать новый массив расположив его порядке возрастания.
Даны два массива из 10 однобайтных чисел. Провести между ними операцию «исключающего ИЛИ» и полученный новый массив расположить в порядке возрастания.
Дан массив из 10 однобайтных чисел. Создать новый массив, исключая из первого повторяющиеся члены и расположить его в порядке возрастания.
Дан массив из 10 однобайтных чисел. Если в нем присутствует константа А, создать новый массив исключив данный член и расположить его в порядке возрастания.

 

2.5. Пользуясь табл. 3.2, перевести программу в машинные коды.

2.6. Загрузить программу в память вычислительной машины и выполнить ее. Проверить правильность полученных результатов.

 

3. Порядок выполнения работы

Набор и запуск программы будет осуществляться с помощью компилятора TURBO PASCAL версии 7.0, который обладает следующими необходимыми качествами:

встроенный язык ASSEMBLER;

возможность просмотра содержимого регистров процедуры;

возможность пошагового выполнения программ.

Для запуска TURBO PASCAL запустите командный файл tpx.bat.

После запуска TURBO PASCAL на экране появится картинка, представленная на рисунке 3.3:

Рис. 3.3. Состояние экрана после запуска TURBO PASCAL

 

Экран будет состоять из следующих частей:

самая верхняя строка – строка Меню;

окно NONAME00.PAS – в этом окне вы наберете исходный текст вашей программы;

окно CPU – в этом окне находится содержимое регистров процессора;

окно Watches – в окне можно просмотреть значения переменных.

Выполнение программы рассмотрим на примере программы пересылки одного массива в другой.

Пример: Дан массива tab1 размером 10 2-х словных чисел (1 слово – 2 байта). Переслать содержимое массива tab1 в массив tab2.

Алгоритм решения задачи, с учетом особенностей МП 1810, представлен на рисунке 3.4.

 

Рис. 3.4. Алгоритм решения задачи

 

Программа

Program Primer1;

Label b1,b2; {задать метку}

Var

tab1, tab2: Array[1..10,1..2] of word; {Задать двухсловный массив}

i,J: word;

Begin

{Заполнить массив tab1 случайными числами}

For i:=1 to 2 do begin

For j:=1 to 10 do

tab1[j,i]:=random($FF);

End;

Asm {Начало текста программы на Ассемблере}

lea si, tab1 {Адрес начала массива tab1 занести в SI}

lea di, tab2 {Адрес начала массива tab2 занести в DI}

mov cx, 10 {В регистр СХ занести 10}

b2:

mov bx, 2 {В регистр BХ занести 2}

b1:

mov ax, [si+bx] {В регистр AX занести число, которое

находится по адресу, находящемуся в регистре SI +BX}

mov [di+bx], ax {Занести содержимое регистра АХ в память по адресу,

находящемуся в регистре DI+BX }

dec bx{Переходим к младшему разряду}

dec bx

jns b1 {если знак не установлен, т.е. младший разряд не перенесен, повторить

операцию, иначе далее}

inc si {Увеличить SI на 2}

inc si

inc di {Увеличить DI на 2}

inc di

loop b2 {Уменьшить содержимое СХ на 1 и, если оно не равно 0,

то перейти к метке b1}

End;

End.

После того как вы набрали текст своей программы, нажмите F2 –компьютер запросит новое имя вашей программы. Введите имя и нажмите клавишу [Enter]. Ваша программа сохранится на диске. Далее нажмите клавиши Alt и F9 – если в программе не было ошибок, то на экране появится сообщение, представленное на рисунке 3.5.

 

Рис. 3.5. Панель успешной компиляции программы.

 

Если же в программе ошибка, компьютер установит курсор в место ошибки и укажет номер и название этой ошибки. Исправьте ее и откомпилируйте программу заново. Далее необходимо в окно Watches ввести переменные для просмотра их значений. Для этого необходимо нажать CTRL+F7 и ввести имя переменной, после этого нажать [Enter]. Повторять это, пока не введете имена всех переменных.

Для пошагового выполнения программы нажмите F8 до тех пор, пока серая полоса не дойдет до слова END, при этом просматривайте содержимое регистров, чтобы убедиться в том, что программа работает правильно.

Окончательный результат проконтролировать в окне WATCHES.

Для выхода из TURBO PASCAL нажмите Alt+X.

 

4. Содержание отчета

4.1. Подробный алгоритм и программа на языке АССЕМБЛЕР по нахождению значения функции.

4.2. Результат выполнения программы по нахождению значения функции.

4.3. Подробный алгоритм и программа на языке АССЕМБЛЕР по организации условий при работе с массивами чисел.

4.4. Результат выполнения программы по организации условий при работе с массивами чисел.

 

5. Контрольные вопросы

5.1. Какие шины рассматривают в структуре МП К1810, и каковы их назначение и разрядность.

5.2. Назначение устройства сопряжения с шиной МП К1810. Его состав и назначение.

5.3. Назначение операционного устройства МП К1810. Его состав и назначение.

5.4. Назначение и состав блока регистров общего назначения МП К1810.

5.5. Регистр признаков. Размерность и состав.

5.6. Устройство управления МП К1810. Сигналы связи с внешними устройствами.

5.7. Способы адресации МП К1810.

5.8. Формат команд МП К1810.

5.9. Система команд МП К1810.

 

6. Литература

6.1. Каган Б.М., Сташин В.В. Основы проектирования микропроцессорных устройств автоматики. – М.: Энергоиздат, 1987. – 303с.

6.2. Калабеков Б.А. Микропроцессоры и их применение в системах передачи и обработки сигналов: Учебное пособие для высших учебных заведений. М.: Радио и связь, 1988. – 368с.

6.3. Балашов Е.П., Григорьев В.Л., Петров Г.А. Микро- и мини-ЭВМ/Для студентов ВУЗов. – Л.: Энергоатомиздат, 1984. – 376с.

6.4. Микропроцессоры: Том1./ под ред. Преснухина Л.Н. – Мн.: Вышэйшая школа, 1987. – 416с.

 

 


 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.