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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2013, 15:23   #11
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

Serge_Bliznykov|, не лень. Надо же практиковаться. Написал вчера для работы с массивами байт, утром переделал под массивы слов. Поторопился. Надо поменять местами две строчки для корректной работы.

Код:
sub cx,2
shr cx,1
вместо
Код:
shr cx,1
sub cx,2
vadimych вне форума Ответить с цитированием
Старый 29.01.2013, 16:08   #12
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Труда много, конечно, но многое можно было упростить:

считывание из массива A
Код:
lodsw
если отрицательное:
Код:
fiadd ax 'понятно, что в st(0) нужно ноль сначала зафутболить)
если положительное, то в массив B:
Код:
stosw
и вычисление максимума параллельно
Код:
cmp ax,dx 'в dx загнать перед началом цикла 7FFFh
jg no_min
mov dx, ax
no_min:
чтобы упростить выборку из положительного массива, объявить его так:
Код:
pos_arr dw N dup (8000h)
и потом можно спокойно устраивать цикл до первого отрицательного элемента.

з.ы. я, например, любил в таких заданиях делать шестнадцатиричный вывод, поскольку в задании обычно не указывается, в какой системе счисления должно быть представлено число... и преподаватели вполне на это покупались))
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 29.01.2013 в 16:15.
DiemonStar вне форума Ответить с цитированием
Старый 29.01.2013, 16:49   #13
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

DiemonStar, спасибо за ценные замечания. Всегда уважал критиков, которыми обычно становятся неудавшиеся писатели.
vadimych вне форума Ответить с цитированием
Старый 29.01.2013, 17:01   #14
Шпилька
Пользователь
 
Регистрация: 15.05.2012
Сообщений: 10
По умолчанию

Уважаемые, вы правы. я балда. Дело в том, что мы только только начали проходить ассемблер. И вся суть задания сводится, к тому, чтобы основное (то есть непосредственно нахождение суммы отрицательных чисел и формирование массива из положительных, и нахождение минимума) нужно делать как вставку из ассеблера, а все остальное на Паскаль. Простите-простите, что сразу некорректно сформулировала вопрос. Спасибо за потраченное время
Шпилька вне форума Ответить с цитированием
Старый 29.01.2013, 17:48   #15
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

Шпилька, попробуем довести дело до конца.
Код:
uses crt;
const n=10;
var a,b:array[1..n] of integer;
i,s,j,min:integer;
procedure sozdanie;
begin
for i:=1 to n do
a[i]:=random(30)-10;
writeln; end;
procedure vivod;
begin
writeln('Massiv');
for i:=1 to n do
write (a[i],' '); writeln; end;
procedure summa;
var sum,k:integer;
begin
asm
and k,0
xor dx,dx
mov cx,10
lea si,a
lea di,b
mov bx,-1
@0:
lodsw
test ax,ax
jns @1
add dx,ax
jmp @2
@1:
stosw
inc k
cmp ax,bx
ja @2
mov bx,ax
@2:
loop @0
mov sum,dx
mov min,bx
end;
writeln;
writeln('Summa otr.chisel',' ',sum);
writeln;
for i:=1 to k do write(b[i],' ');
writeln;
writeln;
writeln('Minimum',' ',min); end;
begin
clrscr;
randomize;
sozdanie;
vivod;
summa;
readkey;
end.
vadimych вне форума Ответить с цитированием
Старый 29.01.2013, 20:47   #16
Шпилька
Пользователь
 
Регистрация: 15.05.2012
Сообщений: 10
По умолчанию

Всем-всем-всем спасибо огромное, вы меня просто спасли))))))

Последний раз редактировалось Шпилька; 29.01.2013 в 20:50.
Шпилька вне форума Ответить с цитированием
Старый 29.01.2013, 21:10   #17
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

vadimych, просто нет слов! Круть!
я был уверен, что до встроенного ассемблера дело не дойдёт.
Шокирован тем, что ошибся!
Как говорит современная молодёжь - "респект и уважуха!!"
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Транслирование с паскаля на ассемблер. Astar Помощь студентам 0 24.11.2012 00:36
Перевод с паскаля на ассемблер Сильф Помощь студентам 1 16.06.2012 19:25
Перевод проги из паскаля в ассемблер .:DEZ:. Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 26 12.06.2012 15:56
С Паскаля на Си++ Svetlanka_ya Помощь студентам 0 16.05.2010 12:17
Из паскаля в ассемблер Archiserafim Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 16 03.09.2009 22:02