| 
			| 
					
						| Serg79 | 
								|  | « Ответ #90 : 05-10-2009 12:41 »  |  | 
 
 Anarky, Ты покажи что у Тебя получилось то. Все таки все старались Тебе помочь и хочется конечный результат увидеть.   |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Anarky 
								Постоялец    Offline | 
								|  | « Ответ #91 : 05-10-2009 19:28 »  |  | 
 
 вставил условие для сложения отрицательных: model smallstack 256
 .data
 kolvo  dw 8
 mas  dw -3, -2, -1, 0, 1, 2, 3, 4
 .code
 start:
 push [offset kolvo]
 push [offset mas]
 call sum
 add sp, 4
 ret
 
 sum:
 push bp
 mov bp, sp
 mov cx, [bp + 4] ; загружаем количество параметров
 mov si, [bp + 6] ; загружаем указатель на данные
 xor ax, ax ; инициализация суммы
 sum_1:
 add ax, [si]
 cmp ax,0
 jb sob
 jge sled
 sob:
 mov bx,ax
 add si,2
 loop sum_1
 sled:
 add si,2
 loop sum_1
 pop bp
 ret
 end sum
 mov ax,4c00h
 int 21h
 end next
 
программа работает, но попадает не на те значения, чет со смещением неправильно CX при первом проходе устанавливается в FFFF |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #92 : 05-10-2009 19:38 »  |  | 
 
 Anarky, полный бред...   ; ...........sum_1:
 add ax, [si]
 cmp ax,0
 jb sob
 jge sled
 sob:
 mov bx,ax
 add si,2
 loop sum_1
 sled:
 ; ...........
 
 ; тоже бред.
 mov ax,4c00h
 int 21h
 end next
 
Занимаешься бездумным копипастом... |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Anarky 
								Постоялец    Offline | 
								|  | « Ответ #93 : 05-10-2009 19:43 »  |  | 
 
 проверил: бред |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #94 : 05-10-2009 19:44 »  |  | 
 
 Который раз говорю: открой справочник и прочитай описание команд. Если так и дальше будет продолжаться, я не буду помогать. |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Anarky 
								Постоялец    Offline | 
								|  | « Ответ #95 : 05-10-2009 19:52 »  |  | 
 
 а я могу так написать? .......sum_1:
 cmp [si],0
 jb a
 jge b
 a:
 mov ax,[si]
 add si,2
 loop sum_1
 b:
 add si,2
 loop sum_1
 ...........
 
или тоже бред? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #96 : 05-10-2009 19:57 »  |  | 
 
 К сожалению тоже бред...Одна правильная мысля там есть, но остальное......
 |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Anarky 
								Постоялец    Offline | 
								|  | « Ответ #97 : 05-10-2009 20:05 »  |  | 
 
 ..........mov ax,[si]
 sum_1:
 cmp ax,0
 jb a
 jge b
 a:
 mov bx,ax
 add si,2
 loop sum_1
 b:
 add si,2
 loop sum_1
 .........
 
так?  Кажется, что нет... |  
						| 
								|  |  
								| « Последнее редактирование: 06-10-2009 15:04 от Sel » |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #98 : 06-10-2009 03:45 »  |  | 
 
 Anarky, хватит гадать - все равно не угадаешь - комбинаций до хрена! |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Anarky 
								Постоялец    Offline | 
								|  | « Ответ #99 : 06-10-2009 14:58 »  |  | 
 
 RXL, что-то мне кажется, что так правильно: sum:push bp
 mov bp, sp
 mov cx, [bp + 6] ;!!!!!! загружаем количество параметров
 mov si, [bp + 4] ;!!!!!! загружаем указатель на данные
 xor ax, ax ; инициализация суммы
 
 |  
						| 
								|  |  
								| « Последнее редактирование: 06-10-2009 15:03 от Sel » |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #100 : 06-10-2009 15:58 »  |  | 
 
 Ну да. Я это сам написал   А дальше? |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Anarky 
								Постоялец    Offline | 
								|  | « Ответ #101 : 06-10-2009 16:30 »  |  | 
 
 .......sum_1:
 mov ax,[si]
 cmp ax,0
 jb a
 jge b
 a:
 add bx,[si]
 add si,2
 loop sum_1
 b:
 add si,2
 loop sum_1
 .........
 
только перед этим еще bx обнулим... |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #102 :  07-10-2009 03:57 »   |  | 
 
 Anarky, хорошо, это работает. Только наворочено очень. Лучше так: sum:push bp
 mov bp, sp
 mov cx, [bp + 4] ; загружаем количество параметров
 mov si, [bp + 6] ; загружаем указатель на данные
 xor dx, dx ; как второй аккумулятор лучше использовать DX
 sum_1:
 mov ax, [si]
 test ax, ax ; не сравниваем, а просто проверяем свойства
 jns sum_2 ; если положительное значение, пропускаем суммирование
 add dx, ax
 sum_2:
 add si,2
 loop sum_1
 mov ax, dx ; возвращаемое значение должно быть в AX
 pop bp
 ret
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Anarky 
								Постоялец    Offline | 
								|  | « Ответ #103 : 07-10-2009 08:24 »  |  | 
 
 Я правильно понял, что если AX положительное, то установится флаг SF=0тогда выполнится jns sum_2?
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #104 : 07-10-2009 08:56 »  |  | 
 
 Anarky, совершенно верно. |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Anarky 
								Постоялец    Offline | 
								|  | « Ответ #105 : 07-10-2009 17:07 »  |  | 
 
 model smallstack 256
 .data
 argc  dw 8
 args  dw -3, -2, -1, 0, 1, 2, 3, 4
 
 .code
 start:
 push [offset args]
 push [offset argc]
 call sum
 add sp, 4
 ret
 
 sum:
 push bp
 mov bp, sp
 mov cx, [bp + 4]
 mov si, [bp + 6]
 xor dx, dx
 sum_1:
 mov ax, [si]
 test ax, ax
 jns sum_2
 add dx, ax
 add si,2
 loop sum_1
 sum_2:
 add si,2
 loop sum_1
 mov ax, dx
 pop bp
 ret
 end start
 
 
все равно не работает    подскажите где я промахиваюсь... |  
						| 
								|  |  
								| « Последнее редактирование: 07-10-2009 17:10 от Anarky » |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #106 : 07-10-2009 17:53 »  |  | 
 
 Anarky, мне надоел твой бред. Я тебе привел образцы работающего кода - можно сказать, полностью написал за тебя.А будешь создавать темы с бредовыми названиями и содержимом - они могут оказаться сразу в мусорке или, в лучшем случае, в разделе для не умеющих спрашивать и прочих ленивцев, что не лучше мусорки - там еще и посмеются.
 |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Anarky 
								Постоялец    Offline | 
								|  | « Ответ #107 : 07-10-2009 20:10 »  |  | 
 
 Чем тебе вопросы и названия не нравятся??? Сказал на форуме спроси, я спросил... Ты напоминаешь инструктора по вождению, который ворчит из-за того что человек сел за руль первый раз!Такого не было, чтоб человек сел и сразу поехал!  Мне код не нужен, просто хочу разобраться как и почему он работает или не работает! За то, что помогаешь большое спасибо!!! А про ленивца зря... Я эту программку могу взять у одногруппников и тупо сдать преподу... Решать тебе помогать или нет... |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #108 : 08-10-2009 05:37 »  |  | 
 
 Anarky, я тебе привел весь код, да еще и с комментариями. Попробуй в нем разобраться. Игра угадайка нам совершенна не интересна. И кстати - желания научиться совсем-совсем не видно: сколько раз мы тебя поправляли и давали примеры с описаниями, сколько раз я говорил тебе посмотреть в справочник, но ты каждый раз собираешь что-то страшное (и явно копипастом) и нате вам - объясняйте, что я тут понаписал. Это не обучение - это больше на троллизм похоже. |  
						| 
								|  |  
								| « Последнее редактирование: 08-10-2009 05:40 от RXL » |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Anarky 
								Постоялец    Offline | 
								|  | « Ответ #109 : 08-10-2009 09:53 »  |  | 
 
 RXL, когда не знаешь в чем ошибка: в справочник смотреть бесполезно... в AX попадает фигня какая-то, а не то что мне нужно, соответственно дальше все не правильно... |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #110 : 08-10-2009 14:50 »  |  | 
 
 Распиши все на бумаге - что происходит с каждой командой. Комп тебе сейчас совсем не нужен - нужно просто понимание процесса. Почитай еще раз описание системной архитектуры процессора. |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Dimka 
								ДеятельКоманда клуба    Offline 
								Пол:    | 
								|  | « Ответ #111 : 10-10-2009 07:08 »  |  | 
 
 когда не знаешь в чем ошибка: в справочник смотреть бесполезно... в AX попадает фигня какая-то, а не то что мне нужно, соответственно дальше все не правильно... Да, думать надо головой, а не справочником. Но твой метод тыка (как в анекдоте "некогда думать, прыгать надо") и правда утомляет. Поскольку в процессоре нет никакой мистики, то фигня в AX - это прямое следствие работы предыдущих команд, работающих с этим регистром, либо же отсутствие его инициализации в самом начале. Вот возьми и проверь, на каком шаге в регистре появляется фигня. А потом смотри по справочнику ту инструкцию, которая эту фигню туда записала, и проверяй, правильно ли ты этой инструкцией воспользовался. |  
						| 
								|  |  
								|  |  Записан | 
 
 Программировать - значит понимать (К. Нюгард)Невывернутое лучше, чем вправленное (М. Аврелий)
 Многие готовы скорее умереть, чем подумать (Б. Рассел)
 |  |  | 
	|  |