Исследование процессов вводавывода информации и системы арифметических команд x86 микропроцессоров семейства Intel. Учебное пособие
.pdfdn1: |
mov ah,2 |
; функцияDOSа– вывод символа на |
экран |
|
|
|
mov dl,al |
|
|
int 21h |
; выполнить функциюDOS |
|
pop dx |
; восстановление используемых |
регистров |
|
|
|
pop ax |
|
|
ret |
; возврат из подпрограммы |
DisplayNibl ENDP |
|
|
Данная подпрограмма выводит на экран один байт. Вход: al – содержит выводимый байт.
Выход: нет, все регистрысохраняют свои первоначальные значения.
DisplayByte PROC NEAR; ближняя процедура запоминания
|
; изменяемыхрегистров |
push ax |
|
push cx |
|
push ax |
|
mov cl,4 |
; подготовкадля вывода на экранстаршего |
нибла
ror ax,cl
call DisplayNibl; вывод нибла на экран
pop ax |
; восстановление младшего нибла |
call DisplayNibl; вывод нибла на экран |
|
pop cx |
; восстановление используемыхрегистров |
pop ax |
|
ret |
; возврат из подпрограммы |
DisplayByte ENDP
Данная подпрограмма выводит на экран одно слово. Вход: aх – содержит выводимое слово.
Выход: нет, все регистрысохраняют свои первоначальные значения.
61
DisplayWord PROC NEAR; ближняя процедура запоминания
|
; изменяемыхрегистров |
push ax |
|
push ax |
|
xchg ah,al |
; подготовка ивывод старшегобайта |
call DisplayByte |
|
pop ax |
; подготовкаи вывод младшегобайта |
call DisplayByte |
|
pop ax |
|
ret |
; возврат из подпрограммы |
DisplayWord ENDP |
|
Данная подпрограмма выводит на экран двойное слово. Вход: ах – содержит младшее выводимое слово,
dx – содержит старшее выводимое слово.
Выход: нет, всерегистрысохраняют свои первоначальныезначения
DisplayDWord PROC NEAR; ближняя процедура запоминания
|
; изменяемыхрегистров |
push ax |
|
push dx |
|
xchg ax,dx |
; подготовка ивывод старшего слова |
call DisplayWord |
; подготовкаи вывод младшего слова |
mov ax,dx |
|
call DisplayWord |
|
pop dx |
|
pop ax |
|
ret |
; возврат из подпрограммы |
DisplayDWord ENDP
Данная подпрограмма выполняет возврат коретки.
Вход: нет.
62
Выход: нет, всерегистрысохраняют свои первоначальныезначения.
DisplayEndString PROC NEAR; ближняя процедура
запоминания |
|
|
; изменяемыхрегистров |
push ax |
|
push dx |
|
mov ah,2 |
|
mov dl,13 |
; возвраткаретки |
int 21h |
|
mov dl,10 |
; перевод строки |
int 21h |
|
pop dx |
|
pop ax |
|
ret |
|
DisplayEndString ENDP |
|
Контрольные вопросы
1. Какие основные арифметические действия выполняет микропроцессор
Intel80×86?
2.Какая арифметика называется арифметикой одинарной точности?
3.С помощью какой команды можно сравнить два числа?
4.Какие команды используются при сложении однобайтовых чисел?
Лабораторная работа № 8 ИССЛЕДОВАНИЕ ПРОЦЕССА СУММИРОВАНИЯ НА ПЭВМ ДВУХБАЙТОВЫХ ЧИСЕЛ С ИСПОЛЬЗОВАНИЕМ КОМАНД
add al,[si] и adc al,[si+j] и команды add ax,[si]
Цель работы – изучить алгоритм программного сложения двухбайтовых чисел с использованием команд add al,[si], adc al,[si+j] и команды add ax,[si] и выводом результата сложения на экран монитора в шестнадцатеричной системе счисления. При этом
63
отметить результат переполнения, если оно возникнет при сложении этих чисел.
Порядок выполнения лабораторной работы
1. Подготовка к работе Изучить теоретический материал, изложенный в данном учебном
пособии в разделе «Арифметические команды». 2. Последовательность выполнения работы
Последовательность выполнения работы изложена выше (см. Основные правила при разработке программ на языке ASSEMBLER).
Задание
В данной работе необходимо составить программу, которая выполняет следующие действия. В программе в области, определяемой оператором .DATA, организовать массив из двух слов (двухбайтовых чисел) без знака. Затем программно сложить эти числа с использованием команд add al,[si] и adc al,[si+j]. Результат сложения вывести на экран монитора, снабдив его соответствующим сообщением. При сложении указанных чисел возможно переполнение результата. Предусмотреть в программе выдачу сообщения при переполнении.
Повторить то же самое с использование команды add ax,[si]
Контрольные вопросы
1.Какие команды используются при сложении двухбайтовых чисел?
2.Какая арифметика называется арифметикой двойной точности?
3.Какой флаг микропроцессора Intel80×86 фиксирует единицу переноса?
4.Как определяется знак двоичного числа?
64
Лабораторная работа № 9 ИССЛЕДОВАНИЕ ПРОЦЕССА ВЫЧИТАНИЯ НА ПЭВМ
ОДНОБАЙТОВЫХ ЧИСЕЛ
Цель работы – изучить алгоритм программного вычитания однобайтовых чисел с использованием команд sub dst,src и sbb dst,src и выводом результата вычитания на экран монитора, как в прямом, так и в дополнительном коде в шестнадцатеричной системе счисления.
Порядок выполнения лабораторной работы
1. Подготовка к работе Изучить теоретический материал, изложенный в данном учебном
пособии в разделе «Арифметические команды». 2. Последовательность выполнения работы
Последовательность выполнения работы изложена выше (см. Основные правила при разработке программ на языке ASSEMBLER).
Задание
В данной работе необходимо составить программу, которая выполняет следующие действия. В программе в области, определяемой оператором .DATA, организовать массив из двух однобайтовых чисел без знака. Затем программно из первого числа вычесть второе число и результат вычитания вывести на экран монитора, снабдив его соответствующим сообщением. Отрицательный результат выводить на экран монитора, как в прямом, так и в дополнительном коде.
Повторить то же самое, но выполнить вычитание первого числа из второго числа.
Контрольные вопросы
1.Какие команды используются при вычитании однобайтовых чисел?
2.Как кодируются отрицательные двоичные числа?
3.Какие коды используются для представления двоичных чисел?
4.Где могут располагаться операнды при выполнении арифметической команды sub?
65
Лабораторная работа № 10 ИССЛЕДОВАНИЕ ПРОЦЕССА ВЫЧИТАНИЯ НА ПЭВМ
ДВУХБАЙТОВЫХ ЧИСЕЛ
Цель работы – изучить алгоритм программного вычитания двухбайтовых чисел с использованием команд sub dst,src и sbb dst,src и выводом результата вычитания на экран монитора, как в прямом, так и в дополнительном коде в шестнадцатеричной системе счисления.
Порядок выполнения лабораторной работы
1. Подготовка к работе Изучить теоретический материал, изложенный в данном учебном
пособии в разделе «Арифметические команды». 2. Последовательность выполнения работы
Последовательность выполнения работы изложена выше (см. Основные правила при разработке программ на языке ASSEMBLER).
Задание
В данной работе необходимо составить программу, которая выполняет следующие действия. В программе в области, определяемой оператором .DATA, организовать массив из двух слов. Затем программно из первого числа вычесть второе число и результат вычитания вывести на экран монитора, снабдив его соответствующим сообщением. Отрицательный результат выводить на экран монитора, как в прямом, так и в дополнительном коде.
Повторить то же самое, но выполнить вычитание первого числа из второго числа.
Контрольные вопросы
1.Какие команды используются при вычитании двухбайтовых чисел?
2.Где могут располагаться операнды при выполнении арифметической команды sbb?
3.Какой флаг микропроцессора Intel80×86 фиксирует единицу заёма?
4.Какой флаг микропроцессора Intel80×86 фиксирует нулевой результат в аккумуляторе?
66
Лабораторная работа № 11 ИССЛЕДОВАНИЕ ПРОЦЕССА УМНОЖЕНИЯ НА ПЭВМ
ОДНОБАЙТОВЫХ ЧИСЕЛ
Цель работы – изучить алгоритм программного умножения однобайтовых чисел, как без знака, так и со знаком с использованием команд mul src и imul src и выводом результата умножения на экран монитора, как в прямом, так и в дополнительном коде в шестнадцатеричной системе счисления.
Порядок выполнения лабораторной работы
1. Подготовка к работе Изучить теоретический материал, изложенный в данном учебном
пособии в разделе «Арифметические команды». 2. Последовательность выполнения работы
Последовательность выполнения работы изложена выше (см. Основные правила при разработке программ на языке ASSEMBLER).
Задание
В данной работе необходимо составить программу, которая выполняет следующие действия. В программе в области, определяемой оператором .DATA, организовать массив из двух однобайтовых чисел с одинаковыми знаками. Программно выполнить их умножение и результат вывести на экран монитора.
Повторить то же самое для чисел имеющих разные знаки. Результат умножения выводить как в прямом, так и в дополнительном коде.
Контрольные вопросы
1.Какие команды используются при умножении двоичных чисел?
2.Где должны располагаться операнды при выполнении операции умножения однобайтовых чисел?
3.В каких регистрах микропроцессора Intel80×86 формируется результат умножения однобайтовых чисел?
4.Может ли возникнуть переполнения при умножении однобайтовых
чисел?
5.Какое максимальное значение может принять результат умножения однобайтовых чисел?
67
Лабораторная работа № 12 ИССЛЕДОВАНИЕ ПРОЦЕССА УМНОЖЕНИЯ НА ПЭВМ
ДВУХБАЙТОВЫХ ЧИСЕЛ
Цель работы – изучить алгоритм программного умножения двухбайтовых чисел как без знака, так и со знаком с использованием команд mul src и imul src и выводом результата умножения на экран монитора как в прямом, так и в дополнительном коде в шестнадцатеричной системе счисления.
Порядок выполнения лабораторной работы
1. Подготовка к работе Изучить теоретический материал, изложенный в данном учебном
пособии в разделе «Арифметические команды». 2. Последовательность выполнения работы
Последовательность выполнения работы изложена выше (см. Основные правила при разработке программ на языке ASSEMBLER).
Задание
В данной работе необходимо составить программу, которая выполняет следующие действия. В программе в области, определяемой оператором .DATA, организовать массив из двух слов с одинаковыми знаками. Программно выполнить их умножение и результат вывести на экран монитора.
Повторить то же самое для чисел имеющих разные знаки. Результат умножения выводить как в прямом, так и в дополнительном коде.
Контрольные вопросы
1.Где должны располагаться операнды при выполнении операции умножения двухбайтовых чисел?
2.В каких регистрах микропроцессора Intel80×86 формируется результат умножения двухбайтовых чисел?
3.Может ли возникнуть переполнение при умножении двухбайтовых
чисел?
4.Какое максимальное значение может принять результат умножения двухбайтовых чисел?
68
Лабораторная работа № 13 ИССЛЕДОВАНИЕ ПРОЦЕССА ДЕЛЕНИЯ НА ПЭВМ. ДЕЛИМОЕ ЗАНИМАЕТ ОДНО СЛОВО, ДЕЛИТЕЛЬ
ЗАНИМАЕТ БАЙТ
Цель работы – изучить алгоритм программного деления двух чисел, имеющих как одинаковые знаки, так и разные знаки с использованием команд деления idiv src и div src и выводом результата умножения на экран монитора как в прямом, так и в дополнительном коде в шестнадцатеричной системе счисления. При этом делимое должно занимать одно слово, а делитель – байт.
Порядок выполнения лабораторной работы
1. Подготовка к работе Изучить теоретический материал, изложенный в данном учебном
пособии в разделе «Арифметические команды». 2. Последовательность выполнения работы
Последовательность выполнения работы изложена выше (см. Основные правила при разработке программ на языке ASSEMBLER).
Задание
В данной работе необходимо составить программу, которая выполняет следующие действия. В программе в области, определяемой оператором .DATA, организовать массив из двух чисел с одинаковыми знаками. Первое число должно занимать слово, а второе – байт. Программно выполнить деление первого числа на второе и результат вывести на экран монитора.
Повторить то же самое для чисел имеющих разные знаки. Результат деления выводить как в прямом, так и в дополнительном коде.
Контрольные вопросы
1.Какие команды используются при делении двоичных чисел?
2.Где располагаются делимое, делитель, частное и остаток при делении двухбайтового числа?
69
Лабораторная работа № 14 ИССЛЕДОВАНИЕ ПРОЦЕССА ДЕЛЕНИЯ НА ПЭВМ.
ДЕЛИМОЕ ЗАНИМАЕТ ДВА СЛОВА, ДЕЛИТЕЛЬ ЗАНИМАЕТ СЛОВО
Цель работы – изучить алгоритм программного деления двух чисел, имеющих как одинаковые знаки, так и разные знаки с использованием команд деления idiv src и div src и выводом результата умножения на экран монитора, как в прямом, так и в дополнительном коде в шестнадцатеричной системе счисления. При этом делимое должно занимать двойное слово, а делитель – слово.
Порядок выполнения лабораторной работы
1. Подготовка к работе Изучить теоретический материал, изложенный в данном учебном
пособии в разделе «Арифметические команды». 2. Последовательность выполнения работы
Последовательность выполнения работы изложена выше (см. Основные правила при разработке программ на языке ASSEMBLER).
В данной работе необходимо составить программу, которая выполняет следующие действия. В программе в области, определяемой оператором .DATA, организовать массив из двух чисел с одинаковыми знаками. Первое число должно занимать два слова, а второе – слово. Программно выполнить деление первого числа на второе и результат вывести на экран монитора.
Повторить то же самое для чисел имеющих разные знаки. Результат деления выводить как в прямом, так и в дополнительном коде.
Контрольные вопросы
1.В каких регистрах микропроцессора Intel80×86 должно располагаться делимое, имеющее формат два слова и делитель?
2.В каких регистрах микропроцессора Intel80×86 формируется результат деления, если делимое имеет формат два слова?
3.Как формируется знак частного и остатка при делении двоичных чисел?
4.В каком коде представляются операнды и результат при делении двоичных чисел?
70
