Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
Злюка Энн
0 / 0 / 0
Регистрация: 12.10.2011
Сообщений: 19
1

Пересылка элементов массива

16.11.2011, 22:32. Просмотров 1287. Ответов 1
Метки нет (Все метки)

Добрый вечер.
Задача: Дан одномерный массив A(n).Переслать в массив B(n) его элементы таким образом чтобы все отрицательные числа находились в начале, а положительные в конце массива B.
То что у меня вышло:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
.model small
.stack
.data
 
mas Dw 1,-2,3,4,-5
mas2 Dw 5 dup(0)
n dw 5
 
.code
extrn writer:near
.startup 
mov cx, n
mov ax, 0
mov di,0
lea bx, mas         ;адрес массива в  bx
cmp mas[bx],0       ;первый элемент массива сравнивается с 0
jl otric        ;если элемент отрицательный на otric
otric:
mov ax,[bx]
mov mas2[di],ax
mov ax,[bx]
add bx,2                ;переход ко второму элементу массива
mov bp,[bx]
cmp mas[bp],0
jg pol
pol:
mov ax,[bx]
add bx,1
mov cx,[bx]
cmp mas[bx],0
jl otric
 
 
call writer
mov ax,mas2[di]
jmp toend
toend: mov Ah,1
int 21H
.exit
END
Выводит только первое число -2. Каким образом нужно организовать вывод массива чтобы в начале были отрицательные элементы и как переходить к остальным элементам?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2011, 22:32
Ответы с готовыми решениями:

Пересылка массива слов. Ассемблер, tasm
Изменить данную программу в программу для пересылки массива слов. sseg segment db 128 dup(?)...

Пересылка данных
Всем привет! Насколько я знаю, в асме для пересылки данных из памяти в регистр используется команда...

Пересылка данных DEBUG
1. Объявить массив размера 8 со знаком +, состоящий из 14 элементов. 2. Проинициализировать массив...

Пересылка данных, размерность операндов
Задание такое: Реализовать модуль, подключение которого позволяет производить одной командой...

Debug пересылка данных в массив.
нужно объявить массив размером 32 байта с количеством элементов 14. Проинициализировать массив 0,...

1
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
28327 / 18864 / 7428
Регистрация: 22.10.2011
Сообщений: 32,994
Записей в блоге: 6
17.11.2011, 00:04 2
Обычный "пузырек" с немного измененным условием, при котором делается обмен: "обменивать местами соседние элементы только тогда, когда ОДИН из них отрицательный, и левый (предыдущий) БОЛЬШЕ своего соседа справа", тут даже не надо второго массива, все прекрасно переставляется без него:

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
.startup
CycleExt:
    xor bx, bx
    mov cx, Len ; Len - длина массива, = 5
    dec cx
    mov si, 0
CycleIn:
    mov ax, Mas[si]
    cwd
    imul Mas[si+2]
    cmp ax, 0
    jl CheckLess ; Произведение < 0? Значит только один элемент отрицательный
    jmp Next
CheckLess:
    mov ax, Mas[si]
    cmp ax, Mas[si+2] ; Левый больше правого? Обмениваем местами
    jg Exchange
Next: 
    add si, 2
    loop CycleIn
    jmp Check
Exchange:
    mov bx, Mas[si+2]
    mov Mas[si+2], ax
    mov Mas[si], bx
    add si, 2
    loop CycleIn
Check:
    cmp bx, 0
    je Ex
    jmp CycleExt
Ex:
 
    mov cx, Len
    mov si, 0
Print:
    mov ax, mas[si]
    call Write   ; мой Write печатает содержимое AX, поэтому я заношу элементы туда
    add si, 2
    loop Print
    
    mov Ah, 1
    int 21H
 
.exit
1
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2011, 00:04

Пересылка данных командой rep movs
Есть команда: rep movs dword ptr es:,dword ptr Как я понял происходит пересылка данных с одного...

Пересылка элементов исходного массива
Доброго времени суток! нужна программа, похожую, к сожалению, не нашел, которая осуществляет...

Пересылка элементов из одного массива в другой
Задание: Написать программу пересылки массива байтов длиною 256 элементов к другому массиву такой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.