
- •Вариант №16 Лабораторная работа 1
- •Контрольные вопросы:
- •1. Какие бывают команды перехода?
- •3. С помощью каких регистров признаков осуществляется каждая из них?
- •4. Каков формат команд перехода, и к какому способу адресации они относятся?
- •5. По каким условиям записывается 1 в каждый из разрядов регистра состояния мп?
- •Лабораторная работа 2
- •Контрольные вопросы:
- •Лабораторная работа 3
- •2. Программа исследования процесса выполнения команд вызова и возврата из подпрограмм, а также команд работы со стеком.
- •Контрольные вопросы:
- •Укажите порядок выполнения команды ret.
- •Сравните процесс выполнения команд call и ret.
- •В какой последовательности сохраняется и извлекается содержимое регистров мп в подпрограмме?
- •Как будет выполняться программа, если вместо команды popf в ней будет записана команда nop?
- •Лабораторная работа 4
- •Контрольные вопросы:
- •На чем основан алгоритм программы деления чисел?
- •Чем отличается программы 1 и 2?
- •Каким образом организуется образование цифры частного в программах 1 и 2?
- •Объясните организацию неявного счетчика в программе 2?
- •Лабораторная работа 5
- •Приведите примеры существующих алгоритмов умножения.
- •На чем основан алгоритм работы программы умножения?
- •Что такое «сдвиг влево», «сдвиг вправо»?
Объясните организацию неявного счетчика в программе 2?
Ответ: Программа 2 выполняется неявно, то есть как бы в уме. Если в явном счетчике происходит наглядное поэтапное рассмотрение процесса деления, то в неявном счетчике, хотя и происходит поэтапный процесс, выделяются только текущие значения остатка и делителя.
Лабораторная работа 5
Программная реализация умножения
целых двоичных чисел
ЦЕЛЬ РАБОТЫ: освоение способов программной реализации умножения целых двоичных чисел.
Варианты заданий для лабораторной работы №5.
№ вар. |
Множимое |
Множитель |
||
16 |
52527 |
46811 |
;произведение - регистровая пара dx:ax
;множитель (y) - bx
;ax также используется как буферный регистр для проверки бита,
а его содержимое сохраняется в стеке
;множимое (x) - непосредственно суммируется к старшему слову произведения
;cx - указатель разряда
cdseg segment 'code'
assume cs:cdseg
x equ 52527 ;множимое
y equ 46811 ;множитель
org 100h
start:
mov bx,y
mov cx,1 ;загрузка указателя разряда
mov dx,0 ;обнуление dx
mov ax,0 ;обнуление ax
push ax
m0:
mov ax,bx
and ax,cx ;проверка очередного бита
jz m1
add dx,x
m1:
sar dx,1 ; сдвиг старшего слова результата
pop ax
rcr ax,1 ; сдвиг младшего слова результата
push ax
sal cx,1 ; сдвиг указатела разряда
jnc m0 ; если произошел перенос, то конец цикла
int 20h
cdseg ends
end start
Контрольные вопросы:
Приведите примеры существующих алгоритмов умножения.
Ответ: Существует несколько алгоритмов умножения чисел. При неявном алгоритме умножение можно заменить многократным сложением, например 14*3=14+14+14. Существенный недостаток этого способа ─ значительная длительность процесса вычисления. При втором алгоритме умножение (явный алгоритм) осуществляется в столбец. Этот алгоритм применим для умножения двоичных чисел.
На чем основан алгоритм работы программы умножения?
Ответ: Алгоритм работы программы умножения основан на многократном сдвиге вправо и сложении.
Что такое «сдвиг влево», «сдвиг вправо»?
Ответ: Сдвиг влево (вправо) означает, что содержимое каждого разряда РАк передвигается в соседний старший (младший) разряд.