Serg79
|
|
« Ответ #90 : 05-10-2009 12:41 » |
|
Anarky, Ты покажи что у Тебя получилось то. Все таки все старались Тебе помочь и хочется конечный результат увидеть.
|
|
|
Записан
|
|
|
|
Anarky
Постоялец
Offline
|
|
« Ответ #91 : 05-10-2009 19:28 » |
|
вставил условие для сложения отрицательных: model small stack 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
Технический
Администратор
Offline
Пол:
|
|
« Ответ #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
Технический
Администратор
Offline
Пол:
|
|
« Ответ #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
Технический
Администратор
Offline
Пол:
|
|
« Ответ #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
Технический
Администратор
Offline
Пол:
|
|
« Ответ #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
Технический
Администратор
Offline
Пол:
|
|
« Ответ #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
Технический
Администратор
Offline
Пол:
|
|
« Ответ #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
Технический
Администратор
Offline
Пол:
|
|
« Ответ #104 : 07-10-2009 08:56 » |
|
Anarky, совершенно верно.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Anarky
Постоялец
Offline
|
|
« Ответ #105 : 07-10-2009 17:07 » |
|
model small stack 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
Технический
Администратор
Offline
Пол:
|
|
« Ответ #106 : 07-10-2009 17:53 » |
|
Anarky, мне надоел твой бред. Я тебе привел образцы работающего кода - можно сказать, полностью написал за тебя. А будешь создавать темы с бредовыми названиями и содержимом - они могут оказаться сразу в мусорке или, в лучшем случае, в разделе для не умеющих спрашивать и прочих ленивцев, что не лучше мусорки - там еще и посмеются.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Anarky
Постоялец
Offline
|
|
« Ответ #107 : 07-10-2009 20:10 » |
|
Чем тебе вопросы и названия не нравятся??? Сказал на форуме спроси, я спросил... Ты напоминаешь инструктора по вождению, который ворчит из-за того что человек сел за руль первый раз!Такого не было, чтоб человек сел и сразу поехал! Мне код не нужен, просто хочу разобраться как и почему он работает или не работает! За то, что помогаешь большое спасибо!!! А про ленивца зря... Я эту программку могу взять у одногруппников и тупо сдать преподу... Решать тебе помогать или нет...
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #108 : 08-10-2009 05:37 » |
|
Anarky, я тебе привел весь код, да еще и с комментариями. Попробуй в нем разобраться. Игра угадайка нам совершенна не интересна. И кстати - желания научиться совсем-совсем не видно: сколько раз мы тебя поправляли и давали примеры с описаниями, сколько раз я говорил тебе посмотреть в справочник, но ты каждый раз собираешь что-то страшное (и явно копипастом) и нате вам - объясняйте, что я тут понаписал. Это не обучение - это больше на троллизм похоже.
|
|
« Последнее редактирование: 08-10-2009 05:40 от RXL »
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Anarky
Постоялец
Offline
|
|
« Ответ #109 : 08-10-2009 09:53 » |
|
RXL, когда не знаешь в чем ошибка: в справочник смотреть бесполезно... в AX попадает фигня какая-то, а не то что мне нужно, соответственно дальше все не правильно...
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #110 : 08-10-2009 14:50 » |
|
Распиши все на бумаге - что происходит с каждой командой. Комп тебе сейчас совсем не нужен - нужно просто понимание процесса. Почитай еще раз описание системной архитектуры процессора.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #111 : 10-10-2009 07:08 » |
|
когда не знаешь в чем ошибка: в справочник смотреть бесполезно... в AX попадает фигня какая-то, а не то что мне нужно, соответственно дальше все не правильно... Да, думать надо головой, а не справочником. Но твой метод тыка (как в анекдоте "некогда думать, прыгать надо") и правда утомляет. Поскольку в процессоре нет никакой мистики, то фигня в AX - это прямое следствие работы предыдущих команд, работающих с этим регистром, либо же отсутствие его инициализации в самом начале. Вот возьми и проверь, на каком шаге в регистре появляется фигня. А потом смотри по справочнику ту инструкцию, которая эту фигню туда записала, и проверяй, правильно ли ты этой инструкцией воспользовался.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
|