Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
_koder_
0 / 0 / 1
Регистрация: 19.12.2013
Сообщений: 30
1

Сложение чисел

27.12.2013, 01:12. Просмотров 1003. Ответов 1
Метки нет (Все метки)

Здравствуйте . Есть такая программа:
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
.686
.model  flat, stdcall
option casemap:none
include \masm32\include\windows.inc 
include \masm32\macros\macros.asm
uselib user32,kernel32,masm32
AddDigs proto C :dword, :vararg
.data
buffer db 64 dup (0)
.code
start:
 
invoke AddDigs,4,3,4,5,6
invoke wsprintf, offset buffer, chr$("%d"), eax
invoke MessageBox, 0, offset buffer, offset buffer, 0
invoke ExitProcess,0
 
AddDigs proc C argc:dword,argv:vararg
    xor eax, eax
    xor ecx, ecx 
@@:
    add eax, argv[ecx * 4]
    inc ecx
    cmp ecx, argc
    jl @B
    ret
AddDigs endp
 
end start
В ней задаются числа 4,3,4,5,6, но сложение происходит только между последними 4-мя числами (3+4+5+6) , то есть первая цифра служит как бы счётчиком .
Я не могу понять , как изменить прогу , чтобы додавались , например , 3 последних числа ( 4+5+6) ? Как нужно поменять параметры процедуры AddDigs ?
Помогите , пожалуйста , вроде просто , но никак не получается.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2013, 01:12
Ответы с готовыми решениями:

Сложение 2х чисел
Решил для себя освоить ассемблер, закончил 1 курс коллежа. Хелло ворд вроде...

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

Сложение дробных чисел
Здравствуйте, как сложить 1.5+2.3 , покажите пример пожалуйста или обращаться к...

Сложение шестнадцатеричных чисел
Здравствуйте,напишите пожалуйста учебники где можно бы было научится...

Сложение двух чисел
Доброго времени суток! Нашел программу, попытался запустить (через DosBox) Но...

1
Mikl___
Автор FAQ
11899 / 6187 / 574
Регистрация: 11.11.2010
Сообщений: 11,198
27.12.2013, 04:56 2
_koder_,
странная программа - процедура "AddDigs proc C argc:dword,argv:vararg" объявлена как процедура получающая два аргумента, первый аргумент счетчик, второй аргумент - адрес массива, а ты вместо адреса массива пытаешься напрямую передать в качестве аргументов элементы массива "invoke AddDigs,4,3,4,5,6", выход из создавшегося положения - объяви в данных массив
Assembler
1
2
3
4
5
mass dd 4,3,4,5,6
count dd ($-mass)/4; count автоматически подсчитает количество элементов
...
.code
invoke AddDigs,count,addr mass
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2013, 04:56

Сложение чисел по-разрядно
Добрый день! Помогите пожалуйста написать программу: Дано 3 числа разных типов....

Сложение шестнадцатеричных чисел
Здравствуйте. Начал изучать язык. Сейчас пытаюсь складывать шестнадцатеричные...

Сложение двоично десятичных чисел
Задать с клавиатуры 2 двухразрядных ВСД числа. Выполнить сложение ВСД числа. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru