- •Микропроцессоры в системах защиты информации
- •Общие методические указания
- •Лабораторная работа 1
- •Выполненние работы Программа 1.1
- •Программа 1.2
- •Программа 1.3
- •Программа 1.4
- •Лабораторная работа 2
- •Выполненние работы Программа 2.4
- •Программа 2.5
- •Лабораторная работа 3
- •Выполненние работы Программа 3.1
- •Лабораторная работа 4
- •Выполненние работы Программа 4.1
- •Лабораторная работа 5
- •Выполненние работы Программа 5.1
- •Программа 5.3
- •Программа 5.4
- •Лабораторная работа 6
- •Выполненние работы Программа 6.1
Лабораторная работа 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
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
Выводы:________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ Выполнил студент _____________________ дата _____________________________
Принял ___________________ "____________________" оценка ________ дата __________________
(подпись) (Ф И О)