МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Національний університет Львівська політехніка
Кафедра САПР         
Звіт
До лабораторної роботи №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)”. Я отримав практичні навички складання і налагодження програм виконання для даного мікропроцесора.