- •Микропроцессоры в системах защиты информации
- •Общие методические указания
- •Лабораторная работа 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
Лабораторная работа 2
ИССЛЕДОВАНИЕ НА МИКРОПРОЦЕССОРНЫХ УСТРОЙСТВАХ АЛГОРИТМОВ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ С ОДНОБАЙТОВЫМИ И МНОГОБАЙТОВЫМИ ЦЕЛЫМИ ЧИСЛАМИ (УМНОЖЕНИЕ И ДЕЛЕНИЕ)
Цель работы: |
Ознакомление с принципами программирования на языке АССЕМБЛЕР МП 1810 с использованием отладочных средств исследуя алгоритмы арифметических операций умножения и деления однобайтных и многобайтных целых чисел. |
Выполненние работы Программа 2.4
TITLE УМНОЖЕНИЕ ЦЕЛЫХ БЕЗ ЗНАКОВЫХ ЧИСЕЛ
TITLE ПОВЫШЕННОЙ ТОЧНОСТИ
TITLE С ИСПОЛЬЗОВАНИЕМ КОМАНД УМНОЖЕНИЯ 1810
; Определение сегмента стека
SSEG SEGMENT PARA STACK 'STACK'
DB 256 DUP(0)
SSEG ENDS
;
; Определение сегмента данных
;
DSEG SEGMENT PARA PUBLIC 'DATA'
MNOG1 DD 1 DUP (0) ; Множимое, длина 4 байта
MNOG2 DD 1 DUP (0) ; Множитель, длина 4 байта
REZULT DQ 1 DUP (0) ; Результат, длина 8 байтов
DSEG ENDS
;
; Определение сегмента кода программы
;
CSEG SEGMENT PARA PUBLIC 'CODE'
ASSUME CS:CSEG,DS:DSEG,SS:SSEG
;
MULT PROC FAR
mov ax,DSEG ; Определение адреса сегмента DATA
mov ds,ax ; Пересылка в сегментный регистр DS
Start: lea si,MNOG1 ; SI указывает первое число
lea bx,MNOG2 ; BX указывает второе число
lea di,REZULT ; DI указывает результат
mov ax,[si]
mul WORD PTR[bx] ; Вычислить B*D
mov [di],ax ; Младшее слово 1-го частичного результата
mov [di+2],dx ; Старшее слово 1-го частичного результата
mov ax,[si+2]
mul WORD PTR[bx] ; Вычислить A*D
add [di+2],ax ; Сдвиг 2-го частичного результата
adc [di+4],dx ; Старшее слово 2-го частичного результата
mov ax,[si]
mul WORD PTR[bx+2] ; Вычислить B*C
add [di+2],ax ; Частичный результат умножения на
;вторую цифру множителя.
adc [di+4],dx ; Старшее слово 3-го частичного результата
mov ax,[si+2]
mul WORD PTR[bx+2] ; Вычислить A*C
add [di+4],ax ; Сдвиг 4-го частичного результата
adc [di+5],dx ; Старшее слово 4-го частичного результата
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 |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|