Міністерство освіти та науки України
Національний університет «Львівська політехніка»
ЗВІТ
З лабораторної роботи №4
З дисципліни: «Засоби системного програмування»
На тему: «Програмування задач лінійної структури.
Обчислення цілочисельних виразів з використанням беззнакових даних»
Львів 2010
ЗАВДАННЯ:
Створити *.exe програму, яка реалізовує обчислення, заданого варіантом виразу і зберігає результат в пам’яті.Вхідні операнди А, В, С, D, E, F вважати беззнаковими і довжиною в байтах, згідно з індексу; К – константа, довжина якої визначається значенням(згідно варіанту). Для її опису слід використати директиву EQU.
За допомогою Debug, відслідкувати правильність виконання програми (продемонструвати результати проміжних та кінцевих обчислень).
Скласти звіт про виконану роботу з приведенням тексту програми та коментарів до неї.
Дати відповідь на контрольні запитання.
ВАРІАНТ ЗАВДАННЯ:
№
Вираз
K
7
X=A4/B2-C1*(D1+E2-K)
717
Лістинг програми:
DOSSEG
.MODEL SMALL
.STACK 100h
.DATA
K EQU 717h
A LABEL word
dw 4240h
dw 000Fh
B dw 2h
C db 0ffh
D db 0ffh
E dw 0ffffh
Temp1 dw 00h
Temp2 dw 00h,00h
Res dw 00h
Temp3 dw 00h,00h
X dw 00h,00h
;X=A4/B2-C1*(D1+E2-K)
.CODE
go:
mov ax,@data
mov ds,ax
;ax <- D+E
clc
mov ah,0
mov al,D
add ax,E
adc dx,0
;Temp1 <- ax - K
clc
sbb ax, K
sbb dx, 0
mov Temp1,ax
;#====================================[DIV]===============================;
;Temp2 <- A / B
mov dx,A+2
mov ax,A
mov si,B
xor bx,bx
xor cx,cx
xor di,di
mov bp,33
M5A4:
rcl cx,1
rcl bx,1
sub cx,si
sbb bx,di
jnb M5B2
add cx,si
adc bx,di
M5B2:
cmc
rcl ax,1
rcl dx,1
dec bp
jnz M5A4
mov Temp2,ax
mov Temp2+2,dx
mov Res,cx
;#====================================[DIV]===============================;
;Temp3 <- C*Temp1
;#====================================[MUV]===============================;
mov al,C
mov ah,0
mov cx,1
mov si,Temp1
xor di,di
xor bx,bx
xor dx,dx
l1:
test cx,cx
jz exit
test cx,ax
jz l2
add bx,si
adc dx,di
l2:
shl cx,1
shl si,1
rcl di,1
jmp l1
exit:
mov ax,bx
mov Temp3,ax
mov Temp3+2,dx
;#====================================[MUV]===============================;
;X <- Temp2 - Temp3
clc
mov ax,Temp2
mov dx,Temp2+2
sub ax,Temp3
mov X,ax
sbb dx,Temp3+2
mov X+2,dx
mov ah,4Ch
int 21h
end go
Висновок і результати роботи програми:
Висновок: я навчився виконувати операції над цілими без знаковими даними.
Використовувати стандартні функції для виконання цих операцій.