
zoshyt
.pdfМИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ
НАЦИОНАЛЬНЫЙ АВИАЦИОННЫЙ УНИВЕРСИТЕТ
М И К Р О П Р О Ц Е С С О Р Ы
(тетрадь для лабораторных работ)
Студента__________________________________________________
____________________________________________________группы факультета электроники и телекоммуникаций
Киев 200__
Работа №1
ОБЩИЕ МЕТОДИЧЕСКИЕ УКАЗАНИЯ
Цель лабораторных работ ознакомление с элементами микропроцессорных устройств, получение навыков составления программ на языке Ассемблера, работе с инструментальными и отладочными средствами микропроцессорных устройств, а также углубление и конкретизация программного материала, изучаемого в лекционной части курса.
В начале цикла лабораторных работ студенты проходят инструктаж по технике безопасности, правила которой обязаны соблюдать в ходе работ, а также инструктаж по основным правилам работы на персональной ЭВМ.
Выполнение каждой лабораторной работы состоит из до аудиторной подготовки, включающей:
-изучение соответствующего теоретического материала;
-ознакомление с лабораторной работой;
-составления алгоритмов и программ, если это требуется согласно описанию работы;
-ответов на контрольные вопросы;
-подготовки отчета по лабораторной работе;
ипроведения лабораторных исследований, обработки результатов исследований, оформления отчета
изащиты работы.
Перед выполнением очередной лабораторной работы студент должен представить преподавателю полностью оформленный отчет по предыдущей работе, а также материал, необходимый для выполнения следующей работы.
Окончив работу, студент предъявляет полученные результаты преподавателю. Если работа выполнена неправильно, студент должен выполнить ее вторично.
Отчет по лабораторной работе составляется каждым студентом самостоятельно и должен содержать:
-название и цель лабораторной работы;
-основные теоретические сведения;
-алгоритмы и исходные тексты исследуемых программ;
-таблицы экспериментальных данных и графики;
-выводы по результатам работы.
Зачет по выполненной работе производится до выполнения следующей лабораторной работы. Если предыдущая работа не выполнена, студент не допускается к выполнению следующей лабораторной работы.
2
Работа №1
ЛАБОРАТОРНАЯ РАБОТА 1
ИССЛЕДОВАНИЕ НА МИКРОПРОЦЕССОРНЫХ УСТРОЙСТВАХ АЛГОРИТМОВ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ С ОДНОБАЙТОВЫМИ И МНОГОБАЙТОВЫМИ ЦЕЛЫМИ ЧИСЛАМИ (СЛОЖЕНИЕ И ВЫЧИТАНИЕ).
Цель работы: Ознакомление с принципами программирования на языке АССЕМБЛЕР МП 1810, с использованием отладочных средств исследуя алгоритмы арифметических операций сложения и вычитания однобайтных и многобайтных целых чисел.
|
|
|
|
|
|
ВЫПОЛНЕННИЕ РАБОТЫ |
|
|
||||
|
|
|
|
|
|
|
|
Программа 1.1 |
|
|
||
TITLE СЛОЖЕНИЕ ЦЕЛЫХ БЕЗЗНАКОВЫХ ЧИСЕЛ |
|
|
|
|||||||||
; Определение сегмента стека |
|
|
|
|
|
|
||||||
SSEG |
SEGMENT PARA STACK |
'STACK' |
|
|
|
|||||||
DB |
256 DUP(0) |
|
|
|
|
|
|
|
||||
SSEG |
ENDS |
|
|
|
|
|
|
|
|
|
||
; Определение сегмента данных для слагаемых и результата |
|
|
||||||||||
DSEG |
SEGMENT PARA PUBLIC |
'DATA' |
|
|
|
|||||||
SLOG1 |
|
DW 1 DUP (0) ; Слагаемое 1, длина слово |
|
|
|
|||||||
SLOG2 |
|
DW 1 DUP (0) ; Слагаемое 2, длина слово |
|
|
|
|||||||
SUM |
DD |
2 DUP(0) ; Результат, длина 3 байта |
|
|
|
|||||||
DSEG |
ENDS |
|
|
|
|
|
|
|
|
|
||
; Определение сегмента кода программы |
|
|
|
|||||||||
CSEG |
SEGMENT PARA PUBLIC |
'CODE' |
|
|
|
|||||||
ASSUME CS:CSEG,DS:DSEG,SS:SSEG |
|
|
|
|||||||||
SUMMA PROC FAR |
|
|
|
|
|
|
||||||
mov |
ax,DSEG |
; Определение адреса сегмента DATA |
|
|
||||||||
mov |
ds,ax |
; Пересылка в сегментный регистр DS |
|
|
||||||||
Start: clc |
|
|
|
; Очистка флага переноса |
|
|
|
|||||
mov |
cx,0 |
|
|
|
|
|
|
|
||||
mov |
ax,SLOG1 ; Сложение SLOG1 и SLOG2 |
|
|
|
||||||||
add |
ax,SLOG2 |
|
|
|
|
|
|
|
||||
mov |
bx,OFFSET SUM ; Получение смещения и |
|
|
|
||||||||
mov |
[bx],ax |
; сохранение результата сложения |
|
|
|
|||||||
jnc |
Lmem |
; Был перенос? Нет - переход на метку |
|
|
||||||||
inc |
cx |
|
|
; Да - создать старший байт результата |
|
|
||||||
Lmem: |
mov |
[bx+2],cx ; Сохранить старший байт результата |
|
|
||||||||
jmp |
Start |
|
|
|
|
|
|
|
||||
SUMMA ENDP |
|
|
|
|
|
|
|
|||||
CSEG |
ENDS |
|
|
|
|
|
|
|
|
|
||
END SUMMA |
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
1 слагаемое |
|
2 слагаемое |
результат |
|||||
|
|
десятичное |
|
шестнадцат. |
|
десятичное |
|
шестнадцат. |
десятичное |
шестнадцат. |
||
1 |
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
3
Работа №1
|
|
|
|
|
|
|
|
|
|
|
Таблица 1.1.1 |
|||
Команда |
|
|
|
|
содержимое регистров |
|
|
|
|
|
|
|
||
аx |
bx |
cx |
dx |
cs |
ds |
di |
si |
|
|
Флаги |
||||
|
cf |
zf |
sf |
pf |
af |
df |
||||||||
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Программа 1.2 |
TITLE ВЫЧИТАНИЕ ЦЕЛЫХ БЕЗЗНАКОВЫХ ЧИСЕЛ |
|||||
; Определение сегмента стека |
|
||||
SSEG |
SEGMENT PARA STACK |
'STACK' |
|||
DB |
256 DUP(0) |
|
|||
SSEG |
ENDS |
|
|
|
|
; Определение сегмента данных для данных и результата |
|||||
; |
|
|
|
|
|
DSEG |
SEGMENT PARA PUBLIC |
'DATA' |
|||
UMEN |
DW |
1 DUP (0) ; уменьшаемое, длина слово |
|||
VICH |
|
DW 1 DUP (0) ; вычитаемое, длина слово |
|||
RAZ |
|
DW |
1 DUP(0) ; результат, длина слово |
||
DSEG |
ENDS |
|
|
|
|
; Определение сегмента кода программы |
|||||
CSEG |
SEGMENT PARA PUBLIC |
'CODE' |
|||
ASSUME CS:CSEG,DS:DSEG,SS:SSEG |
|||||
SUBST |
|
PROC |
FAR |
|
|
mov |
ax,DSEG |
; Определение адреса сегмента DATA |
|||
mov |
ds,ax |
; Пересылка в сегментный регистр DS. |
|||
Start: clc |
|
|
; Очистка флага переноса. |
||
mov |
cx,0 |
|
|
|
|
mov |
ax,UMEN |
; Вычитание. |
|
||
sub |
ax,VICH |
|
|
||
mov |
bx,OFFSET RAZ ; Получение смещения и |
||||
mov |
[bx],ax |
; сохранение результата |
|||
jmp |
Start |
|
|
|
|
SUBST |
|
ENDP |
|
|
|
CSEG |
ENDS |
|
|
|
END SUBST
4

Работа №1
|
|
уменьшаемое |
|
|
|
вычитаемое |
|
|
|
результат |
|||||||||||||||
|
десятичное |
|
шестнадцат. |
|
десятичное |
|
шестнадцат. |
десятичное |
|
шестнадцат. |
|||||||||||||||
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 1.1.2 |
|||
Команда |
|
|
|
|
|
|
|
|
содержимое регистров |
|
|
|
|
|
|
|
|
|
|
||||||
аx |
|
bx |
|
cx |
|
dx |
|
cs |
|
ds |
|
di |
si |
|
|
|
|
Флаги |
|||||||
|
|
|
|
|
|
|
|
|
cf |
zf |
|
sf |
pf |
af |
df |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Программа 1.3
TITLE СЛОЖЕНИЕ ЦЕЛЫХ БЕЗЗНАКОВЫХ ЧИСЕЛ TITLE ПОВЫШЕННОЙ ТОЧНОСТИ
; Определение сегмента стека
SSEG |
SEGMENT PARA STACK 'STACK' |
DB 256 DUP(0) |
|
SSEG |
ENDS |
; Определение сегмента данных для слагаемых и результата
DSEG |
SEGMENT PARA PUBLIC |
'DATA' |
||
SLOG1 |
|
DD 1 DUP (0) ; Слагаемое, длина двойное слово |
||
SLOG2 |
|
DD 1 DUP (0) ; Слагаемое, длина двойное слово |
||
SUM |
DQ 1 DUP(0) ; Результат, длинна 5 байтов |
|||
DSEG |
ENDS |
|
|
|
; Определение сегмента кода программы |
||||
CSEG |
SEGMENT PARA PUBLIC |
'CODE' |
||
ASSUME CS:CSEG,DS:DSEG,SS:SSEG |
||||
SUMMA PROC FAR |
|
|||
mov |
ax,DSEG |
; Определение адреса сегмента DATA |
||
mov |
ds,ax |
; Пересылка в сегментный регистр DS |
||
Start: lea |
si,SLOG1 ; Получение смещения SLOG1 в SI |
|||
lea |
|
di,SLOG2 |
; Получение смещения SLOG2 в DI |
|
lea |
|
bx,SUM |
; Получение смещения SUM в BX |
|
clc |
|
|
; Очистка флага переноса. |
|
mov |
cx,0 |
|
|
|
mov |
ax,[si] |
; Сложение SLOG1 и SLOG2 с учетом |
||
adc |
|
ax,[di] |
; бита переноса. |
|
mov |
[bx],ax |
; Сохранение результата |
||
inc |
|
si |
; Вычисление смещения следующего |
|
inc |
|
si |
; слова слагаемых без изменения |
1 Уменьшаемое должно быть меньше вычитаемого
5
Работа №1
inc |
|
di |
|
; бита переноса предыдущего сложения |
|
|
|
|
|
|
|
|
|
|
|||||||||||||
inc |
|
di |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
mov |
ax,[si] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
adc |
|
ax,[di] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
mov |
[bx+2],ax |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
jnc |
|
Lmem |
; Был перенос? Нет - переход не метку |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
inc |
|
cx |
|
; Да - создать старший байт. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
Lmem: |
mov [bx+4],cx ; Сохранить старший байт в памяти |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
jmp |
|
Start |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
SUMMA ENDP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
CSEG |
ENDS |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
END |
|
SUMMA |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
1 слагаемое |
|
|
2 слагаемое |
|
|
|
|
результат |
|||||||||||||||
|
|
десятичное |
|
шестнадцат. |
|
десятичное |
|
шестнадцат. |
десятичное |
|
шестнадцат. |
||||||||||||||||
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 1.1.3 |
|||
Команда |
|
|
|
|
|
|
|
|
|
содержимое регистров |
|
|
|
|
|
|
|
|
|
|
|||||||
|
аx |
|
bx |
|
cx |
|
dx |
|
cs |
|
ds |
|
di |
si |
|
|
|
|
Флаги |
||||||||
|
|
|
|
|
|
|
|
|
|
|
cf |
zf |
|
sf |
pf |
af |
df |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6
Работа №1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Программа 1.4 |
|
|
|
|
|
|
|
|
|
|
|||||||
TITLE ВЫЧИТАНИЕ ЦЕЛЫХ БЕЗЗНАКОВЫХ ЧИСЕЛ |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
TITLE ПОВЫШЕННОЙ ТОЧНОСТИ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
; Определение сегмента стека |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
SSEG |
SEGMENT PARA |
STACK |
'STACK' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
DB |
|
256 DUP(0) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
SSEG |
ENDS |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
; Определение сегмента данных для данных и результата |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
DSEG |
SEGMENT PARA PUBLIC |
'DATA' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
UMEN |
DD |
1 DUP (0) ; уменьшаемое, длина двойное слово |
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
VICH |
|
DD 1 DUP (0) ; вычитаемое, длина двойное слово |
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
RAZ |
|
DD |
1 DUP(0) ; разность, длина двойное слово |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
DSEG |
ENDS |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
; Определение сегмента кода программы |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
CSEG |
SEGMENT PARA PUBLIC |
'CODE' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
ASSUME CS:CSEG,DS:DSEG,SS:SSEG |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
SUBST |
|
PROC |
FAR |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
mov |
|
ax,DSEG ; Определение адреса сегмента DATA |
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
mov |
|
ds,ax |
; Пересылка в сегментный регистр DS |
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
Start: lea |
|
si,UMEN ; Получение смещения UMEN в SI |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
lea |
|
|
di,VICH |
; Получение смещения VICH в DI |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
lea |
|
|
bx,RAZ |
|
; Получение смещения RAZ в BX |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
clc |
|
|
|
|
|
|
|
; Очистка флага переноса |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
mov |
|
cx,0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
mov |
|
ax,[si] |
; Вычитание UMEN и VICH с учетом |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
sbb |
|
ax,[di] |
; бита переноса |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
mov |
|
[bx],ax |
; Сохранение результата |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
inc |
|
si |
|
|
; Вычисление смещения следующего |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
inc |
|
si |
|
|
; слова данных без изменения |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
inc |
|
di |
|
|
; бита переноса предыдущего вычитания. |
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
inc |
|
di |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
mov |
|
ax,[si] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
sbb |
|
ax,[di] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
mov |
|
[bx+2],ax |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
jmp |
|
Start |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
SUBST |
|
ENDP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
CSEG |
ENDS |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
END SUBST |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
уменьшаемое |
|
|
|
вычитаемое |
|
|
|
результат |
|||||||||||||||||
|
|
десятичное |
|
шестнадцат. |
|
десятичное |
|
|
шестнадцат. |
десятичное |
|
шестнадцат. |
|||||||||||||||||||
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 1.1.4 |
|||
Команда |
|
|
|
|
|
|
|
|
|
|
|
|
содержимое регистров |
|
|
|
|
|
|
|
|
|
|
||||||||
|
аx |
|
bx |
|
cx |
|
|
dx |
|
cs |
|
ds |
|
di |
si |
|
|
|
|
Флаги |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
cf |
zf |
|
sf |
pf |
af |
df |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 Уменьшаемое должно быть меньше вычитаемого
7

Работа №1
Продолжение таблицы 1.1.4
Выводы:________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
______________________________________________________________________________________
8

Работа №1
Алгоритм программы 1.1 |
Алгоритм программы 1.2 |
|
Алгоритм программы 1.3 |
Алгоритм программы 1.4 |
|
|
|
Выполнил студент _____________________ |
дата _____________________________ |
Принял ___________________ "____________________" оценка ________ дата __________________
(подпись) |
(Ф И О) |
9
Работа №2
ЛАБОРАТОРНАЯ РАБОТА 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-го частичного результата |
10