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

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

19.06.2012, 21:54. Показов 3540. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.06.2012, 21:54
Ответы с готовыми решениями:

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

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

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

1
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16355 / 7671 / 1078
Регистрация: 11.11.2010
Сообщений: 13,730
20.06.2012, 11:55
Цитата Сообщение от 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
Взаимодействие Python с REST API
py-thonny 27.03.2025
REST API - это архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Python располагает функциональным набором инструментов для работы с REST API и основная библиотека для. . .
sshd restrictions, ssh access limitations
jigi33 26.03.2025
sshd restrictions | ssh access limitations рестрикции доступа на сервер sshd статья: https:/ / www. golinuxcloud. com/ restrict-allow-ssh-certain-users-groups-rhel
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru