Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра ЕОМ
Звіт
з лабораторної роботи № 4
з дисципліни: “ Засоби системного програмування ”
на тему: ”Програмування задач лінійної структури. Обчислення виразів.”
Мета: вивчити способи задання констант та змінних в Асемблері та набути навиків використання арифметичних команд над даними різного розміру.
Порядок виконання роботи
1. Завдання
Створити *.exe програму, яка реалізовує обчислення, заданого варіантом виразу і зберігає результат в пам’яті.Вхідні операнди А, В, С, D, E, F вважати беззнаковими і довжиною в байтах, згідно з індексу; К – константа, довжина якої визначається значенням(згідно варіанту). Для її опису слід використати директиву EQU.
За допомогою Debug, відслідкувати правильність виконання програми (продемонструвати результати проміжних та кінцевих обчислень).
Скласти звіт про виконану роботу з приведенням тексту програми та коментарів до неї.
ВАРІАНТИ ЗАВДАННЯ:
А, В, С, D, E, F - беззнакові операнди, довжиною в байтах, згідно з індексу,
значення К подано у 16-му форматі.
X=A2*B1+C4/(K-E1*F1)
A77627
2. Написав і скомпілював код програми
.MODEL SMALL
.STACK 100h
.DATA
A dw 8253h
B dw 0083h
C dd 45114563h
E db 12h
F db 13h
K_high EQU 7Ah
K_low EQU 7627h
X dd ?
Temp1 dw 0000h
Temp2 dw 0000h
.CODE
Start:
mov ax,@data
mov ds,ax
xor cx,cx
xor ax,ax ;очищуємо регістр
xor dx,dx ;очищуємо регістр
mov al, [E] ;заносимо в al E
mul [F] ;множимо E*F ax=al*F результат в AX.!!!
mov cx,ax ;переносимо результат в cx
mov ax, K_low ;ax = 7627h
mov dx, K_high ; dx = 007Ah
sub ax,cx ; K-E1*F1
sbb dx,0 ; якщо виникло переповнення до відняти 1
mov word [Temp1],ax ; зберігаємо результат у змінній Temp1
mov word [Temp2],dx
mov ax,word ptr C ;ax = 4563h
mov dx,word ptr C+2 ;dx = 4511h
div Temp1 ;C4/(K-E1*F1) ax= dx:ax / Temp1
div Temp2 ; al=ax/ Temp2
xor cx,cx
mov cl,al ;c/(K-E*F) cx=al
mov bx, word [B] ;заносимо в bx A
mov ax, word [A] ;заносимо в ax B
mul bx ;множимо A*B dx:ax = ax*bx результат в ax і dx
add ax,cx
adc dx,0
mov word ptr X, ax ;переносимо результат в X
mov word ptr X+2,dx
end Start
/
Висновок: на даній роботі я вивчив способи задання констант та змінних в Асемблері та набув навиків використання арифметичних команд над даними різного розміру.