Большой Воронежский Форум
» Программирование>помогите, пожалуйста, решить задачу на Ассемблере
Sh@m 20:59 28.06.2008
Дан файл, в нем 2 числа... нужно считать 2 числа из файла, перемножить, результат вывести на экран... но числа могут быть 4-значными, вобщем произведение может быть больше 65535... буду очень благодарен за помощь, могу скинуть код для произведения меньше или равного 65535...
dn2k4 23:50 28.06.2008
<телепатия>
процессор x86, я полагаю? =)
</телепатия>

(Integer MULtiply) Умножение целочисленное со знаком


Схема команды: imul множитель_1
imul множ_1,множ_2
imul рез-т,множ_1,множ_2
Назначение: операция умножения двух целочисленных двоичных значений со знаком.

Алгоритм работы:

Алгоритм работы команды зависит от используемой формы команды. Форма команды с одним операндом требует явного указания местоположения только одного сомножителя, который может быть расположен в ячейке памяти или регистре. Местоположение второго сомножителя фиксировано и зависит от размера первого сомножителя:
* если операнд, указанный в команде, — байт, то второй сомножитель располагается в al;
* если операнд, указанный в команде, — слово, то второй сомножитель располагается в ax;
* если операнд, указанный в команде, — двойное слово, то второй сомножитель располагается в eax.
Результат умножения для команды с одним операндом также помещается в строго определенное место, определяемое размером сомножителей:
* при умножении байтов результат помещается в ax;
* при умножении слов результат помещается в пару dx:ax;
* при умножении двойных слов результат помещается в пару edx:eax.
Команды с двумя и тремя операндами однозначно определяют расположение результата и сомножителей следующим образом:
* в команде с двумя операндами первый операнд определяет местоположение первого сомножителя. На его место впоследствии будет записан результат. Второй операнд определяет местоположение второго сомножителя;
* в команде с тремя операндами первый операнд определяет местоположение результата, второй операнд — местоположение первого сомножителя, третий операнд может быть непосредственно заданным значением размером в байт, слово или двойное слово


Сообщение от :
.486
...
mov bx,186
imul eax,bx,8
;если результату не хватило размерности операнда1,
;то перейдем на m1, где скорректируем ситуацию:
jc m1

FIZiolog 14:58 29.06.2008
dn2k4, наврно, я буду прав, если сажу, что пользователь Sh@m имел ввиду, чтобы помогли с готовой прогой, например, за пиво... Об этом вы можете и в личке с ним договориться, а то, что ты здесь понаписал мне лично не помогло. Причиной может быть, конечно, моя недальновидность в воросе программиравания на ассемблере, а может индивидуальное восприятие задачи каждым программистом. В любом случае, помочь надо помочь человеку!
dn2k4 16:18 29.06.2008

Сообщение от FIZiolog:
Об этом вы можете и в личке с ним договориться, а то, что ты здесь понаписал мне лично не помогло.

Я должен беспокоится по этому поводу? =)
SmanxX1 16:24 29.06.2008
Sh@m
Числа в строчку идут? Они фиксированные, т.е. например, только четырехзначные? И какие числа, целые или вещественные? Файл типизированный или нетипизированный?
Просто объяснять задачу нужно понятней, тогда и решение быстрей появиться. ))
Sh@m 18:22 29.06.2008
ммм... файл обычный txt, числа только положительные целые, идут в файле через пробел, нефиксированные, могут быть по размеру до 4-значных включительно...
MadFish 22:10 30.06.2008
прекрасно, еще бы указать целевую платформу и будет вообще все замечательно
а то ведь ща накодаем для P5 под AIX
dn2k4 22:14 30.06.2008

Сообщение от MadFish:
а то ведь ща накодаем для P5 под AIX

"нашкодим" =)
Sh@m 22:51 30.06.2008
Спасибо форумцу dn2k4 за прогу) и другим спасибо за беспокойство)... думаю, темку можно закрывать)
Вверх