41322

Изучение команд операций над числами

Практическая работа

Коммуникация, связь, радиоэлектроника и цифровые приборы

Основные теоретические положения Структура команд Любая команда ЭВМ обычно состоит из двух частей: операционной и адресной. Трехадресная команда легко расшифровывалась и была удобна в использовании но с ростом объемов ОЗУ ее длина становилась непомерно большой. Пример программы в командах процессора Перед вами короткая программа для процессора семейства 1п1е1 которая увеличивает число находящееся в регистре ах. Пример программы в командах процессора Несмотря на то что приведенная программа по длине явно больше чем...

Русский

2013-10-23

1.62 MB

4 чел.

                  Дисциплина: « Микропроцессоры и микропроцессорные системы»

Практическая работа № 2

   Тема:    «Изучение команд операций над числами».

Цель: Практически изучить команды операций над числами.

    Время:              2 часа

   

   Оборудование:    ПК, ПО.

   Методические материалы и литература:

  •  Методические указания по выполнению практических работ;
  •  Иллюстративный материал: «команды  операций над числами ».

 Методические указания по выполнению практической работы:

  Последовательность выполнения работы:

  1.  Изучить  основные теоретические положения по теме, используя описание работы;
  2.  Выполнить практическую часть лабораторной работы. При этом  использовать описание работы, лабораторный блок ПК, иллюстратив-ный материал; В практической части отработать следующие подразделы:
  •  Рассмотреть строение команд по действиям над числами
  •  Выполнить примеры команды и отразить в отчёте
  •  Проанализировать структуру и функции команд в приведённых примерах; сделать выводы.

  1.  Ответить на контрольные вопросы.
  2.  Сделать выводы.
  3.  Подготовить отчёт по установленной форме.
  4.  Представить отчёт для защиты преподавателю.

1. Основные теоретические положения

   Структура команд

Любая команда ЭВМ обычно состоит из двух частей:

  1.  операционной и
  2.  адресной.

 Операционная часть (иначе она еще называется кодом операции — КОП) указывает, какое действие необходимо выполнить с информацией.

  Адресная часть описывает, где используемая информация хранится и куда поместить результат.

 У некоторых немногочисленных команд управления работой машины адресная часть может отсутствовать, например в команде останова;

 операционная часть имеется всегда.

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

 Рассмотрим теперь подробнее адресную часть.

Первые ЭВМ имели наиболее простую и наглядную трехадресную систему команд.

 Например: взять числа из адресов памяти А1 и А2, сложить их и сумму     поместить в адрес А3.

Трехадресная команда легко расшифровывалась и была удобна в использовании, но с ростом объемов ОЗУ ее длина становилась непомерно большой.  Поэтому появились двухадресные машины, длина команд в которых сокращалась за счет исключения адреса записи результата. В таких ЭВМ результат операции оставался в специальном регистре (сумматоре) и был пригоден для использования в последующих вычислениях.

 В некоторых машинах результат записывался вместо одного из операндов.

 Дальнейшее упрощение команды привело к созданию одноадресных машин.

 Рассмотрим конкретный пример использования такой ЭВМ.

 

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

  •  извлечь содержимое ячейки А1 в сумматор;
  •  сложить сумматор с числом из А2;
  •  записать результат из сумматора в А3.

Может показаться, что одноадресной машине всегда нужно втрое больше команд, чем трехадресной. На самом деле это не так. Попробуйте самостоятельно спланировать программу вычисления выражения у= (Х1+Х2) *Х3/Х4 и вы с удивлением обнаружите, что потребуется 3 трехадресных команды и всего 5 одноадресных. Таким образом, одноадресная машина в чем-то даже эффективнее, т. к. она не производит ненужной записи в память промежуточных результатов.

 

 Пример программы в командах процессора

 Перед вами короткая программа для процессора семейства 1п1е1, которая увеличивает число, находящееся в регистре ах. в 10 раз. Алгоритм не совсем тривиальный, поскольку вместо умножения используются значительно более "быстрые" команды сдвига влево. Каждый такой сдвиг на один разряд эквивалентен умножению на 2, поэтому читатель без труда проследит, как получается требуемый результат.

Программа приводится в табл. 1. В первом столбце указаны адреса команл (обратите внимание, что длина команд неодинакова!), а во втором — двоичный код команд процессора (именно такой код на самом деле и исполняет процессор). Следующий (шестнадцатеричный) столбик фактически повторяет содержимое предыдущего, но в более компактном виде. Затем следует общепринятая ассемблерная мнемоника и расшифровывается содержимое операций. Наконец, в последнем столбце даны пояснения к вычислениям.

Таблица 1. Пример программы в командах процессора

Несмотря на то, что приведенная программа по длине явно больше, чем простое умножение на 10, работать она, как не странно, будет заметно быстрее, поскольку умножение— очень "медленная" операция.

Вот оценка для процессора 1п1е! 80486.:

  •  команды переписи и сложения типа "регистр-регистр" выполняются очень быстро и требуют всего по одному машинному такту, а сдвиг регистра — три. Несложно подсчитать, что все вычисления по нашей программе будут выполнены в течение 8 тактов работы процессора.
  •   В то же время команда умножения целых чисел не может быть выполнена менее, чем за 13 тактов! Для младших моделей семейства где умножение не было тщательно оптимизировано, разница была еще более существенной.

2  Практическая часть

  •  Рассмотрел команды с действиями над числами
    •  Выполнил примеры команд и отразил в отчёте
      •  Проанализировал структуру и функции команд в приведённых примерах; сделал выводы.

 ААА ASCII-коррекция регистра АХ после сложения

Команда ааа используется вслед за операцией сложения add в регистре AL двух неупакованных двоично-десятичных (BCD) чисел, если в АХ находится двухразрядное неупакованное двоично-десятич-ное число.

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

 Если результат превышает 9, выполняется инкремент содержи-мого регистра АН. Команда воздействует на флаги AF и CF.

Пример

mov AX,0605h ; Неупакованное BCD 65

add AL,09h ;Неупакованное BCD 9, AX=060Eh

ааа ;AX=0704h, неупакованное BCD 74

 AAD ASCII-коррекция регистра АХ перед делением

Команда aad используется перед операцией деления неупакованного двоично-десятичного (BCD) числа в регистре АХ на другое неупако-ванное двоично-десятичное число. Команда не имеет параметров. Она преобразует делимое в регистре АХ в двоичное число без знака, чтобы в результате деления получились правильные неупакованные двоично-десятичные числа (частное в AL, остаток в АН). Команда воздействует на флаги SF, ZF и PF.

Пример

raov AX,0207h ;Неупакованное BCD 27

mov DL,06h ;Неупакованное BCD 6

aad ;AX=001Bh=27

div DL ;AX=0304h, т.е. 4 и З в остатке

 INC Инкремент (увеличение на 1)

Команда inc прибавляет 1 к операнду, в качестве которого можно указывать регистр (кроме сегментного) или ячейку памяти размером как в байт, так и в слово. Не допускается использовать в качестве операнда непосредственное значение. Операнд интерпретируется как число без знака. Команда воздействует на флаги OF, SF, ZF, AF и PF. Команда не воздействует на флаг CF; если требуется воздействие на этот флаг, необходимо использовать команду add op,l.

 Пример 1

mov AX,0563h

inc AX ;AX=0564h

Пример 2

mov BH,15h

inc BH ;BH=16h

Допустимо использование 32-битовых операндов и дополнительных режимов адресации 32-разрядных процессоров.

 DEC Декремент (уменьшение на 1)

Команда dec вычитает 1 из операнда, в качестве которого можно указывать регистр (кроме сегментного) или ячейку памяти размером как в байт, так и в слово. Не допускается использовать в качестве операнда непосредственное значение. Операнд интерпретируется как число без знака. Команда воздействует на флаги OF, SF, ZF, AF и PF.

Пример 1

mov AX,0FFFFh

dec AX ;AX=FFFEh

Пример 2

mov CX,0

dec CX ;CX=FFFFh

 

 

 DIV Деление целых чисел без знака

Команда div выполняет деление целого числа без знака, находящее-гося в регистрах АХ (в случае деления на байт) или DX:AX (в случае деления на слово), на операнд-источник (целое число без знака). Размер делимого в два раза больше размеров делителя и остатка.

Для однобайтовых операций делимое помещается в регистр АХ; после выполнения операции частное записывается в регистр AL, остаток - в регистр АН.

Для двухбайтовых операций делимое помещается в регистры DX:AX (в DX - старшая часть, в АХ - младшая); после выполнения операции частное записывается в регистр АХ, остаток - в регистр DX.

В качестве операнда-делителя команды div можно указывать регистр (кроме сегментного) или ячейку памяти; не допускается деление на непосредственное значение. Если делитель равен 0, или если частное не помещается в назначенный регистр, возбуждается прерывание с вектором 0. Команда не воздействует на флаги процесс-сора.

Команду div можно использовать для целочисленного деления неупакованного двоично-десятичного числа в регистре АХ на неупа-кованный двоично-десятичный делитель, если перед ней выполнить команду aad

Пример 1

mov AX,506 ;Делимое

mov BL,50 ;Делитель

div BL ;AL=0Ah (частное), AH=06h (остаток)

Пример 2

; В полях данных

long dd 65537 ;Делимое

;В программном сегменте

mov DX,word ptr long+2 ;DX=0001h, старшая

;часть делимого

mov AX,word ptr long ;AX=0001h, младшая

;часть делимого

mov CX,256 ;Делитель

div CX ;AX=0100h (частное),

;DX=0001h (остаток)

 IDIV Деление целых чисел со знаком

Команда IDIV выполняет деление целого числа со знаком, нахо-дящегося в регистрах АХ (в случае деления на байт) или DX:AX (в случае деления на слово), на операнд-источник (целое число со знаком).

 Размер делимого в два раза больше размеров делителя и остат-ка. Оба результата рассматриваются как числа со знаком, причем знак остатка равен знаку делимого.

Для однобайтовых операций делимое помещается в регистр АХ; после выполнения операции деления частное записывается в регистр AL, остаток - в регистр АН.

Для двухбайтовых операций делимое помещается в регистры DX:AX (в DX - старшая часть, в АХ - младшая); после выполнения операции деления частное записывается в регистр АХ, остаток - в регистр DX.

В качестве операнда-делителя команды idiv можно указывать регистр данных или ячейку памяти; не допускается деление на непосредственное значение. Если делитель равен 0, или если частное не помещается в назначенный регистр, возбуждается прерывание через вектор 0. Команда не воздействует на флаги процессора.

Пример

mov AX,506 ;Делимое

mov BL,50 ;Делитель

idiv BL ;AL=0Ah (частное), AH=06h

; (остаток)

 IMUL Умножение целых чисел со знаком

Команда IMUL выполняет умножение целого числа со знаком, находящегося в регистре AL (в случае умножения на байт) или АХ (в случае умножения на слово), на операнд-источник (целое число со знаком). Размер произведения в два раза больше размера сомножи-телей.

Для однобайтовых операций один из сомножителей помещается в регистр AL; после выполнения операции произведение записыва-ется в регистр АХ.

Для двухбайтовых операций один из сомножителей помещается в регистр АХ; после выполнения операции произведение записыва-ется в регистры DX:AX (в DX - старшая часть, в АХ - младшая).

В качестве операнда-сомножителя команды imul можно указы-вать регистр (кроме сегментного) или ячейку памяти; не допускается умножение на непосредственное значение.

 Команда воздействует на флаги OF и CF. Если АН или DX представляют собой просто знаковое расширение AL или АХ, соо-тветственно (т.е. результат умножения со знаком верен), OF и CF сбрасываются в 0; в противном случае (результат со знаком не поме-щается в АХ или DX:AX) OF и CF устанавливаются в 1.

Пример

mov AL,5 ;Первый сомножитель

mov BL,3 ;Второй сомножитель

imul BL ;AX=000Fh (произведение)

Допустимо использование 32-битовых операндов и дополнительных режимов адресации 32-разрядных процессоров. Имеются также вари-анты команды с двумя и тремя операндами.

Для команды imul с одним операндом второй сомножитель должен располагаться в AL, АХ или ЕАХ. Процессор выбирает размерность второго сомножителя, исходя из размерности первого, указанного в качестве операнда. 16-, 32- или 64-битовый знаковый результат помещается в регистры АХ, DX:AX или EDX:EAX, соответственно. Если после операции умножения содержимое АН, DX или EDX является лишь знаковым расширением AL, АХ или ЕАХ, соответственно, то флаги CF и OF сбрасываются в 0. В противном случае они устанавливаются в 1.

Для команды imul с двумя операндами их произведение записывается в первый операнд; второй операнд не изменяется. В качестве первого операнда могут выступать 16- или 32-разрядные регистры общего назначения; в качестве второго операнда - 16- или 32-разрядные регистры общего назначения, 16- или 32-битовые ячейки памяти или непосредственное значение. Оба операнда должны иметь один размер. Если результат умножения помещается в первый операнд, флаги CF и OF сбрасываются в 0. В противном случае они устанавливаются в 1.

Для команды imul с тремя операндами произведение второго и третьего операндов записывается в первый операнд. В качестве первого операнда могут выступать 16- или 32-разрядные регистры общего назначения; в качестве второго операнда - 16- или 32-разрядные регистры общего назначения или 16- или 32-битовые ячейки памяти; в качестве третьего операнда - только непосредственное значение. Два первых операнда должны иметь один размер. Если результат умножения помещается в первый операнд, флаги CF и OF сбрасываются в 0. В противном случае они устанавливаются в 1.

Пример 1

mov EAX,-1 ;Первый сомножитель

mov ESI,100000000 ;Второй сомножитель

imul ESI ;EDX=FFFFFFFFh,

;EAX=FA0AlF00h

;Результат=-100000000

Пример 2

;В полях данных

ор2 dd 100h ;Первый сомножитель

; В программном сегменте

mov EAX,400000h ;Второй сомножитель

imul EAX,op2 ;EAX=40000000h

 

   HLT Останов

Команда hlt прекращает выполнение программы и переводит процессор в состояние останова. Работа процессора возобновляется после операции запуска, а также в случае прихода немаскируемого или разрешенного маскируемого прерываний.

  

3. Ответить на контрольные вопросы

  1.  Из каких частей состоит команда ЭВМ?

Любая команда ЭВМ обычно состоит из двух частей: операционной и адресной. Операционная часть (иначе она еще называется кодом операции — КОП) указывает, какое действие необходимо выполнить с информацией.

Адресная часть описывает, где используемая информация хранится и куда поместить результат.

  1.  Что такое КОП?

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

  1.  Может ли в команде отсутствовать адресная часть?

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

  1.  Может ли в команде отсутствовать операционная часть?

Операционная часть имеется всегда.

  1.  Поясните назначение команды DIV?

Команда div выполняет деление целого числа без знака, находящее-гося в регистрах АХ (в случае деления на байт) или DX:AX (в случае деления на слово), на операнд-источник (целое число без знака). Размер делимого в два раза больше размеров делителя и остатка.

  1.  Поясните назначение команды  IDIV?

Команда IDIV выполняет деление целого числа со знаком, нахо-дящегося в регистрах АХ (в случае деления на байт) или DX:AX (в случае деления на слово), на операнд-источник (целое число со знаком).

  1.  Поясните назначение команды  IMUL ?

Команда IMUL выполняет умножение целого числа со знаком, находящегося в регистре AL (в случае умножения на байт) или АХ (в случае умножения на слово), на операнд-источник (целое число со знаком). Размер произведения в два раза больше размера сомножителей.

  1.  Поясните назначение команды   HLT?

Команда hlt прекращает выполнение программы и переводит процессор в состояние останова. Работа процессора возобновляется после операции запуска, а также в случае прихода немаскируемого или разрешенного маскируемого прерываний.

 4. Сделать выводы.

В данной работе я изучил структуру команд и сами команды. А так же рассмотрел примеры простых задач, приводимых в практической части.


 

А также другие работы, которые могут Вас заинтересовать

1855. Оружие геноцида 3.13 MB
  “Нормальная” культура ненормальных людей. Общее воздействие алкоголя на организм. Гипоксия — алкогольная эйфория. Почему пьющие избегают трезвых. О главной причине употребления психотропов. Творчество под угнетением табака. Курение и детородная функция. Целомудрие здравомыслие.
1856. Сегментация изображений и поиск объектов медицины и биологии 3.01 MB
  Программные системы и методы 3D-реконструкции биомедицинских данных. Модели, методы и алгоритмы, положенные в основу сегментации и поиска объектов. Сегментация данных компьютерной томографии и электронной микроскопии. Описание реализации программной системы. Примеры результатов сегментации и идентификации объектов.
1857. МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ ЗАНОСА АВТОМОБИЛЯ 1.09 MB
  Анализ подходов к математическому и численному моделированию движения автомобиля. Постановка задачи. Оценка области применимости велосипедной модели. Математические модели движения автомобиля без потери сцепления колес с дорогой. Математическая модель переменной структуры для описания заноса автомобиля.
1858. МЕТОДИЧЕСКИЕ ОСНОВЫ ФОРМИРОВАНИЯ СИСТЕМЫ ЦЕНООБРАЗОВАНИЯ БАНКОВСКИХ УСЛУГ 1.26 MB
  Необходимость и специфика ценообразования в коммерческих банках. Банковская услуга как объект ценообразования в кредитных организациях. Анализ влияния внешних факторов на ценообразование в коммерческих банках. Стратегия банка как основа моделирования системы ценообразования банковских услуг.
1859. ПОДВЕСКА АВТОМОБИЛЯ, ТОРМОЗНАЯ СИСТЕМА АВТОМОБИЛЯ 1.25 MB
  Целью методических указаний является оказание помощи студентам при проведении лабораторных работ по разделам Подвеска автомобиля и Тормозная система автомобиля курса Автомобили. Излагаются основные теоретические сведения, порядок выполнения и требования к оформлению отчетов по проведению лабораторных работ.
1860. ФИНАНСОВАЯ ОЦЕНКА КАЧЕСТВА ДОВЕРИТЕЛЬНОГО УПРАВЛЕНИЯ АКТИВАМИ ПАЕВЫХ ИНВЕСТИЦИОННЫХ ФОНДОВ РОССИИ 1.25 MB
  Доверительное управление на рынке ценных бумаг как эффективная форма привлечения инвестиций. Формирование концептуального подхода к финансовой оценке качества доверительного управления активами отечественных паевых инвестиционных фондов. Характеристика экономической эффективности деятельности паевых инвестиционных фондов акций.
1861. Гражданский процесс 1020.82 KB
  Понятие, предмет и метод гражданского процессуального права. Гражданские процессуальные отношения и их субъекты. Подведомственность и подсудность гражданских дел. Процессуальные сроки. Судебные расходы. Судебные штрафы. Возбуждение гражданского дела в суде. Досудебная подготовка дела.
1862. Методика обучения иностранных студентов аудированию на материале языка специальности 1.25 MB
  Психолого-педагогические и лингвистические основы исследования процесса обучения аудированию. Определение уровня владения умениями и навыками в области аудирования перед началом занятий по экспериментальной программе. Содержание и структура экспериментальной программы. Принципы, положенные в основу экспериментального обучения. Анализ результатов экспериментального обучения.
1863. Гидравлика. Теоретические и практические сведения 1.25 MB
  Предмет гидравлики. Краткая история развития. Понятие реальной и идеальной жидкости. Вязкость. Физические свойства жидкости и газов. Уравнение неразрывности. Расход. Поток. Гидравлические элементы потока. Уравнение Бернулли. Основное уравнение установившегося равномерного движения. Режимы движения жидкости. Гидравлические сопротивления. Классификация трубопроводов. Понятие коротких и длинных трубопроводов. Параллельное и последовательное соединение трубопроводов. Расчет простых и сложных трубопроводов. Расчет сложных замкнутых трубопроводов.