Пример выполнения работы. A, B, C, X - целые знаковые числа, занимающие слово

Дана формула: X = 3A + (B + 5)/2 – C – 1.

A, B, C, X - целые знаковые числа, занимающие слово. Напи­сать программу, реализующую данную формулу.

Распишем формулу по отдельным операциям:

AX A значение А в регистр AX
AX 2*(AX) 2A в AX
AX (AX) + A 3A в AX
BX B B в BX
BX 5 + (BX) B+5 в BX
BX (BX)/2 (B+5)/2 в BX
AX (BX) + (AX) 3A+(B+5)/2 в AX
AX (AX) – C 3A+(B+5)/2–C в AX
AX (AX) – 1 3A+(B+5)/2–C–1 в AX
X (AX) 3A+(B+5)/2–C–1 в X

Текст программы:

model SMALL

stack 100h

dataseg

A dw 10

B dw 20

C dw 5

X dw?

codeseg

startupcode

mov AX, A;значение А в регистр AX

sal AX, 1; 2A в AX

add AX, A; 3A в AX

mov BX, B; B в BX

add BX, 5; B+5 в BX

sar BX, 1; (B+5)/2 в BX

add AX, BX; 3A+(B+5)/2 в AX

sub AX, C; 3A+(B+5)/2-C в AX

dec AX; 3A+(B+5)/2-C-1 в AX

mov X, AX; 3A+(B+5)/2-C-1 в X

;Конец работы

QUIT: exitcode 0

end

Предсказать результат и проверить совпадает ли он с получен­ным. Попробовать другие варианты данных. Данные изменять не­посредственно в отладчике, используя окна Watch или Dump.

ВАРИАНТЫ ЗАДАНИЙ

Разработать программу, реализующую указанную формулу, ис­полнить программу с несколькими наборами исходных данных, проверить правильность результатов.

1. X = –4A + (B + C)/ 4 + 2

2. X = (A – B) / 4 – 2C + 5

3. X = (A/2 + B) / 4 + C – 1

4. X = (7A – 2B – 100) / 2 + C

5. X = – (C + 2A + 4B + 8)

6. X = –A/2 + 4(B + 1) – 3C

7. X = A – 5(B – 2C) + 2

8. X = 6C + (B – C + 1)/2

КОНТРОЛЬНЫЕ ВОПРОСЫ

1. Из каких полей состоит строка программы на ассемблере?

2. Какие поля обязательны, а какие можно опустить?

3. Назначение директив stack, dataseg и codeseg.

4. Назначение макрокоманд startupcode, exitcode.

5. Назначение директив db, dw.

6. Назначение оператора dup в директивах db, dw.

7. Назначение директивы end.

8. В чем различие между командами:
mov AX, BX;
mov AX, [BX];
mov [AX], BX?

9. Какая директива завершает текст программы?

10. В чем различие между командой mov A, 1 и директивой A dw 1?

11. Пусть имя файла исходной программы – LAB.ASM. Что будут содержать файлы: LAB.OBJ, LAB.LST, LAB.EXE?

12. Для чего используется отладчик?

13. Как изменится содержимое AL и флагов после выполнения ко­манд
shr AL, 1;
sar AL, 1;
shl AL, 1;
sal AL, 1,
если AL = F2h?


Лабораторная работа

ÖÈÊËÈ×ÅÑÊÈÅ È ÐÀÇÂÅÒÂËßÞÙÈÅÑß ÏÐÎÃÐÀÌÌÛ

ЦЕЛЬ РАБОТЫ

Цель настоящей работы – выработка навыков разработки простых циклических программ на языке ассемблера.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: