Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Найти и удалить елементы 
:(
    Опции темы
Dymikero
Дата 12.12.2010, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 29.10.2010

Репутация: нет
Всего: нет



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

Код

sseg   segment        'STACK'
        db      64 dup(?)
sseg   ends
dseg    segment    'data'
A            dw     8, 2, 3, 6, -1, -1, -1, 2
nA        dw    8
B            dw     1, 0, 1, -2, -3, -2, 3
nB        dw    7
dlA            dw      ?
dlB             dw      ?
nomA            dw    ?
nomB            dw      ?
dseg    ends
code    segment    
    assume ds:dseg, cs:code    

work    proc    far
push    ds
xor     ax,ax
push    ax
mov     ax, dseg
mov    ds,ax


lea    bx,A
mov    cx,nA
lea     si,nomA
lea     di,dlA
call    lab1
lea         bx,B
mov         cx,nB 
lea         si,nomB
lea         di,dlB
call        lab1

lea  ax,A
push ax
lea  ax,nA
push ax
lea  ax,nomA
push ax
lea  ax,dlA
push ax
call lab2
;---------
lea  ax,B
push ax
lea  ax,nB
push ax
lea  ax,nomB
push ax
lea  ax,dlB
push ax
call lab2
ret  6
work endp
;---
lab1    proc    near
    push    si
      push  di
    mov    di,0
        mov     dx,0
        mov     bp,0
p3:
    mov    ax,[bx+di]
    cmp     ax,0
    jge     p13
        inc     dx
        jmp     p2 
p13:
        cmp    dx,3
        jne  p9
        mov  si,di
        jl         p1
p9:
mov          bp,dx
p1:       
             mov dx,0
p2:      
add        di,2
loop            p3

pop             di
mov             [di],bp
mov             di,si
pop             si
add             di,2
shr             di,1
sub             di, bp
mov             [si],di
ret
lab1    endp
;---
lab2 proc near
push bp
mov  bp,sp
push ax bx cx dx si di
mov  cx,[bp+4]
mov  di,[bp+6]
shl  di,1
mov  bx,[bp+10]

m1:  mov  bx,[bx+di]
     mov bx,0
     add di,2
loop m1
pop     di si dx cx bx ax bp
ret  6
lab2 endp
code   ends
end

PM   Вверх
Dymikero
Дата 13.12.2010, 02:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 29.10.2010

Репутация: нет
Всего: нет



Ребят, ну кто нибудь помогите. Действительно интересно где я ошибся. Прога компилируется tasm'щь без ошибок но серию отрицательных элементов так и не зануляет.
PM   Вверх
500mhz
Дата 13.12.2010, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: 1
Всего: 14



что значит серию? из скольки чисел? или последнюю серию? или как?


--------------------

PM MAIL ICQ   Вверх
iff
Дата 13.12.2010, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: 4
Всего: 16



Цитата(Dymikero @  12.12.2010,  22:23 Найти цитируемый пост)
последнюю серию отрицательных чисел 




--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
Dymikero
Дата 14.12.2010, 03:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 29.10.2010

Репутация: нет
Всего: нет



Цитата(500mhz @ 13.12.2010,  19:32)
что значит серию? из скольки чисел? или последнюю серию? или как?

Последнюю серию отрицательных чисел, серия 3 и больше эл-тов. Прога находит кол во таких эл-ментов и первый элемент из этой серии. Значит ошибка в процедуре lab2.
PM   Вверх
500mhz
Дата 14.12.2010, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: 1
Всего: 14



господа, серия - последовательность нескольких элементов (например серия выстрелов)

в данном случае 
A            dw     8, 2, 3, 6, -1, -1, -1, 2

B            dw     1, 0, 1, -2, -3, -2, 3

я вижу здесь одну серию -1 -1 -1 и одну -2 -3 -2 в каждом "массиве"
и постановка ТЗ "последнюю серию отрицательных чисел " не имеет смысла так как в любом массиве эта серия первая и последния.

(ну и препод у вас дебил)

а вот если массив имеет вид 1,2,5,8,9,-5,-5,-5,-6,6,9,8,2,3,-3,-2,-4,5,4,6,5,-1,-1,-1
то "последняя и первая" (так как нет повторений серий), серия с наибольшим колвом элементов будет серия -5 -5 -5 -5 

кароче дайте мне ТЗ нормальное и я напишу )


--------------------

PM MAIL ICQ   Вверх
Dymikero
Дата 15.12.2010, 03:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 29.10.2010

Репутация: нет
Всего: нет



Серия 3 и БОЛЬШе эл-тов. Т.е. -1 -1 -1 в перовм и -2 -3 -2. Так было написано в тз. Видимо чтобы не утруждать студентов повторяющиеся серии в задание не включили но по умолчанию мы должны находить именно последнюю.
PM   Вверх
Dymikero
Дата 17.12.2010, 02:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 29.10.2010

Репутация: нет
Всего: нет



Хегей. Есть кто живой?
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0723 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.