Дана формула: 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?
Лабораторная работа |
ÖÈÊËÈ×ÅÑÊÈÅ È ÐÀÇÂÅÒÂËßÞÙÈÅÑß ÏÐÎÃÐÀÌÌÛ |
ЦЕЛЬ РАБОТЫ
Цель настоящей работы – выработка навыков разработки простых циклических программ на языке ассемблера.