Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2011, 00:55   #1
Katya25
Новичок
Джуниор
 
Регистрация: 16.01.2011
Сообщений: 2
Сообщение Одномерный массив

нужно переписать подряд в массив Y положительные и в массив Z отрица-тельные элементы массива X

не могу разобраться с массивом, правильно ли сделала?

Цитата:
.model small
.stack
.data

MAS dw 1,4,2,-5,3,-1; массив из 6 элементов
y dw 6
z dw 6
.code

mas proc
mov ax, 0
lea bx, MAS
lea si, y
lea di, z
mov cx, 6количество элементов в массиве Х
CYCL: lodsb; получили в АХ очередной элемент из массива Х
mov ax, '0'; сравнили содержимое АХ с нулем
js bm ; если АХ <0 перейдем на bm
mov ax, '0';сравнили содержимое АХ с нулем
jnl am; если АХ > 0 или АХ = 0 пересылаем содержимое АХ в массив Y
bm: mov[di],ax; ;пересылаем содержимое АХ в массив Z
am: mov [si],ax ;пересылаем содержимое АХ в массив y
loop CYCL ; если проверили не все элементы перейти на начало цикла
ret
summas endp
begin:
mov ax, @data
mov ds, ax
xor ax, ax


call z ; вывод z
call y; вывод y

mov ah, 4ch ; выходим из программы
int 21h
end begin
Katya25 вне форума Ответить с цитированием
Старый 19.01.2011, 05:49   #2
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

Katya25
Так как похожую задачу я выложил день назад на http://www.cyberforum.ru/assembler в Массив(положительные и отрицательные элементы) могу сказать что переписано с моей и при этом с кучей ошибок
1) lea bx, MAS а содержимое MAS загружаешь командой lodsb
должно быть lea si,MAS и размерность массива WORD поэтому должно быть LODSW
2) mov ax, '0' сравниваешь не с нулем, а пересылаешь в ах символом нуля, значение которого 30h в оригинале было test ax,ax на худой конец CMP AX,0
3) y dw 6 / z dw 6 объявляются не массивы а переменные со значением y=6 z=6 должно быть y dw 6 dup(?) / z dw 6 dup(?)
4) вместо STOSW появилось mov[di],ax а где add DI,2 ? пересылка все время будет идти в одну и туже ячейку
Даже с готового проблема переписать, а включить сообразительность -- об этом даже и речи не идет

Последний раз редактировалось Mikl___; 20.01.2011 в 05:47.
Mikl___ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерный массив , двухмерный массив Woxx Паскаль, Turbo Pascal, PascalABC.NET 0 10.09.2010 09:28
одномерный массив serega721 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 15.05.2010 20:12
Одномерный массив. Q basic - Построить новый массив из элементов исходного ,которые больше P. Marishkaa Помощь студентам 2 12.01.2010 16:54
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40
Одномерный массив Skrip Общие вопросы C/C++ 1 07.06.2009 12:41