zoshyt
.pdfРабота №2
jmp |
|
Start |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
MULT |
ENDP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
CSEG |
ENDS |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
END MULT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
Множимое |
|
|
|
Множитель |
|
|
|
Результат |
|||||||||||||||
|
|
десятичное |
|
шестнадцат. |
|
десятичное |
|
шестнадцат. |
десятичное |
|
шестнадцат. |
||||||||||||||||
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 2.1 |
||
Команда |
|
|
|
|
|
|
|
|
|
содержимое регистров |
|
|
|
|
|
|
|
|
|
|
|||||||
|
аx |
|
bx |
|
cx |
|
dx |
|
cs |
|
ds |
|
di |
si |
|
|
|
|
Флаги |
||||||||
|
|
|
|
|
|
|
|
|
|
|
cf |
zf |
|
sf |
pf |
af |
df |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11
Работа №2
|
|
|
|
|
|
|
|
|
|
|
|
|
Программа 2.5 |
|
|
|
|
|
|
|
|
|
|
|||||||
TITLE ДЕЛЕНИЕ ЦЕЛЫХ БЕЗЗНАКОВЫХ ЧИСЕЛ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
TITLE С ИСПОЛЬЗОВАНИЕМ КОМАНД ДЕЛЕНИЯ МП 1810 |
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
; Определение сегмента стека |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
SSEG |
SEGMENT PARA |
|
STACK |
'STACK' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
DB |
|
128 DUP(0) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
SSEG |
ENDS |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; Определение сегмента данных |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DSEG |
SEGMENT PARA PUBLIC |
'DATA' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
DELIM |
|
DD 1 DUP (0) ; Делимое, длина двойное слово |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
DELIT |
DW |
1 DUP (0) ; Делитель, длина слово |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
REZLT |
|
DW 1 DUP (0) ; Результат, длина слово |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
OSTAT |
DW 1 DUP (0) ; Остаток, длина слово |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
DSEG |
ENDS |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; Определение сегмента кода программы |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CSEG |
SEGMENT PARA PUBLIC |
'CODE' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
ASSUME CS:CSEG,DS:DSEG,SS:SSEG |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DIVD |
PROC |
FAR |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
mov |
|
ax,DSEG |
; Определение адреса сегмента DATA |
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
mov |
|
ds,ax |
|
|
; Пересылка в сегментный регистр DS |
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
Start: lea |
|
bx,DELIM ; Занесение адреса делимого в регистр BX |
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
mov |
|
ax,[bx] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
mov |
|
dx,[bx+2] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
div |
|
DELIT ; Деление двух чисел (DXAX:DELIT=AX, DX) |
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
mov |
|
REZLT,ax |
|
; Сохранение результата |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
mov |
|
OSTAT,dx |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
jmp |
|
Start |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
DIVD |
ENDP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
CSEG |
ENDS |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
END DIVD |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
Делимое |
|
|
|
Делитель |
|
|
|
Частное |
||||||||||||||||
|
|
десятичное |
шестнадцат. |
|
десятичное |
|
|
шестнадцат. |
десятичное |
|
шестнадцат. |
|||||||||||||||||||
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 2.2 |
||
Команда |
|
|
|
|
|
|
|
|
|
|
|
содержимое регистров |
|
|
|
|
|
|
|
|
|
|
||||||||
|
аx |
|
bx |
|
cx |
|
|
dx |
|
cs |
|
ds |
|
di |
si |
|
|
|
|
Флаги |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
cf |
zf |
|
sf |
pf |
af |
df |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12
Работа №2
Алгоритм программы 2.1 |
Алгоритм программы 2.2 |
Алгоритм программы 2.3 |
Алгоритм программы 2.4 |
13
Работа №2
| Программа деления 16-ти битного числа на 8-битное | число по описанному методу в пункте 1.2.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Алгоритм программы 2.5
Выводы:________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
Выполнил студент _____________________ дата _____________________________
Принял ___________________ "____________________" оценка ________ дата __________________
(подпись) (Ф И О)
14
Работа №3
ЛАБОРАТОРНАЯ РАБОТА 3
ИССЛЕДОВАНИЕ НА МИКРОПРОЦЕССОРНЫХ УСТРОЙСТВАХ АЛГОРИТМА ИЗВЛЕЧЕНИЯ КВАДРАТНОГО КОРНЯ.
Цель работы: Ознакомление с принципами программирования на языке АССЕМБЛЕР МП 1810, с использованием отладочных средств исследуя алгоритм извлечения квадратного корня из многобайтного целого числа.
|
|
ВЫПОЛНЕННИЕ РАБОТЫ |
|
|
Программа 3.1 |
TITLE ВЫЧИСЛЕНИЕ КВАДРАТНОГО КОРНЯ |
||
; Определение сегмента стека |
|
|
SSEG |
SEGMENT PARA STACK |
'STACK' |
DB 128 DUP(0) |
|
|
SSEG |
ENDS |
|
; |
|
|
; Определение сегмента данных |
|
|
; |
|
|
DSEG |
SEGMENT PARA PUBLIC |
'DATA' |
NUMBER DD 1 DUP (0) ; Число, длина 32 бита |
||
REZLT |
DW 1 DUP (0) ; Результат, длина 2 байта (слово) |
|
DSEG |
ENDS |
|
;
; Определение сегмента кода программы
;
CSEG SEGMENT PARA PUBLIC 'CODE' ASSUME CS:CSEG,DS:DSEG,SS:SSEG
; |
|
|
SQRT32 PROC |
FAR |
|
mov |
ax,DSEG ; Определение адреса сегмента DATA |
|
mov |
ds,ax |
; пересылка в сегментный регистр DS |
Start: lea |
bx,NUMBER ; Занесение адреса числа в регистр BX |
|
mov |
ax,[bx] ; Занести число в регистры МП |
|
mov |
dx,[bx+2] ; |
|
push |
bp |
; Сохранить регистры BP, DX, AX в стеке |
push |
dx |
|
push |
ax |
|
mov |
bp,sp |
; Поместить ВР на значение АХ в стеке |
mov |
bx,200 ; В качестве начального приближения |
|
div |
bx |
; разделить исходное число на 200, |
add |
ax,2 |
; затем добавить 2. |
NXT_APP: |
|
|
mov |
bx,ax |
; Сохранить полученное приближение в ВХ. |
mov |
ax,[bp] ; Прочитать исходное число заново |
|
mov |
dx,[bp+2] |
|
div |
bx |
; Разделить на последнее приближение и |
add |
ax,bx |
; усреднить результат |
shr |
ax,1 |
|
cmp |
ax,bx |
; Два последних приближения идентичны? |
je |
DONE |
|
sub |
bx,ax |
; Нет. Сравнить их разность с +1 и -1 |
cmp |
bx,1 |
|
je |
DONE |
|
cmp |
bx,-1 |
|
jne |
NXT_APP |
15
Работа №3
DONE: mov |
bx,ax |
; Поместить результат в ВХ |
|
||
mov |
REZLT,bx ; Переслать результат в память |
|
|||
pop |
ax |
; Восстановить регистры. |
|
||
pop |
dx |
|
|
|
|
pop |
bp |
|
|
|
|
jmp |
Start |
|
|
|
|
SQRT32 ENDP |
|
|
|
|
|
CSEG ENDS |
|
|
|
|
|
END |
SQRT32 |
|
|
|
|
|
|
|
|
|
Таблица 3.1. |
|
Число |
|
Корень квадратный |
Количество циклов |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Алгоритм программы 3.1 Выводы:________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
Выполнил студент _____________________ дата _____________________________
Принял ___________________ "____________________" оценка ________ дата __________________
(подпись) (Ф И О)
16
Работа №4
ЛАБОРАТОРНАЯ РАБОТА 4
ИССЛЕДОВАНИЕ ТАБЛИЧНОГО СПОСОБА ВЫЧИСЛЕНИЯ ТРИГОНОМЕТРИЧЕСКИХ ФУНКЦИЙ.
Цель работы: Ознакомление с принципами программирования на языке АССЕМБЛЕР МП 1810 с использованием отладочных средств, исследуя алгоритм вычисления значений синуса угла, выраженного в градусах табличным способом.
ВЫПОЛНЕННИЕ РАБОТЫ
Программа 4.1
;Программа вычисления синуса угла (целые значения от 0 ;до 360 градусов), содержащегося в регистре AX. Значениe ;синуса угла, в прямом коде, возвращается в регистре BX
;
01 |
DOSSEG |
|
02 |
.MODEL TINY |
|
03 |
STACK 200h |
|
04 |
.DATA |
|
; |
Значения синуса |
Градусы |
; |
|
|
|
|
|
05 Bradees DW |
0,175,349,523,698,872 ; 0 - 5 |
||||
06 |
DW |
1045,1219,1392,1564,1736 ; 6 - 10 |
|||
07 |
DW |
1908,2079,2250,2419,2588 |
; 11 - 15 |
||
08 |
DW |
2756,2924,3090,3256,3420 |
; 16 - 20 |
||
09 |
DW |
3584,3746,3907,4067,4226 |
; 21 - 25 |
||
10 |
DW |
4384,4540,4695,4848,5000 |
; 26 - 30 |
||
11 |
DW |
5150,5299,5446,5592,5736 |
; 31 - 35 |
||
12 |
DW |
5878,6018,6157,6293,6428 |
; 36 - 40 |
||
13 |
DW |
6561,6691,6820,6947,7071 ; 41 - 45 |
|||
14 |
DW |
7193,7313,7431,7547,7660 ; 46 - 50 |
|||
15 |
DW |
7771,7880,7986,8090,8191 ; 51 - 55 |
|||
16 |
DW |
8290,8387,8480,8572,8660 |
; 56 - 60 |
||
17 |
DW |
8746,8829,8910,8988,9063 |
; 61 - 65 |
||
18 |
DW |
9135,9205,9272,9336,9397 |
; 66 |
- 70 |
|
19 |
DW |
9455,9511,9563,9613,9659 ; 71 |
- 75 |
||
20 |
DW |
9703,9744,9781,9816,9848 ; 76 |
- 80 |
||
21 |
DW |
9877,9903,9926,9945,9962 |
; 81 |
- 85 |
22DW 9976,9986,9994,9998,10000 ; 86 - 90
;
23.CODE
24StartPr: mov ax,@Data
25mov ds,ax
26 mov ax,0 ; Записать в AX 0 ;*********************************************************
;Перед выполнением следующей команды занесите
;в AX значение угла (в градусах) в HEX коде
;*********************************************************
27 |
sub cx,cx |
; Установить маску знака "+" |
|
|
; (старший разряд = 0) |
28 |
cmp ax,181 |
; Угол < 181 ? |
29 |
jb Sin_pos |
; ДА. Оставить со знаком "+" |
30 |
mov cx,8000h |
; НЕТ. Изменить знак на "-" |
|
|
; (старший разряд = 1) |
31 |
sub ax,180 |
; и вычесть из угла 180 |
17
Работа №4
32 |
Sin_pos: cmp |
ax,91 ; Угол < 91 ? |
33 |
jb Get_sin |
; ДА. Извлечь из таблицы значение синуса |
34 |
neg ax |
; НЕТ. Вычесть угол из 180 |
35 |
add ax,180 |
|
36 |
Get_sin: mov bx,ax ; Сделать угол индексом слова (2байта) |
37shl bx,1
38mov bx,Bradees[bx] ; Извлечь значение синуса
39 |
or bx,cx |
; с помощью маски (CX) установить знак |
|
|
|||
40 |
jmp StartPr |
; в значение синуса (BX) |
|
|
|
||
|
|
|
|
|
|||
; |
|
|
|
|
|
|
|
41 |
end StartPr |
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 4.1 |
|
|
|
УГОЛ |
|
СИНУС УГЛА |
||
|
|
DEC |
|
HEX |
DEC |
|
HEX |
|
1 |
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
Алгоритм программы 4.1
Программа вычисления косинуса угла в диапазоне от 0 до 360 градусов табличным способом на языке Ассемблер МПК 1810:
18
Работа №4
Выводы:________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
Выполнил студент _____________________ |
дата _____________________________ |
Принял ___________________ "____________________" оценка ________ дата __________________
(подпись) |
(Ф И О) |
19
Работа №5
ЛАБОРАТОРНАЯ РАБОТА 5
ИССЛЕДОВАНИЕ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ ДЛЯ ЧИСЕЛ, ПРЕДСТАВЛЕННЫХ В ФОРМАТЕ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ
Цель работы: Ознакомление с алгоритмами арифметических операций для чисел, представленных в формате с плавающей запятой на языке АССЕМБЛЕР МПК 1810 с использованием отладочных средств.
ВЫПОЛНЕННИЕ РАБОТЫ
Программа 5.1
;TITLE ПРОГРАММА ДЛЯ СЛОЖЕНИЯ И ВЫЧИТАНИЯ
;TITLE ЧИСЕЛ В ФОРМАТЕ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ
SSEG |
SEGMENT PARA STACK 'STACK' |
|
DB 256 DUP(0) SSEG ENDS ; |
DSEG |
SEGMENT PARA PUBLIC 'DATA' |
XDD 1 DUP (0)
YDD 1 DUP (0)
ZDD 1 DUP (0)
DSEG |
ENDS |
|
; |
|
|
CSEG |
SEGMENT PARA PUBLIC 'CODE' |
|
ASSUME CS:CSEG,DS:DSEG,SS:SSEG |
||
; |
|
|
ADDSUBF PROC |
FAR |
|
|
mov |
ax,DSEG |
|
mov |
ds,ax |
;Первый операнд Х в регистрах BX:SI,
;второй Y в регистрах DX:DI,
;результат возвращается из регистрав BX:SI в Z.
Start: lea |
si,X |
lea |
di,Y |
mov |
bx,[si+2] |
mov |
si,[si] |
mov |
dx,[di+2] |
mov |
di,[di] |
; Переход к подпрограммам сложения, вычитания
call |
ADDSBF |
; Сохранить результат |
|
lea |
di,Z |
mov |
[di],si |
mov |
[di+2],bx |
jmp |
Start ;ret |
ADDSUBF ENDP
ADDSBF PROC ;================================================
;Сложение чисел с плавающей точкой.
;Первый операнд Х в регистрах BX:SI,
;второй Y в регистрах DX:DI,
;сумма возвращается в регистрах BX:SI.
;При антипереполнении флажок CF установлен в 1
;================================================
20