Старый 11.04.2004, 16:50   #1   
TrOp
 
Аватар для КардиоХирург
 
Сообщений: 780
Регистрация: 28.06.2003
Возраст: 45

КардиоХирург вне форума Не в сети
Question Ассемблер....Как умножить??

Товарищи программеры!!!!!
Если кто знает ассемблер, то подскажите, как написать код, что бы произмести умножение на число шесть (6) ???
  Ответить с цитированием
Старый 11.04.2004, 19:10   #2   
Форумец
 
Сообщений: 4,909
Регистрация: 08.04.2003
Возраст: 42

zic вне форума Не в сети
Умножение всегда можно представить как сложение.

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

тобишь цикл , первый множитель суммируется , второй определяет количество итераций , или наоборот .
  Ответить с цитированием
Старый 11.04.2004, 20:50   #3   
Memberator
 
Аватар для Bambarbia
 
Сообщений: 1,067
Регистрация: 18.04.2002
Записей в дневнике: 1

Bambarbia вне форума Не в сети
zic

выложи код, умножающий 2.3453453453Е678 на 7.9898966Е-12
на ассемблере, разумеется
  Ответить с цитированием
Старый 11.04.2004, 22:49   #4   
Форумец
 
Сообщений: 4,909
Регистрация: 08.04.2003
Возраст: 42

zic вне форума Не в сети
Bambarbia
для 8080 ?

КардиоХирург
Методы разнятся в заисимости от архитектуры , и соотв варианта асма .
Самый простой и общий который прокатит везде приведен выше.
  Ответить с цитированием
Старый 11.04.2004, 23:01   #5   
Memberator
 
Аватар для Bambarbia
 
Сообщений: 1,067
Регистрация: 18.04.2002
Записей в дневнике: 1

Bambarbia вне форума Не в сети
zic

нет, для AMD64
  Ответить с цитированием
Старый 12.04.2004, 02:42   #6   
Форумец
 
Аватар для Vladikmuhin
 
Сообщений: 1,117
Регистрация: 21.10.2003
Возраст: 41

Vladikmuhin вне форума Не в сети
Народ!! а у мя вот асм для 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) определение точки входа в программу
  Ответить с цитированием
Старый 12.04.2004, 11:54   #7   
Форумец
 
Сообщений: 4,909
Регистрация: 08.04.2003
Возраст: 42

zic вне форума Не в сети
Bambarbia
Хм я не извращенец.
  Ответить с цитированием
Старый 13.04.2004, 18:07   #8   
Хищник
 
Аватар для Rabbit
 
Сообщений: 217
Регистрация: 24.01.2004
Возраст: 45

Rabbit вне форума Не в сети
Цитата:
Народ!! а у мя вот асм для 8086!! на машине атлон он ругаеца, что нету у него стека
У тебя не определён сегмент стека. Либо добавь в начало команду
Код:
STACK 100h
(цифру можно изменить), либо сделай нормальный стековый сегмент.
  Ответить с цитированием
Старый 14.04.2004, 00:36   #9   
Форумец
 
Сообщений: 1,696
Регистрация: 24.11.2002
Возраст: 41

LSL вне форума Не в сети
Код:
mn_1    db      <сомножитель>
mn_2    db      6
...
        mov     al,mn_1
        mul     mn_2
Сомножитель помещается в регистр AL если он не больше восьми бит и коммандой MUL домножается на шестёрку. Можно так-же использовать IMUL она функциональнее...
  Ответить с цитированием
Старый 14.04.2004, 07:52   #10   
Форумец
 
Сообщений: 642
Регистрация: 05.12.2002

Gendalf вне форума Не в сети
zic

На маленьких числах это работать может быть будет быстро,
но когда числа очень большие, то ты умрешь пока дождешься результата.
  Ответить с цитированием
Старый 14.04.2004, 08:10   #11   
Форумец
 
Сообщений: 4,909
Регистрация: 08.04.2003
Возраст: 42

zic вне форума Не в сети
Gendalf
Прибавь сдвиг во всех ипостасях, и получишь набор для умножения деления на микроконтроллерах которые данные операции не поддерживают напрямую.

Есть другие варианты ?
  Ответить с цитированием
Старый 20.04.2004, 07:40   #12   
Форумец
 
Сообщений: 642
Регистрация: 05.12.2002

Gendalf вне форума Не в сети
zic
Я просто занимаюсь криптографией, и сталкивался с проблемой операции над очень большими числами.
  Ответить с цитированием
Старый 20.04.2004, 09:51   #13   
Форумец
 
Сообщений: 4,909
Регистрация: 08.04.2003
Возраст: 42

zic вне форума Не в сети
Gendalf
Там где занимаются большими цифрами и ассемблер как правило используют отличный от 8080.
  Ответить с цитированием
Старый 21.04.2004, 16:59   #14   
Форумец
 
Аватар для MadFish
 
Сообщений: 340
Регистрация: 25.07.2002

MadFish вне форума Не в сети
Bambarbia
Просил код? их есть у меня
-----------------------------------
x dd 2.3453453453Е678
y dd 7.9898966Е-12
fld x
fld y
fmul
-----------------------------------
а если без сопроцессора, то ручками моделировать умножение столбиком(просто как 2 байта переслать)
  Ответить с цитированием
Поиск в теме: 



Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind