1 / 1 / 1
Регистрация: 27.01.2012
Сообщений: 29
1

Разработать вычислительное устройство для выполнения операции умножения двоичных чисел

19.06.2012, 21:54. Показов 3529. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
писать ничег не прошу, ибо есть похожая тема на форуме, код как нибудь подправлю, прошу подробнее вдолбить в мой мозг , то что я не понимаю)


1. Числа с фиксированной запятой со знаком, представленные в прямом коде.
2. Количество разрядов: 4
3. Алгоритм умножения: на два разряда множителя одновременно, начиная со старших разрядов множителя со сдвигом частной суммы влево.


1 . это понятно
2. количество разрядов - это 0011??то есть тетрада?
3. как понять на два разряда множителя?
начиная со старших это с 1 к 0 со сдвигом влево?

мб кто подскажет , буду рад)


вот похожий код тут нашел, подходит ли он , если сделать умножение , а не сложение, сдвиг на 3 бита влево.


Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
.model small
.stack 100h
.data
msgA    db 'A = $'
msgB    db 'B = $'
crlf    db 0dh,0ah,'$'
.code
msg macro m
    mov ah,9
    lea dx,m
    int 21h
    endm
start:
    mov ax,@data
    mov ds,ax
 
    msg msgA    ;Ввод чисел
    call hexin  
    msg crlf
    mov si,bx
    msg msgB
    call hexin
    msg crlf
    
    shr si,1    ;Вычисление C.
    mul bx,si
 
    mov cl,3    ;С * 8
    shl bx,cl
.386
    bsr cx,bx   
    inc cx
    push cx
    neg cx
    add cx,16
    shl bx,cl
    pop cx
    mov ah,2
output:
    xor dx,dx
    shl bx,1
    adc dl,0
    or dl,30h
    int 21h
    loop output
 
    xor ax,ax
    int 16h     
 
    mov ax,4c00h
    int 21h
 
hexin proc  ;Подпрограмма ввода 16-ричного числа(стырена из книжки).
    mov bx,0
inpt:
    mov ah,8    ;Ввод символа.
    int 21h
    cmp al,13   ;<Enter>?
    je done
    cmp al,'0'
    jb inpt
    cmp al,'9'
    jbe ok      
    sub al,20h
    cmp al,'F'
    ja inpt
    cmp al,'A'
    jb inpt
ok: ;Введена 16-ричная цифра.
    mov ah,2
    mov dl,al
    int 21h
    cmp al,'9'
    ja letter
    sub al,'0'
    and ax,0fh
    jmp addd
letter:
    sub al,55
    and ax,0fh
addd:
    mov cl,4
    shl bx,cl
    or bx,ax
    jmp inpt
done:
    ret
hexin endp
end start
0
19.06.2012, 21:54
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.06.2012, 21:54
Ответы с готовыми решениями:

Умножение беззнаковых двоичных чисел, не используя команду умножения
Помогите написать программу! Нужно реализовать алгоритм умножения беззнаковых двоичных чисел не используя команду умножения. s1*s2=s3 ...

Написать программу умножения двух двоичных однобайтных чисел в дополнительном коде
Написать программу умножения двух двоичных однобайтных чисел в дополнительном коде. Буду очень признателен, если кто нибудь с...

Разработать класс "Матрица" (перегрузить операции сложения, умножения, умножения на число)
Разработать класс матрица. Определить в нем конструктор перегрузить арифметические операции сложения умножения и умножения на число.

1
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16347 / 7664 / 1077
Регистрация: 11.11.2010
Сообщений: 13,720
20.06.2012, 11:55 2
Цитата Сообщение от xcomx Посмотреть сообщение
3. Алгоритм умножения: на два разряда множителя одновременно, начиная со старших разрядов множителя со сдвигом частной суммы влево.
xcomx, для того чтобы понять ЧТО от тебя требует преподаватель нужно поискать в Google, Yandex'e "Алгоритм Бутса (Booth)" смысл в двух словах следующий:
Анализируешь два последних бита множимого Х и каждый раз сдвигаешь Х на 1 разряд
X(i) X(i-1) действие
0 0 делаем сдвиг Х на 1 разряд влево
0 1 складываем Х с частичным произведением и делаем сдвиг Х на 1 разряд влево
1 0 вычитаем Х из частичного произведения и делаем сдвиг Х на 1 разряд влево
1 1 делаем сдвиг Х на 1 разряд влево
При использовании алгоритма Бутса операции сложения и вычитания требуются только когда во множимом не совпадают значения в соседних разрядах, то есть, имеется переход от 0 к 1 или от 1 к 0. Процесс продолжается, пока не будут выполнены n сравнений.
Алгоритм Бутса применим также к двоичным числам X и Y в дополнительном коде: для Y это справедливо потому, что логика сложения и вычитания чисел без знака и чисел в дополнительном коде одинакова; для X утверждение справедливо потому, что в случае, если X заканчивается рядом единиц, последней операцией будет вычитание числа https://www.cyberforum.ru/cgi-bin/latex.cgi?2^{n-1}, которое компенсирует операцию взятия двоичного дополнения.
Далее пример, где перемножаются два 8-разрядных числа Х и Y. (у тебя 4-разрядные, но переделывай под себя САМ)
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
.data
X db 56
Y db 99
result dw ?
.code
   xor ax,ax; место под результат
   mov dh,0
   mov dl,Y; занести множитель в регистр DX
   mov cx,8; установить счетчик числа разрядов
   clc; очистить флаг переноса X(-1)=0
a0: jnc a1; проверить разряд X(i-1)
   ror X,1; X(i-1)=1 занести разряд X(i) в CF
   jnc a2; проверить разряд X(i)
   sub ax,dx;   X(i)=0 и X(i-1)=1 вычесть множимое
   jmp a2; продолжить
a1: ror X,1;       X(i-1)=0 занести разряд X(i) в CF
   jnc a2; проверить разряд X(i)
   add ax,dx;    X(i)=1 и X(i-1)=0 прибавить множимое
a2: shl dx,1;      новый X(i-1) в CF 
   loop a0;        пока не обработаем все 8 разрядов
   mov result,ax; AX=56*99=5544
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.06.2012, 11:55
Помогаю со студенческими работами здесь

Устройство сложения 4-х разрядных двоичных чисел
Здравствуйте, проблема следующая Необходимо разработать устройство, позволяющее производить сложение четырехразрядных двоичных чисел....

Схема умножения двоичных чисел
помогите плиз кто чем может. вопрос в билетах: схема для умножения двоичных чисел.

Класс для выполнения операций сложения, вычитания и умножения комплексных чисел
Условие: Составить описание класса для представления комплексных чисел. Обеспечить выполнение операций сложения, вычитания и умножения...

Для заданных двух чисел произвести операции деления, сложения, умножения, вычитание
Для заданных двух чисел произвести операции деления, сложения, умножения, вычитание

Нужен алгоритм сложения и умножения двоичных чисел
Необходимо написать программу с описанием простейшего класса со следующими элементами: полями, конструкторами, свойствами. Описать класс...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Отличия между venv, pyenv, pyvenv, virtualenv, pipenv, conda, virtualenvwrapp­­er, poetry и другими в Python
hw_wired 13.02.2025
В Python существует множество средств для управления зависимостями и виртуальными окружениями, что порой вызывает замешательство даже у опытных разработчиков. Каждый инструмент создавался для решения. . .
Навигация с помощью React Router
hw_wired 13.02.2025
React Router - это наиболее распространенное средство для создания навигации в React-приложениях, без которого сложно представить современную веб-разработку. Когда мы разрабатываем сложное. . .
Ошибка "error:0308010C­­:dig­ital envelope routines::unsup­­ported"
hw_wired 13.02.2025
Если вы сталкиваетесь с ошибкой "error:0308010C:digital envelope routines::unsupported" при разработке Node. js приложений, то наверняка уже успели поломать голову над её решением. Эта коварная ошибка. . .
Подключение к контейнеру Docker и работа с его содержимым
hw_wired 13.02.2025
В мире современной разработки контейнеры Docker изменили подход к созданию, развертыванию и масштабированию приложений. Эта технология позволяет упаковать приложение со всеми его зависимостями в. . .
Отличия интерфейсов и типов в TypeScript
hw_wired 13.02.2025
TypeScript - мощное средство для создания качественного и поддерживаемого кода, который расширяет возможности JavaScript, добавляя систему статической типизации. В отличие от динамической типизации. . .
Async/await в циклах JavaScript
hw_wired 13.02.2025
Современная веб-разработка немыслима без асинхронного программирования. Когда приложение выполняет длительные операции - загрузку данных с сервера, чтение файлов или обработку медиа-контента, важно. . .
Git не работает на MacOS после апдейта
hw_wired 13.02.2025
После очередного обновления MacOS многие разработчики сталкиваются с неприятным сюрпризом - Git перестает работать и выдает ошибку "xcrun: error: invalid active developer path". Эта проблема особенно. . .
Git отказывается объединять несвязанные истории
hw_wired 13.02.2025
Git работает безупречно, пока мы не сталкиваемся с особыми ситуациями вроде объединения веток с разными корнями истории. В таких случаях система контроля версий может преподнести неприятный сюрприз в. . .
Проверка email с помощью JavaScript
hw_wired 13.02.2025
Email-адреса имеют довольно запутанную спецификацию, которая допускает множество неочевидных вариантов написания. Например, знали ли вы, что адрес вида "name+tag@domain. com" или даже. . .
Замена всех вхождений строки с помощью JavaScript
hw_wired 13.02.2025
JavaScript предлагает несколько способов для выполнения операций замены в строках, каждый из которых имеет свои особенности и область применения. От простейшей замены первого найденного вхождения до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru