Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[34.239.150.167] |
|
Сообщ.
#1
,
|
|
|
Привет всем!!!Помогите пожалуйста написать программу, вот условие:
Расположить отрицательные элементы в заданном векторе по убыванию; элементы вектора двухбайтовые. есть код, но только в нём по убыванию положительные числа #make_COM# include 'emu8086.inc' ORG 100h .data mas db 1,18,12,13,56,14,65,43 X db 0 .code mov cx, 7 mov si, 1 cycl1: push cx mov cx, 8 sub cx, si push si mov si, 7 cycl2: mov al, mas[si-1] cmp mas[si], al jb m1 mov x,al mov al, mas[si[ mov mas[si-1],al mov al,x mov mas[si],al m1: dec si loop cycl2 pop si inc si pop cx loop cycl1 CALL PTHIS DB 13, 10, 'Otsortirovanniy massiv: ', 0 mov cx,8 mov si,0 cycl4: mov al,mas[si] CALL PTHIS DB 13, 10, 'Element:', 0 CALL PRINT_NUM_UNS inc si loop cycl4 exit: ret ;================================= DEFINE_SCAN_NUM DEFINE_PRINT_NUM DEFINE_PRINT_NUM_UNS DEFINE_PTHIS ;================================= END Заранее благодарен!!! |
Сообщ.
#2
,
|
|
|
Как-то так попробуйте: (местами неоптимально и на 100% проверял, увы )
#make_COM# include 'emu8086.inc' ORG 100h .data mas dw 1,-1800,12,13,-560,14,65,-430 ;три числа (-1800;-560;-430) надо упорядочить ;X dw 0 .code mov cx, 1 mov si, 1 xor bx, bx ; ибо будем работать только с отрицательными, - быстрый "ноль" пригодится cycl1: mov ax, mas[si] ; локальный главарь "банды" cmp ax, bx ; сравним с нулём jae netAtamana ; mas[si]>=0, а такие неинтересны. ; вот! нашлось место для атамана mov cx, si ;место для атамана mov si, 7 ; начинаем искать с дальних уголков mov ax, mas[si] ; локальный главарь "банды" cmp ax, bx ; сравним с нулём jae neInteresen ; mas[si]>=0, а такие неинтересны. ; итак, наш mas[si]<0, а такие и сортируем! Поищем с кем... mov di, si nano_cycl3: dec di ; di = di - 1 cmp cx, di jb neInteresen ; дошли до "начала"-места. cmp mas[di], bx ; сравним с нулём jae nano_cycl3 ; mas[di]>=0, а такие неинтересны. ; итак, наш mas[di]<0, а такие - кандидаты! Сравним с главарём... cmp mas[di], ax jbe nano_cycl3 ; плохой [вернее, не лучший] кандидат ; ура, нашли нового! xchg mas[di], ax ; бывшего главаря на [di]-место, [di] - в атаманы. xchg mas[si], ax ; главаря в книгу атаманов mov si, di ; теперь главарь тут jmp nano_cycl3 ; отправимся на новые поиски neInteresen: netAtamana: inc si ; может следующий атаман там будет ? cmp si, 7 jb cycl1 ; да, ещё есть место CALL PTHIS DB 13, 10, 'Otsortirovanniy massiv: ', 0 mov cx,8 mov si,0 cycl4: mov ax, mas[si] CALL PTHIS DB 13, 10, 'Element:', 0 CALL PRINT_NUM_UNS inc si loop cycl4 exit: ret ;================================= DEFINE_SCAN_NUM DEFINE_PRINT_NUM DEFINE_PRINT_NUM_UNS DEFINE_PTHIS ;================================= END |