МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Національний університет Львівська політехніка
Кафедра САПР
Звіт
До лабораторної роботи №8
З курсу “Архітектура комп’ютерів”
На тему:
«Структура асемблерних програм, арифметичні операції, програмування виводу інформації на екран ЕОМ, організація підпрограм та операцій переходів процесора Intel 8086(80286)».
Львів – 2007
Тема роботи:
Структура асемблерних програм, арифметичні операції, програмування виводу інформації на екран ЕОМ, організація підпрограм та операцій переходів процесора Intel 8086(80286).
Мета роботи:
Вивчити структуру асемблерних програм у EXE, COM- форматах та засоби для їх асемблювання, лінкування та відлагодження; арифметичні операції; програмування виводу інформації на екран ЕОМ, організація підпрограм та операцій переходів процесора Intel 8086(80286), набути практичних навиків складання та налагоджування програм для даного мікропроцесора.
Теоретичні відомості
___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
Лабораторне завдання:
Виконати арифметичні операції над заданими числами: (115*269+7114/55)/31. Числа ввести з клавіатури в ASCI форматі, результат вивести на екран в десятковій системі. Передбачити захист від неправильного вводу даних.
Хід роботи
Для реалізації поставленого завдання мною була розроблена наступна програма:
LAB8.ASM
.model tiny
.code
org 100h
start: mov ah,9
mov dx,offset message
int 21h
call perevid
mov ax,dane
mov oper1,ax
call perevid
mov ax,dane
mov oper2,ax
call perevid
mov ax,dane
mov oper3,ax
call perevid
mov ax,dane
mov oper4,ax
call perevid
mov ax,oper1
mov bx,oper2
;xor dx,dx
mul bx
;cmp dl,0
;jne pom1
mov resm,ax
call vuvid
mov ax,oper3
mov bx,oper4
xor dx,dx
div bx
mov resd,ax
call vuvid
mov ax,resm
mov bx,resd
add ax,bx
mov resdod,ax
call vuvid
mov ax,resdod
mov bx,dane
xor dx,dx
div bx
mov res1,ax
call vuvid
mov ax,04c00h
int 21h
perevid:
mov dx,offset buffer
mov ah,0Ah
int 21h
xor cx,cx
mov dane,cx
mov cl,byte ptr [blenght]
cmp cl,0
je pom
mov di,-1
mov bx,1
cukl:
mov di,cx
xor ax,ax
mov al,byte ptr bcontents[di-1]
sub ax,30h
cmp al,9
ja pom
mul bx
add dane,ax
mov ax,bx
mul m
mov bx,ax
loop cukl
mov ah,9
mov dx,offset message1
int 21h
ret
vuvid:
mov bx,ax
xor si,si
mov cx,5
mov ax,10000
mov word ptr [m1],ax
perevidasci:
mov ax,bx
xor dx,dx
div word ptr m1
push ax
add ax,30h
mov byte ptr res[si],al
sub al,30h
inc si
pop ax
mul m1
sub bx,ax
mov ax,m1
xor dx,dx
div word ptr m
mov word ptr [m1],ax
loop perevidasci
mov ax,0A0Dh
mov word ptr res[si],ax
inc si
inc si
mov al,24h
mov byte ptr res[si],al
mov dx,offset res
mov ax,0900h
int 21h
ret
pom:
mov dx,offset message2
mov ax,0900h
int 21h
jmp perevid
ret
;pom1:
;mov dx,offset message2
;mov ax,0900h
;int 21h
;jmp start
;ret
message db "Vvedit pershe dane:",0Dh,0Ah,'$'
message1 db 0Dh,0Ah,'$'
message2 db "Vvedit korektno dani:",0Dh,0Ah,'$'
res db 8 dup (" ")
m dw 10
m1 dw 0
dane2 dw ?
dane dw 0
oper1 dw ?
oper2 dw ?
oper3 dw ?
oper4 dw ?
resm dw ?
resd dw ?
resdod dw ?
res1 dw ?
buffer db 5
blenght db ?
bcontents:
end start
Після набору тексту програми в текстовому редакторі її було збережено у файл LAB8.ASM. Після цього асембльована та злінкована за допомогою файлу compile8, в якому було прописано наступні команди:
tasm /zi lab8.asm
tlink /v /t lab8.obj
lab8.com
pause
Після того як програма завантажилась мною було введено відповідні дані та перевірено правельність виконання, і роботу захисту від не правильного вводу даних.
Для покрокового відлагодження було використано пакетний файл MS-DOS – dug
В якому прописано наступна команда: td.exe lab8.com
Висновок:
Під час виконання лабораторної роботи мною було засвоєно матеріал по темі: “Структура асемблерних програм, арифметичні операції, програмування виводу інформації на екран ЕОМ, організація підпрограм та операцій переходів процесора Intel 8086(80286)”. Я отримав практичні навички складання і налагодження програм виконання для даного мікропроцесора.