Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Поменять местами пары соседних чисел в массиве


Автор: noob322 7.11.2015, 13:03
Доброе время суток) Помогите пожалуйста ребят разобраться с кодом smile Задача: поменять местами пары соседних чисел. Массив слов (Напр: 1,2,3,4,5,6,7,8,9,10; Рез: 2,1,4,3,6,5,8,7,10,9) Вот мой код,пытался реализовать не получается:
Код

org 100h

MOV CX,5
MOV BX,0

for:

MOV AX,mass[BX]
MOV DX,mass[BX+1]
MOV mass[BX],DX
MOV mass[BX+1],AX
INC BX

LOOP for

mass db 1,2,3,4,5,6,7,8,9,10

ret

Автор: ФедосеевПавел 7.11.2015, 15:44
У меня уже нет виртуалки с DOS, поэтому выскажу замечания без проверки.

1. Нужна директива assume
2. Если массив байтовый (объявлен как db), то и при обмене нужно использовать однобайтовые регистры, а если нужен 2-байтовый массив, то объявлять его нужно dw.
3. Нужно заменить inc bx на add bx, 2 или add bx,4 (в зависимости от размера элемента массива).
4. По завершении цикла - в твоей проге начнут выполнятся команды, соответствующие кодам из массива. Нужно исключить возможность выполнения кода из данных.

Автор: mikeyess 8.11.2015, 13:37
Добрый день.
Могу выполнить, но не за спасибо.
С уважением, Mike

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Pomenyat-mestami-pary-sosednikh-chisel-v-massive-id563dcc61ae2015836b8b4567#findElement_E7045_563f25d0ae201507138b468b_0

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)