
лабораторная работа / лабораторные работы по ASSAMBLER / lab1 вариант 10
.doc
МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РФ
САРАТОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
БАЛАКОВСКИЙ ИНСТИТУТ ТЕХНИКИ, ТЕХНОЛОГИИ И УПРАВЛЕНИЯ
факультет: иженерно-строительный
кафедра: управление и информатика в технических системах
Лабораторная работа №1
по дисциплине: СПО
Вариант №10
Выполнил ст. гр. УИТ-32
Есипов С.В.
Принял:
Стельмах И.В.
2006 г.
Цель работы: изучение операций сложения, вычитания, умножения и деления
двоичных чисел на языке Ассемблер.
Задание:
-
Написать программу на языке Ассемблер, реализующей заданное выражение из таблицы. Номер варианта соответствует номеру по списку.
-
Проассамблировать программу.
-
Отладить и проследить пошаговое выполнение программы с помощью отладчика DEBUG либо TURBO DEBUGER.
Залание:
10 |
Y = ((a -d)*3 - c) / (b-5)*2 |
a=19
b=2
c=10
d=20
Листинг программы:
.MODEL small
.STACK 100h
.DATA
.CODE
mov ax,2
sub ax,5
shl ax,1
mov cx,ax
mov ax,19
sub ax,20
mov bx,3
imul bx
sub ax,10
idiv cx
mov ah,4ch ;DOS terminate program function
int 21h ;terminate the program
END
Отладка программы:
Команда |
Значение регистров |
Значение флагов |
||||||||||
ax |
bx |
cx |
dx |
c |
z |
s |
o |
p |
a |
i |
d |
|
|
0000 |
0000 |
0000 |
0000 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
mov ax,0002 |
0002 |
0000 |
0000 |
0000 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
sub ax,0005 |
FFFD |
0000 |
0000 |
0000 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
shl ax,1 |
FFFA |
0000 |
0000 |
0000 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
mov cx,ax |
FFFA |
0000 |
FFFA |
0000 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
mov ax,0013 |
0013 |
0000 |
FFFA |
0000 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
sub ax,0014 |
FFFF |
0000 |
FFFA |
0000 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
mov bx,0003 |
FFFF |
0003 |
FFFA |
0000 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
imul bx |
FFFD |
0003 |
FFFA |
FFFF |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
sub ax,000A |
FFF3 |
0003 |
FFFA |
FFFF |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
idiv cx |
0002 |
0003 |
FFFA |
0001 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
Результат от конечного деления:
частное: AX=0002H=2D
остаток: DX=0001H=1D
Алгебраическая проверка: ((19-20)*3-10)/(2-5)*2=-13/(-6)=2, ост. 1
Вывод: пользуясь операциями сложения, вычитания, умножения и деления
двоичных чисел на языке Ассемблер, я составил программу для алгоритма решения данной задачи, фактический результат которой сошелся с теоретическим.