МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"
Кафедра САПР
ЗВІТ
ДО ЛАБОРАТОРНОЇ РОБОТИ № 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). Мною була написана програма, яка виконує додавання двох чисел і ділить результат на третє число. Числа вводимо з клавіатури, а результат виводиться на екран в десятковій системі. Крім цього в програмі передбачено захист від неправильного введення значень.