Поиск:

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


Новичок



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

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



1)  Найти последнюю серию отрицательных элементов (серия – 3 и больше элемента), параметры передавать через регистры. Вот код, в нём я уверен.
Код

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
ret
work    endp
  mov bx,dx
mov [bx],ax
cycle:
pop bx
mov [bx],di
pop di
pop si
pop ax
ret
lab1    proc    near
    push    si 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
        jl         p1
mov          si,di
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
pop             bxl
mov             [bx],di
pop             di
pop             si
pop             ax
ret
lab1    endp
code   ends
       end work
end


2) К первой проге добавить процедуру удаления той серии, которую мы нашли, параметры передавать через стек. Вот код, в нём я НЕ уверен:
Код

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
ret
lea    ax,A
push   ax
lea    ax,nA
push   ax
lea    ax,dlA
push   ax
lea    ax,nomA
call   lab2
push   ax 
lea    ax,B
push   ax
lea    ax,nB
push   ax
lea    ax,dlB
push   ax
lea    ax,nomB
push   ax
call   lab2 
ret
work    endp

lab1    proc    near
    push    si 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     bx,[bp+8]
mov     cx,[bp+6]
mov     di,0
mov     si,[bp+2]
shl     si,1
z1:     cmp si,di
        je z2
add     di,2
z2:     mov [bx+di],0
    mov dx,[bp+6]
    dec dx
    mov [bp+6],dx
loop    z1
pop     di si dx cx bx ax
ret     2
lab2    endp
end work
code   ends
end


3) Ко второй проге добавить процедуру, сортировки массива после удаления последней отрицательной серии элементов. Параметры передавать блоком через стек. В процедуре использовать локальные переменные и оператор эквивалентности. 


Надо проверить на ошибки вторую прогу, и помочь с сортировкой в третей. Как будет выглядеть сортировка с локальными переменными, оператором эквивалентности, да еще с параметрами переданными блоком через стек?  smile 

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

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

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


 




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


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

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