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

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


 

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

85095. Военная присяга — клятва воина на верность Родине — России 42.76 KB
  Изучить условия и порядок приведения военнослужащим к военной присяге. Студенты обучающиеся на военной кафедре университета проходят военные сборы в одной из воинских частей. Их он получает только после принятия военной присяги. В армии обычаев которые бы так четко разделяли солдат не принявших военной присяги от тех кто ее принял нет.
85096. Прохождение военной службы по контракту 44.58 KB
  Прохождение военной службы по контракту Цель: изучить порядок поступления на военную службу по контракту и её прохождения. В этих условиях количество военнослужащий по контракту в армии и на флоте должно возрасти в несколько раз а самое главное должно существенно повыситься их качество уровень образования состояние здоровья социальный статус до поступления на военную службу. Что такое служба по контракту Чем служба по контракту отличается от службы по призыву Кто может поступить на службу по контракту Происходит ли отбор граждан...
85097. Права и ответственность военнослужащих 42.27 KB
  Права и ответственность военнослужащих. Изучить обязанности военнослужащих и ее виды юридическую ответственность военнослужащих. С правами и свободами военнослужащих и особенностями их реализации в Российской Федерации мы уже познакомились. Сегодня мы изучим остальные составляющие правового статуса военнослужащих их обязанности и ответственность.
85098. Альтернативная гражданская служба 40.41 KB
  Изучить особенности альтернативной гражданской службы по сравнению с военной службы. Из приведенного списка причин отметьте знаком те причины по которым контракт с гражданином не может быть заключен: отсутствие в Вооруженных силах Российской Федерации других войсках воинских формированиях и органах вакантных воинских должностей согласно профилю подготовки кандидата или полученной им военноучетной специальности; в отношении гражданина вынесен обвинительный приговор и которому назначено наказание ; в отношении гражданина ведется...
85099. Военнослужащий - патриот, с честью и достоинством несущий 45.71 KB
  Военнослужащий патриот с честью и достоинством несущий звание защитника Отечества Цели урока. Темой нашего сегодняшнего урока станут узловые понятия военной этики патриотизм воинская честь и воинский долг. Что такое патриотизм В чем особенности чувства патриотизма военнослужащего Что вы знаете о военнопатриотических клубах и обществах В чем состоят особенности деятельности этих организаций Какие боевые традиции связанные с чувством патриотизма вы запомнили из курса ОБЖ для 10го класса В чем состоит верность Боевому знамени...
85100. Правила личной гигиены и здоровье 44.16 KB
  Нормальная жизнь человека в любом населенном пункте а особенно в крупном городе станет короткой и невыносимой если не соблюдать нормы гигиены. Гигиена основа санитарии а следовательно безопасности человека. Понятие гигиены очень широкое но начинается она с малого с гигиены отдельного человека т. Что такое личная гигиена и какова ее структура Меняются ли правила личной гигиены с изменением возраста человека Какое правило личной гигиены вы считаете главным В чем состоит великое гигиеническое изобретение русского народа Какие...
85101. Нравственность и здоровье. Заболевания, передаваемые половым путем 43.35 KB
  Заболевания передаваемые половым путем. Изучить роль нравственности в обеспечении безопасных взаимоотношений полов и профилактики заболеваний передаваемых половым путем. За последние годы в России отмечен интенсивный рост заболеваний передаваемых половым путем. А также инфекции передаваемые половым путем так называемого второго поколения урогенитальный хламидиоз уреамикоплазмоз кандидоз гарднерелез генитальный герпес ВИЧинфекция гепатит В бактериальные уретриты вагиниты и другие.
85102. Психологическое состояние человека и причины самоубийств 46.77 KB
  Самоубийства детей и подростков всегда вызывали тревогу общества и считались и считаются огромным горем не только для семьи погибшего ребенка но и для всего общества. Более того уровень самоубийств детей и подростков социологи относят к числу важнейших показателей здоровья нации. Что такое суицид Каковы его причины у детей и подростков Какие группы детей и подростков подвержены суициду Ответ обоснуйте. Можно ли предотвратить самоубийства среди детей и подростков В чем по вашему мнению состоит главное содержание предупреждения...
85103. Первая помощь при острой сердечной недостаточности, инсульте 39.82 KB
  Первая помощь при острой сердечной недостаточности инсульте Цели урока. Изучить симптомы и первую помощь при острой сердечной недостаточности. Вот почему важно уметь оказать первую помощь человеку жизни которого угрожает опасность. Оказание первой помощи при острой сердечной недостаточности: уложить больного на спину приподнять голову обеспечить доступ свежего воздуха и срочно вызвать врача скорую помощь.