Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2009, 20:23   #1
pif
Пользователь
 
Регистрация: 26.11.2008
Сообщений: 37
По умолчанию сложение двух чисел

как сложить 2 восьмизначных двоичных числа в прямом коде используя тока логические операции?
pif вне форума Ответить с цитированием
Старый 13.02.2009, 18:16   #2
Д'якон
Форумчанин
 
Регистрация: 05.12.2007
Сообщений: 236
По умолчанию

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

Если же имеется ввиду только логические операции даже без переходов (условных и безусловных), то мне кажется это невозможно, хотя не буду утверждать
Д'якон вне форума Ответить с цитированием
Старый 13.02.2009, 19:07   #3
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

mov ax, 10
mov bx, 20
and ax, bx

или я чего-то не понимаю?
пыщь
JTG вне форума Ответить с цитированием
Старый 13.02.2009, 19:24   #4
ASSEMBLER
Пользователь
 
Регистрация: 12.11.2008
Сообщений: 27
По умолчанию

Тут по всей видимости речь идёт о выполнении побитных логических операций, так же как это делает процессор
Программы на заказ Delphi, Pascal, С++, Assembler e-mail: greatrock@mail.ru
<--Если я вам помог не забываем жать на весы

Последний раз редактировалось ASSEMBLER; 13.02.2009 в 19:48. Причина: Опечатка =)
ASSEMBLER вне форума Ответить с цитированием
Старый 13.02.2009, 19:30   #5
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

может это?
Цитата:
называется суматор с параллельным переносом
чем больше номер разряда, тем больше получается формула, но работают значительно быстрее (про больших разрядностях в несколько раз) последовательных сумматоров (или сумматоров с последовательным переносом), но большие апаратные затраты...
Выгодной с точки зрения аппаратных затрат являются последовательно-параллельные сумматоры...

формулы для последовательного инкрементора

Q=A xor C0;
W=A and C0;
A текущий разряд
С0 входной перенос (в 0 разряде = 1 если нужен инкремент)
W выходной пперенос
Q результирующий бит

в проге будет выглядеть примерно так (не проверял)

char A[32],Q[32],c0;
//
c0=1;
while (i<32 && c0)
{
Q[i] = A[i] ^^ c0;
c0 = A[i] && c0;
}
https://wasm.ru/forum/viewtopic.php?id=17649
пыщь
JTG вне форума Ответить с цитированием
Старый 13.02.2009, 20:51   #6
Д'якон
Форумчанин
 
Регистрация: 05.12.2007
Сообщений: 236
По умолчанию

Цитата:
Сообщение от JTG Посмотреть сообщение
mov ax, 10
mov bx, 20
and ax, bx

или я чего-то не понимаю?
Просто причем здесь сложение двух чисел и операция логического умножения?

сложение - 101+10=111

умножение 101and10=000

Последний раз редактировалось rpy3uH; 13.02.2009 в 21:20.
Д'якон вне форума Ответить с цитированием
Старый 13.02.2009, 23:50   #7
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Используя только логические операции, без переходов и сдвигов - никак. Логические операции меняют все биты независимо друг от друга, перенос в другой разряд таким образом сделать нельзя.
Somebody вне форума Ответить с цитированием
Старый 14.02.2009, 10:35   #8
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Я думаю, сдвиги разрешены, они, вроде как, тоже к логическим операциям относятся. А так же операция mov, без которой тоже ни как.
Вот, что получилось (длинная портянка, скорее всего, можно упростить, это решение в лоб):
Код:
    pusha
    mov AL, A
    mov AH, B

    xor DL, DL

    mov BL, AL
    and BL, 1
    mov BH, AH
    and BH, 1
    mov CL, BL
    xor CL, BH
    or DL, CL
    mov CH, BL
    and CH, BH

    ror DL, 1
    shr AX, 1
    mov BL, AL
    and BL, 1
    mov BH, AH
    and BH, 1
    mov CL, BL
    xor CL, BH
    xor CL, CH
    or DL, CL
    mov CL, BL
    and CL, CH
    and CH, BH
    or CH, CL
    and BL, BH
    or CH, BL

    ror DL, 1
    shr AX, 1
    mov BL, AL
    and BL, 1
    mov BH, AH
    and BH, 1
    mov CL, BL
    xor CL, BH
    xor CL, CH
    or DL, CL
    mov CL, BL
    and CL, CH
    and CH, BH
    or CH, CL
    and BL, BH
    or CH, BL

    ror DL, 1
    shr AX, 1
    mov BL, AL
    and BL, 1
    mov BH, AH
    and BH, 1
    mov CL, BL
    xor CL, BH
    xor CL, CH
    or DL, CL
    mov CL, BL
    and CL, CH
    and CH, BH
    or CH, CL
    and BL, BH
    or CH, BL

    ror DL, 1
    shr AX, 1
    mov BL, AL
    and BL, 1
    mov BH, AH
    and BH, 1
    mov CL, BL
    xor CL, BH
    xor CL, CH
    or DL, CL
    mov CL, BL
    and CL, CH
    and CH, BH
    or CH, CL
    and BL, BH
    or CH, BL

    ror DL, 1
    shr AX, 1
    mov BL, AL
    and BL, 1
    mov BH, AH
    and BH, 1
    mov CL, BL
    xor CL, BH
    xor CL, CH
    or DL, CL
    mov CL, BL
    and CL, CH
    and CH, BH
    or CH, CL
    and BL, BH
    or CH, BL

    ror DL, 1
    shr AX, 1
    mov BL, AL
    and BL, 1
    mov BH, AH
    and BH, 1
    mov CL, BL
    xor CL, BH
    xor CL, CH
    or DL, CL
    mov CL, BL
    and CL, CH
    and CH, BH
    or CH, CL
    and BL, BH
    or CH, BL

    ror DL, 1
    shr AX, 1
    mov BL, AL
    and BL, 1
    mov BH, AH
    and BH, 1
    mov CL, BL
    xor CL, BH
    xor CL, CH
    or DL, CL

    ror DL, 1

    mov C, DL
    popa
A, B - исходные числа, C - результат.
Arigato вне форума Ответить с цитированием
Старый 15.02.2009, 10:25   #9
pif
Пользователь
 
Регистрация: 26.11.2008
Сообщений: 37
По умолчанию

программа правильная, но можно было написать и легче патипа:
Код:
mov al,A
mov ah,B
m1:
mov cl,al
xor al,ah
and cl,ah
shl cl
mov ah,cl
cmp ah,o
jnz m1
другое дело я незнаю что делать со знаковым битом и как устранить ошибку переполнения....

Последний раз редактировалось rpy3uH; 15.02.2009 в 14:06.
pif вне форума Ответить с цитированием
Старый 15.02.2009, 10:31   #10
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

pif, я писал в расчёте, что переходы также запрещены.
Arigato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сложение чисел одного стобца в двухмерном массиве Lorden Помощь студентам 3 04.02.2009 23:08
Сложение двух матриц Аркадий Помощь студентам 5 26.04.2008 15:22
сложение огромных чисел H_T_V Паскаль, Turbo Pascal, PascalABC.NET 6 18.12.2006 08:14