Большой Воронежский Форум
» Программирование>Ассемблер....Как умножить??
КардиоХирург 16:50 11.04.2004
Товарищи программеры!!!!!
Если кто знает ассемблер, то подскажите, как написать код, что бы произмести умножение на число шесть (6) ??? [Ответ]
zic 19:10 11.04.2004
Умножение всегда можно представить как сложение.

6*7=6+6+6+6+6+6+6=42
или семь раз по шесть равно сорок два

тобишь цикл , первый множитель суммируется , второй определяет количество итераций , или наоборот . [Ответ]
Bambarbia 20:50 11.04.2004
zic

выложи код, умножающий 2.3453453453Е678 на 7.9898966Е-12
на ассемблере, разумеется [Ответ]
zic 22:49 11.04.2004
Bambarbia
для 8080 ?

КардиоХирург
Методы разнятся в заисимости от архитектуры , и соотв варианта асма .
Самый простой и общий который прокатит везде приведен выше.
[Ответ]
Bambarbia 23:01 11.04.2004
zic

нет, для AMD64 [Ответ]
Vladikmuhin 02:42 12.04.2004
Народ!! а у мя вот асм для 8086!! на машине атлон он ругаеца, что нету у него стека, хотя я делаю только вот что:

CODE SEGMENT ; (1) определение программного сегмента
ASSUME DS:CODE ; (2)
Start: ; (4) точка входа в программу
MOV AX, a ; (3) запись в AX значения переменной a
MOV BX, b ; (4) запись в BX значения переменной b
IMUL BX ; (5) умножение AX на BX
ADD AX, c ; (6) добавление к переменной c значения из AX MOV d, AX ; (7) запись значения AX в переменную d
MOV AX, 4C00h ; (8) запись в AH номера функции DOS
INT 21h ; (9) вызов функции DOS завершения программы
a DW 5 ; (10) определение переменной a
b DW -7 ; (11) определение переменной b
c DW 120 ; (12) определение переменной c
d DW ? ; (13) определение переменной d
CODE ENDS ; (14) конец программного сегмента
END Start ; (15) определение точки входа в программу [Ответ]
zic 11:54 12.04.2004
Bambarbia
Хм я не извращенец. [Ответ]
Rabbit 18:07 13.04.2004

Сообщение от :
Народ!! а у мя вот асм для 8086!! на машине атлон он ругаеца, что нету у него стека

У тебя не определён сегмент стека. Либо добавь в начало команду
Код:
STACK 100h
(цифру можно изменить), либо сделай нормальный стековый сегмент. [Ответ]
LSL 00:36 14.04.2004
Код:
mn_1    db      <сомножитель>
mn_2    db      6
...
        mov     al,mn_1
        mul     mn_2
Сомножитель помещается в регистр AL если он не больше восьми бит и коммандой MUL домножается на шестёрку. Можно так-же использовать IMUL она функциональнее... [Ответ]
Gendalf 07:52 14.04.2004
zic

На маленьких числах это работать может быть будет быстро,
но когда числа очень большие, то ты умрешь пока дождешься результата. [Ответ]
zic 08:10 14.04.2004
Gendalf
Прибавь сдвиг во всех ипостасях, и получишь набор для умножения деления на микроконтроллерах которые данные операции не поддерживают напрямую.

Есть другие варианты ? [Ответ]
Gendalf 07:40 20.04.2004
zic
Я просто занимаюсь криптографией, и сталкивался с проблемой операции над очень большими числами. [Ответ]
zic 09:51 20.04.2004
Gendalf
Там где занимаются большими цифрами и ассемблер как правило используют отличный от 8080. [Ответ]
MadFish 16:59 21.04.2004
Bambarbia
Просил код? их есть у меня
-----------------------------------
x dd 2.3453453453Е678
y dd 7.9898966Е-12
fld x
fld y
fmul
-----------------------------------
а если без сопроцессора, то ручками моделировать умножение столбиком(просто как 2 байта переслать)
[Ответ]
Вверх