МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"
Кафедра САПР
ЗВІТ
ДО ЛАБОРАТОРНОЇ РОБОТИ № 8
На тему: «Арифметичні операції мікропроцесора Intel 8086 (80286)».
З дисципліни : «Архітектура комп’ютерів»
Тема роботи:	Арифметичні операції мікропроцесора Intel 8086 (80286).
Мета роботи:	Вивчити основні арифметичні операції мікропроцесора Intel 8086 (80286).
ТЕОРЕТИЧНІ ВІДОМОСТІ
________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
ЛАБОРАТОРНЕ ЗАВДАННЯ:
Виконати арифметичні операції над числами:
Дані вводити з клавіатури. Результат вивести на екран в десятковій системі. Передбачити захист від неправильного введення значень.
ХІД РОБОТИ:
Для реалізації поставленого завдання була розроблена наступна програма:
.model tiny
.code					;початок коду програми
org 100h
start:	mov ah,9
		mov dx,offset mes1	;виводимо перше повідомлення і 
		int 21h			;очікуємо введення 1 числа
		CALL	VVID			;виклик підпрограми введення і 			mov	n1,ax		;перетворення числа з ASCII в 							;двійкову систему числення
		mov ah,9			;повторюємо для 2 числа
		mov dx,offset mes2
		int 21h
		CALL	VVID
		mov	n2,ax
		
		mov ah,9			;повторюємо для 3 числа
		mov dx,offset mes3
		int 21h
		CALL	VVID
		mov	n3,ax
	
		mov ah,9			
		mov dx,offset mes4	;виводимо повідомлення
		int 21h
		mov	ax,n1
		add	ax,n2		;Перше число додаємо до другого
		mov	r1,ax
		call	vuvid		;викликаємо підпрограму переведення 						;результату в ASCII формат і 								;виведення його на екран
		mov ah,9
		mov dx,offset mes5
		int 21h
		xor	dx,dx
		mov	ax,r1
		div	n3			;результат ділимо на третє число
		mov	r2,ax
		mov	ost,dx
		call	vuvid		;перетворюємо в ASCII формат і 							;виводимо на екран результат ділення
		mov ah,9
		mov dx,offset mes6
		int 21h
		mov	ax,ost
		call	vuvid		;виводимо на екран остачу від ділення
		call	readkey
RET
;підпрограма введення числа і перетворення його в двійкову систему
VVID:	MOV AH,0Ah
		MOV DX,OFFSET LBUFER
		INT 21h
		mov cx,0
		mov tmp,cx	
		XOR CX,CX
		XOR DX,DX
		MOV Cl,mbufer
		mov bx,1
		CUKL:	mov di,cx
			XOR AX,AX
			MOV al,byte ptr bufer[di-1]
			cmp al,30h
			jb error
			cmp al,39h
			ja error
			sub al,30h
			MUL bx
			ADD tmp,ax
			MOV AX,bx
			MUL m
			MOV bx,AX
		loop cukl
		mov ax,tmp
RET	
ERROR:	mov ah,9
		mov dx,offset emes
		int 21h
		JMP vvid
;підпрограма перетворення числа в ASCII формат і 
;виведення його на екран
VUVID:	XOR CX,CX
		XOR DX,DX
		mov bx,ax
		mov cx,4
		mov ax,1000
		mov d,ax
		mov ax,bx
		CUKL2:	div d
			push ax
			add ax,30h
			mov dl,al
			mov ah,02h
			int 21h
			pop ax
			mul d
			sub bx,ax
			mov ax,d
			div m		
			mov d,ax	
			mov ax,bx
		loop CUKL2
RET
;підпрограма очікування натиснення будь-якої клавіші
READKEY:	mov ah,9
		mov dx,offset mes7
		int 21h
		mov ah,8
		int 21h
ret
;дані які використовувались програмою
	;повідомлення які видає програма
	mes1	db	"Введiть 1 число:",0Dh,0ah,24h
	mes2	db	0Dh,0ah,"Введiть 2 число:",0Dh,0ah,24h
	mes3	db	0Dh,0ah,"Введiть 3 число:",0Dh,0ah,24h
	mes4	db	0Dh,0ah,0Dh,0ah,"Результат додавання:",0Dh,0ah,24h
	mes5	db	0Dh,0ah,"Результат дiлення:",0Dh,0ah,24h
	mes6	db	0Dh,0ah,"Остача вiд дiлення:",0Dh,0ah,24h
	mes7	db	0Dh,0ah,0Dh,0ah,"Натиснiть будь-яку клавiшу...",24h
	emes	db	"Помилка! Попробуйте щераз:",0Dh,0ah,24h
	;буфер для даних
	lbufer	db	5		
	mbufer	db	?
	bufer	db	5 DUP (0)
	
	M	db	10			;множник
	D	dw	0			;дільник
	tmp	dw	0			;змінна для тимчасового зберігання
	N1	dw	?			;перше число
	N2	dw	?			;друге число
	N3	dw	?			;третє число
	R1	dw	?			;результат додавання
	R2	dw	?			;результат ділення
	ost	dw	?			;остача від ділення
end start
ВИСНОВОК:
Під час виконання лабораторної роботи я вивчив основні арифметичні операції мікропроцесора Intel 8086 (80286). Мною була написана програма, яка виконує додавання двох чисел і ділить результат на третє число. Числа вводимо з клавіатури, а результат виводиться на екран в десятковій системі. Крім цього в програмі передбачено захист від неправильного введення значень.