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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2011, 12:52   #1
fuzo
Пользователь
 
Регистрация: 16.09.2010
Сообщений: 40
По умолчанию Программа с подпрограммой (assembler)

Составить подпрограмму для вычисления суммы:
for i:=1 to N do Summa:= Summa + 3 * i * x;
Подпрограмму разместить в текущем файле. Параметры (x, n) в подпрограмму передать через общую область памяти. Результат возвратить в регистре ax. В основной программе организовать вызов подпрограммы для следующих исходных данных: x = 2; n = 3;

Проблема заключается в том, что цикл не хочет выполняться. Подскажите где я ошибся :/

Код:
  	.Model Small
	.Stack 100h
	.Data
 x	dw 2
 n	dw 3
 s 	dw ?
 	.Code
 begin:	mov ax,@Data  
                mov ds,ax
                mov cx,n
	        call My_Proc1
	        mov dx,ax
                mov ah,4ch 
                int 21h
          My_Proc1 proc
                mov bx,3          
for:	        mov ax,x
	        imul bx
                imul cx
                add dx,ax
                loop for         
                ret
          My_Proc1 endp
 end begin

Последний раз редактировалось fuzo; 07.03.2011 в 12:56.
fuzo вне форума Ответить с цитированием
Старый 07.03.2011, 13:28   #2
VadikV
Форумчанин
 
Аватар для VadikV
 
Регистрация: 08.01.2011
Сообщений: 226
По умолчанию

в подпрограмме портишь cx при умножении.
нужно поставить push и pop для сохранения и восстановления.
icq 223-630-454
e-mail vysotskiy@list.ru
сайт http://www.big-library.net/
VadikV вне форума Ответить с цитированием
Старый 07.03.2011, 16:14   #3
fuzo
Пользователь
 
Регистрация: 16.09.2010
Сообщений: 40
По умолчанию

Цитата:
Сообщение от VadikV Посмотреть сообщение
в подпрограмме портишь cx при умножении.
нужно поставить push и pop для сохранения и восстановления.
как это правильно сделать?
fuzo вне форума Ответить с цитированием
Старый 07.03.2011, 18:00   #4
fuzo
Пользователь
 
Регистрация: 16.09.2010
Сообщений: 40
По умолчанию

вот полностью рабочий, тему клоз

Код:
 	.Model Small
	.Stack 100h
	.Data
 x	dw 2
 n	dw 3
 s 	dw ?
 	.Code
 begin:	mov ax,@Data  
          mov ds,ax
          mov cx,n  
          mov bx,3
	call My_Proc1
	mov ax,s
          mov ah,4ch 
          int 21h         
          My_Proc1 proc          
for:	mov ax,x
	imul bx
          imul cx
          add s,ax
          loop for         
          ret
          My_Proc1 endp
 end begin
fuzo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
несложная программа в Assembler Krizzly Фриланс 5 19.12.2010 15:07
Задача с подпрограммой. DeFt Помощь студентам 1 16.02.2009 11:28
Программа Калькулятор (assembler) Andatra Помощь студентам 4 09.06.2008 18:00