Лабораторная работа №3 / LAB3
.DOCСанкт-Петербургский Государственный Электротехнический Университет
Отчет по лабораторной работе №3
«Моделирование микропрограммы умножения»
Алгоритм 1
Выполнили:
Солоха В.
Группа 0331
Факультет КТИ
Преподаватель:
Анисимов А.В.
Санкт-Петербург
2002г.
Задание
Смоделировать на языке ассемблера микропрограмму умножения АЛУ.
Структурная схема
На схеме представлена структура, участвующая в выполнении операции.
Р
множитель
BX
произведение
DX
множимое
AX
АЛУ
CF
еализация
программы
Данная микропрограмма перемножает два 16-ти разрядных числа. Результат занимает 32 разряда. Младшее слово результата записывается в регистр BX, а старшее в DX.
mov ax, 01101b ;множимое
mov bx, 10110b ;множитель
xor dx, dx ;начальное обнуление результата
mov cx, 16 ;обработка 16-ти разрядов
shr bx, 1 ;сдвиг множителя вправо на 1 разряд
nxt: jnc skip ;если младший разряд был = 0, то на skip
add dx, ax ;прибавление к результату множимого
skip: rcr dx, 1 ;сдвиг результата на 1 разряд вправо
rcr bx, 1 ;сдвиг множителя вправо на 1 разряд
loop nxt ;переход к nxt; cx=cx-1
Полный текст программы на ассемблере
main segment "code" use16
assume cs:main
start: mov ax, 01101b
mov bx, 10110b
xor dx, dx
mov cx, 16
shr bx, 1
nxt: jnc skip
add dx, ax
skip: rcr dx, 1
rcr bx, 1
loop nxt
xor ax, ax
int 21h
main ends
end start