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. Сделать выводы.

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


 

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

30094. Шизофрени́я 17.6 KB
  У лиц страдающих шизофренией обнаруживается повышенная дофаминергическая активность в мезолимбическом пути и сниженная в мезокортикальном. У больных шизофренией с большой вероятностью диагностируются коморбидные расстройства в их числе депрессии и тревожные расстройства; риск алкоголизма и наркомании составляет около 40 . Повышенный риск самоубийства и проблемы со здоровьем обуславливают снижение продолжительность жизни которая у больных на 1012 лет короче по сравнению с людьми не страдающими шизофренией. Есть также данные о возможной...
30095. Наследственные нарушения органов зрения 20.15 KB
  Аниридия иногда сочетается с передней и задней полярной катарактой подвывихом хрусталика и редко колобомой хрусталика. Эктопия хрусталика смещение линзы хрусталика. Наиболее типичным примером является эктопия хрусталика наблюдающаяся при семейнонаследственном поражении всей костномышечной системы которое выражается в удлинении дистальных фаланг пальцев рук и ног удлинении конечностей слабости суставов. В глазах при этом обнаруживается симметричное смещение хрусталика.
30096. Наследственные заболевания органов слуха 12 KB
  Наследственные заболевания органов слуха: Наследственные нарушения слуха возникают под действием генетических факторов в том числе в результате врожденных дефектов. Некоторые исследователи в особую группу факторов снижения слуха выделяют факторы патологического воздействия на орган слуха плода не связанные с генетическим фоном. Несиндромальная форма тугоухости форма тугоухости при которой снижение слуха не сопровождается другими признаками или заболеваниями других органов и систем которые передавались бы по наследству вместе с...
30097. Сложные сенсорные дефекты при наследственных синдромах 12.17 KB
  Дети с задержкой психического развития которая сочетается с дефектами зрения или слуха; Глухие дети с нарушениями соматического характера врожденные пороки сердца заболевания почек печени желудочнокишечного тракта. Кроме того в дефектологической практике встречаются дети с множественными дефектами. Дети с умственной осталостью слепоглухие; 2. Дети с нарушениями опорнодвигательного аппарата в сочетании с дефектами органов слуха зрения речи или интеллектуальной недостаточностью.
30098. Роль наследственности в паталогии речи 30.74 KB
  Роль наследственности в паталогии речи: Речь как одна из важнейших функций головного мозга не является врожденной как некоторые элементарные формы нервной деятельности а развивается по законам условных рефлексов. Нервные импульсы из области речедвигательного анализатора через черепномозговые нервы приводят в движение органы речи. Итак для нормальной речи и ее развития у ребенка необходимо: а нормальное строение и функция центральной нервной системы и речевых центров; б нормальное состояние органов голосо и речеобразования гортань...
30099. Психогенетические исследования когнитивных фнкций 15.04 KB
  Наименьший коэффициент наследуемости в изменчивости оценок дивергентного мышления способности чка генерировать новые идеи альтернативные решения проблем и т. способности близкой к понятию творческости креативности. Максимальное влияние генотипа в вербальном субтесте способности к логическому рассуждению в перцептивной скорости и пространственных способностях. когнитивный стиль свидетельствующий о способности чка преодолевать контекст и очевидно являющийся одним из показателей психологической дифференцированности.
30100. Психогенетические исследования темперамента 21.25 KB
  Психогенетические исследования темперамента. Черты темперамента определяют не столько то что человек делает сколько как он это делает т. Концепции темперамента весьма разнообразны. Для психогенетического исследования существенны несколько моментов: 1 В разных возрастах компонентный состав темперамента оказывается разным поскольку некоторые особенности поведения характерные для маленьких детей н р регулярность отправления физиологических функций длительность сна и т.
30101. ТИПЫ ЭЭГ И ИХ НАСЛЕДСТВЕННАЯ ОБУСЛОВЛЕННОСТЬ 21.29 KB
  ТИПЫ ЭЭГ И ИХ НАСЛЕДСТВЕННАЯ ОБУСЛОВЛЕННОСТЬ Наличие устойчивых индивидуальных особенностей ЭЭГ позволяет ставить вопрос о выделении определенных типов ЭЭГ и вслед за этим вопрос о роли факторов генотипа в происхождении данных типов. Для выяснения генетических основ межиндивидуальной вариативности ЭЭГ в этих исследованиях использовались близнецовый генеалогический и популяционный методы. На больших контингентах испытуемых авторы выявили 6 паттернов ЭЭГ в отношении которых в генеалогических исследованиях более 200 семей удалось...
30102. Генотип- средовые соотношения в изменчивости показателей вегетативных реакций 12.87 KB
  Генотип средовые соотношения в изменчивости показателей вегетативных реакций: Традиционным объектом психофизиологических исследований являются показатели функционирования физиологических систем организма сердечнососудистой дыхательной мышечной выделительной которые закономерно изменяются при психической деятельности. Как правило показатели активности этих систем отличаются индивидуальной специфичностью и достаточно устойчивой воспроизводимостью при повторных регистрациях в одинаковых условиях что дает основание ставить вопрос о роли...