Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

ЛАБОРАТОРНАЯ РАБОТА Тема лабораторной работы- написание программы на языке Ассемблер для вычисления а

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 15.11.2024

ЛАБОРАТОРНАЯ РАБОТА № ____

Тема лабораторной работы: написание программы на языке Ассемблер для вычисления арифметического выражения.

Цель работы: изучение регистровой структуры микропроцессоров i80х86, различных арифметических команд и приобретение практических навыков их использования в программе.

1. Теоретические положения

ADD – выполняет сложение двух операндов, заданных в команде. Микропроцессор помещает результат на место первого, приемника (П). Второй операнд, источник (И) - не изменяется. Команда корректирует регистр флагов в соответствии с результатом сложения (фиксируя, был ли результат нулевым, отрицательным, имел ли четное кол-во «1» бит, были ли перенос или переполнение).

Формат команды: ADD  Oперанд1, Oперанд2 (иначе: ADD  П, И)

Пример: ADD  AX, BX

Операнд1 может размещаться в регистре общего назначения или памяти; Операнд2 – в регистре общего назначения, памяти или быть константой. Необходимо помнить, что сразу оба операнда - не могут размещаться в памяти.

ADC – команда сложения с учетом переноса, т.е. к сумме двух операндов прибавляется значение флага переноса (флаг CF).  Для любой формы команды ADD существует соответствующая  ей команда ADC.

SUB – аналогична по формату команде сложения ADD. Выполняет вычитание операнда источника (И) из операнда приемника (П). Результат операции сохраняется на месте операнда приемника, устанавливаются флаги в соответствии с результатом операции, причем флаг переноса теперь означает «заем».

Формат команды:  SUB  П, И

Пример: SUB  AX, BX. (после выполнения в рег-ре  АХ будет разность АХ-ВХ).

SBB – команда вычитания с заемом. Учитывает флаг заема при вычитании, т.е. значение заема (флаг  CF ) вычитается из результата, полученного при  обычном вычитании.

NEG – команда изменения знака операнда (в дополнительном коде).

Формат команды: NEG  Oперанд. (тут 1 операнд, он и источник, и приемник)

Пример: NEG AX

INC – команда увеличения. Прибавляет 1 к операнду.

Формат команды: INC Oперанд

Пример: INC AX

DEC – команда уменьшения. Отнимает 1 от операнда.  Например, DEC AX

MUL, IMUL – команды умножения. По команде MUL умножаются два целых числа без знака, при этом получается число без знака. По команде IMUL умножаются целые числа со знаком, представленные в дополнительном коде, и получается результат, имеющий правильный знак и значение, в дополнительном коде.

Формат команды:  MUL  Oперанд     ( или  IMUL  Oперанд    )

Операнд может размещаться в регистре или памяти.

Тип команды определяется по длине операнда, указанного в команде.

По длине операндов, участвующих в операции, можно различать:

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

Например: команда MUL  CH  - даст результат (AL * СН )  в регистре  AX.

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

Например: команда MUL  ВХ:

Поскольку здесь в качестве операнда используется регистр BX, то следовательно умножаются слова). Эта команда даст результат (произведение AХ и СХ )  в регистрах  DX, AX,  причем младшие 16 бит результата – в регистре АХ, а старшие – в регистре DX.

DIV, IDIV – команды деления. Команда деления DIV выполняет деление без знака и дает как частное, так и остаток. Деление целых чисел со знаком IDIV отличается от команды DIV только тем, что оно учитывает знаки обоих операндов. Если результат положителен, все происходит так же, как и у DIV, за исключением того, что максимальное значение частного соответственно равно +127 и +32767,  для байтов и слов. Если результат отрицателен, то остаток имеет тот же знак что и частное. Минимальные значения частных для отрицательных результатов –128 и –32768 для байтов и слов соответственно.

Формат команды:  DIV  Oперанд  ( или  IDIV  Oперанд    )

Операнд, указываемый в команде, является делителем (длиной байт или слово).  и может размещаться в регистре или памяти. Делимое  определяется по умолчанию, причем обязательно его разрядность вдвое больше разрядности делителя. Таким образом, по длине делителя определяется вариант действия команды:

а) - деление слова на байт.

Значение длиной в слово, размещенное в регистре AХ, делится на операнд длиной байт, указанный в команде.  Результат операции: частное длиной байт сохраняется в регистре AL, остаток от деления длиной байт пишется в регистр AH.

б) - деление двойного слова на слово.

Значение длиной в двойное слово, размещенное в паре регистров DX, AХ (младшие 16 бит – в регистре АХ, а старшие 16 бит – в регистре DX), делится на операнд длиной слово, указанный в команде.  Тут результат операции: частное длиной слово сохраняется в регистре AХ, остаток от деления длиной слово запишется  в регистр DX.

Пример: DIV BL. (Поскольку в команде указан операнд длиной в байт, то выполняется деление содержимого регистра АХ на содержимое регистра BL). В результате целая часть частного будет получена в AL,  и остаток  от деления  - в AH.

CBW – команда «знакового расширения» байта до слова. Значение ЧСЗ, хранимое вначале в байте AL, преобразуется в слово и сохраняется в регистре AX.

CWD – команда «знакового» расширения слова до двойного слова. Значение ЧСЗ, хранимое в байте AХ, преобразуется в двойное слово и сохраняется в паре регистров DX, AX. Заметьте: в DX  все биты просто повторят знаковый бит из AX.

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

2.1. Составить программу для расчета заданного арифметического выражения. Длину и значение переменных A, B, C – выбрать самостоятельно. Константы, заданные в выражении,  использовать в кодовом сегменте.

2.2. Описать команды умножения и деления, используемые в программе на предмет длины операндов, участвующих в операции. Охарактеризовать длину результата и место его хранения.

2.3. Получить загрузочный модуль.

2.4. Протестировать выполнение программы в отладчике.

Варианты заданий приведены в Приложении А.

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

  1.  Исходные данные для выполнения работы.
    1.  Листинг программы.
    2.  Анализ результатов выполнения программы.
    3.  Выводы.

Приложение А

Варианты заданий к лабораторной работе

Вариант

ЕСЛИ

ТО

R =

ИНАЧЕ

R =

1

A > B

A*((366-B)+179)/ (C+73)

A+B

2

A < B

A*(864/B-181/C)+7

A - B

3

A = B

A+(212+B/32)*C-31

A+2B

4

A <> B

A*32+B*(28/C-56)

A - 2B

5

A >- B

A-328/(B*103/(C-36))

A+B + C

6

A < 2B

A*166-(B/569+C)*752

A – B + C

7

A = 2B

56*A+785/(B-C)

A+2B - C

8

A <>2B

((A-52)*(A+52)+B)/C

2A - 2B

9

A > C

(A+752*B)/13-C

C+B

10

A < C

(A+B)*((C-563)/5-16)

C - B

11

A = C

(A+B/32)*C-31

C+2B

12

A <> C

A/(B*103)+C-99

C - 2B

13

A >- C

A+752*B-(C-256)

C+A

14

A < 2C

A-(867/C*(104-B-28))

C - A

15

A = 2C

((C–64)*(B+81)+А)/42

C+2A

16

A <>2C

(A –481/B)/85*(C-44)

C - 2A

17

B > C

A *90+B/(54-C)*7

A + B - C

18

B < C

C /255-B/(7+B)*7

A+B

19

B = C

C *(59-B/19+А)+10

A - B

20

B <> C

C*(89*B-15)/(B+82)+А

A+2B

21

B >- C

(A-(607+B*92)/C)*50

A - 2B

22

B < 2C

(A+426)/(B*194+C)*11

A+B + C

23

B = 2C

A*414-(B+188*C)/34

A – B + C

24

B <>2C

(A+891/(B*159+C))*76

A+2B - C

25

B <> C

C*(89*B-15)/(А+82)+А

A+2B

26

B >- C

(С-(300+B*92)/А)*20

A - 2B

27

C > -B

(A+475)/(B*125-C)*70

2A - 2B




1. Сонячні колектори
2. Г ЗУБЧАТЫЕ И ЧЕРВЯЧНЫЕ ПЕРЕДАЧИ Раздел 1- Прямозубые зубчатые передачи
3. тематическая постановка задачи32 2
4. Бухгалтерский учет в коммерческом банке
5. Управление материальными ресурсами предприятия
6. Тема урока- Шипящие согласные звуки
7. СТАТЬЯ 27 ПОДВЕДОМСТВЕННОСТЬ ДЕЛ АРБИТРАЖНОМУ СУДУ
8. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата хімічних наук Киї
9. тематичні моделі прогнозування динамічних рядів у дилінгових інформаційних системах Спеціальність 0
10. Болезни ободочной кишки
11. экономических дисциплин ФИЗИЧЕСКАЯ КУЛЬТУРА Программа курса для
12. Анализ кредитоспособности заемщика
13. ЛЕКЦИЯ 10 Средняя длина свободного пробега молекул
14. 2010 г ФОНД ТЕСТОВЫХ ЗАДАНИЙ По дисциплине- Профессиональная этика юриста
15. Производственная и экологическая безопасность
16. Остеохондроз шейного отдела позвоночника
17. 150 20 10 000 1106 54 В качестве фольги используемой д
18. 13. Замотаева Николая Евгеньевича
19. Азии и 121 бывшего Союза
20. Византийская империя в правление Феодосия I