Перейти к содержанию

Помогите с программкой на Assembler, пожалуйста...


Рекомендуемые сообщения

Вот такая вот задачка: Вычисление среднего арифметического отрицательных элементов матрицы.Матрица вводится либо через Randomize либо с клавиатуры.

Оч прошу, помогите.

Ссылка на комментарий

создай процедурку на ввод и на вывод.

спрашиваешь размерность матрицы(чтоб не мучаться предположи, что размерность не превысит количество элементов в массиве :) )

p.s. подсказка там везде хольной loop :) по прерываниям int 21h,int 16h

p.p.s если com(tiny) незабудь выровнять сегменты относительно своего сегмента, иначе прыгать он у тебя будет весьма странными кренделями :) ггг

Ссылка на комментарий
p.p.s если com(tiny) незабудь выровнять сегменты относительно своего сегмента,

?. камрад ничего не попутал ?? сегменты ??

tiny - один сегмент. для кома выравнивают "стартовый" адрес org 100h

.MODEL Tiny
.CODE
ORG 100h

Start:

Ссылка на комментарий

Комрад еслиб был код такого рода:

--------

my segment

org 100h

begin:

mov ah,9h

mov dx,offset mess

int 21h

int 20h

mess db 'привет$'

my ends

end begin

--------- я бы и слова не сказал :)

но он там будет по меткам прыгать :) например:

------------

my segment

org 100h

begin:

mov ah,9h

mov dx,offset mess

mov cx,5

met:

int 21h

loop met

int 20h

mess db 'привет$'

cseg ends

end begin

---------без выравнивания работать я так думаю не будет :) ------->

Лог

Assembling file: cod.asm

Error messages: 1

Warning messages: None

Passes: 1

Remaining memory: 453k

near jump or call to different CS ----> 9 строка---->"loop met"

корректный же код выглядит как минимум так:

-----------

my segment

assume cs:my

org 100h

begin:

mov ah,9h

mov dx,offset mes

mov cx,5

met:

int 21h

loop met

int 20h

mes db 'привет$'

my ends

end begin

---------------

Лог

Assembling file: cod.asm

Error messages: None

Warning messages: None

Passes: 1

Remaining memory: 453k

P.S. гмм может я не понял вопроса и комрад говорил не об этом?

Ссылка на комментарий

В сегменте команд с помощью директивы assume указано соответствие каждому из сегментов своего сегментного регистра. тоесть тупо говорим :) мужик это com программулька тут все в одном месте)) и сегмент данных и сегмент кода и т.д))) иначе он ищет его в другом месте и соответственно не находит... помойму как то так. А сам процес подгонки сегментов помойму называется выравнивание сегментов, если не изменяет память такой термин я вычитал из книги Калашникова Assembler это просто :)

Ссылка на комментарий

Ребята, это, конечно, все оч мило, но я в ассемблере вообще ни бум бум, я оч вас прошу, напишите программку, пожалуста... на ближайшую торрентовку приду поцалую)))

Ссылка на комментарий

:) положимся на вселенское чувство справедливости :)

если Россия выиграет у Словении сегодня :) сделаю задачку от начала и до конца :)

дай бог памяти вспомнить асм, как то не часто я им пользуюсь :)

P.S. регистры какие используете 16/32(ax,eax)?

Ссылка на комментарий

martinges

Директивой SEGMENT определяем начало сегмента, так же может, но не обязательно, определять атрибуты сегмента, в которые входит и выравнивание в памяти на границу: BYTE, WORD, DWORD, PARA, PAGE, MEMPAGE.

Директивой ASSUME указывают компилятору значение которого сегмента необходимо установить в данный сегментный регистр. В документации указано , что при использовании стандартных сегментных директив необходимо в обязательном порядке указывать ASSUME CS:. То что tasm у вас так ругается это как раз следствие неопределенности CS вычисления относительно сегмента. Попробуйте в листинг добавить директиву MODEL. Результат более чем понятен "CS unreachable from current segment". Сам на практике использовал только упрощенные директивы, не было необходимости тонкой настройки и управления сегментами.

Печально если автор упомянутой вами книги использовал "могучесть" русского языка не по назначению.

Для aksik666 я бы порекомендовал обратить внимание на

станок http://www.masm32.com/ - тонна кода примеров и макросов в придачу

если есть Visual C++ 2005 Express Edition то можно посмотреть Microsoft Macro Assembler 8.0 (MASM) Package (x86)

ну и почитать http://www.wasm.ru/ для начала.

такие задачи не в школе задают?

зы или дождаться результата матча

зыы martinges начинай писать =))

Ссылка на комментарий

Раз уж пошла такая пьянка :)

1) 7456 страниц нашлось по фразе "выравнивание сегментов assembler" (с) Yandex, причем вполне приличных кодерских сайтов :) Если честно не совсем понимаю почему вы вопринимаете все столь болезнено :)

2) по поводу:

martinges

В документации указано , что при использовании стандартных сегментных директив необходимо в обязательном порядке указывать ASSUME CS:.

выше был пример рабочего кода без использования директивы assume cs:.

my segment

org 100h

begin:

mov ah,9h

mov dx,offset mess

int 21h

int 20h

mess db 'привет$'

my ends

end begin

впринципе его можно было бы сюда вставить :) но необязательно :)

P.S. Думаю все же писать придется :) я все же хочу увидеть наших с кубком мира в руках :) а не отсеявшимися до основного веселья :)

Ссылка на комментарий
вопринимаете все столь болезнено

=) камрад, с чего ты взял это ?

7456 страниц нашлось по фразе "выравнивание сегментов assembler" (с) Yandex

и что там про аssume ? окинул взглядом вроде как про атрибут для директивы SEGMENT так и пишут =).

зы с кубком не знаю, но братьев славян должны пройти. [пытается забыть матч с азербайджаном у них дома]

Ссылка на комментарий

aksik666

опачки про тебя то я и забыл :)

До вечера, если никакая падлюка не помешает скину исходничег :)

P.S. Россия вперед :) осталось выиграть Словенцев на их поле :)

Ссылка на комментарий

aksik666

твоя задача была не в руках, а в ногах сборной =). они её и пропинали.

задача не сложная, сам бы попробывал уже бы сделал. если бы что то было не понятно объяснили. а так не интересно, экспу в набивании на клавиатуре не нужно, тут тупо кодинг без всякой фантазии.

Ссылка на комментарий

Я порой не понимаю людей, особенно программистов - пишут, что не сложно, а написать не могут... Видимо, сложно... Неужели не жаль бедную девушку, которая без этой программки возможно и диплом не получит никогда... *24

Ссылка на комментарий

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

Добавлено спустя 2 минуты 45 секунд:

aksik666

а зачем учиться если простые вещи не пытаться сделать? асм экономистам и юристам не дают в программе.

Нам асм тоже не давали, что поделать, а курсовой требуют. Не мы такие жизнь такая. А не пытаюсь сделать, потому что времени нет на изучение. Да и собственно зачем мне его изучать, если знаю, что в будущем на нем писать не буду.

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

в деканат. мы в свое время строили таких "умных" преподавателей.

Могу заплатить,

пишите сумму так быстрее найдете желающих.

удачи

Да и собственно зачем мне его изучать

угу и историю, и обж, и прочую м..нь, однако, мои коллеги из забугорья считают иначе и очень внимательно относятся к маркам на непрофильные активы предметы. почему? так очевидно же.

Ссылка на комментарий

Вот пусть считают и изучают, я вообще в области дизайнера планирую работать. А диплом нужен, отказываться поздно, пятый курс как-никак.

Добавлено спустя 7 минут 25 секунд:

Ценник - 200 р.

Ссылка на комментарий
  • 1 месяц спустя...

1) Дан массив действительных чисел А(i), i=1÷10. Определить минимальный элемент массива и его порядковый номер.

2) Найти наименьшее из трех данных чисел. Вывести его.

3) Дан массив ai, i=1,…,10. Найти среднее арифметическое наименьшего и наибольшего элементов массива. Вывести среднее арифметическое.

4) Дано число x. Вычислить y, если:

y=x^2, при -2 ≤ х ≤ 2

y=4, в противном случае. Вывести y.

5) Даны два числа. Заменить второе число нулем, если не меньше первого. И оставить его прежним, если это не так.

Вывести второе число.

6) Даны два числа. Вывести первое число, если оно больше второго, и оба числа, если это не так.

7) Дано число х, вычислить y, если:

y=0, при х ≤ 0

y= х^4, в противном случае. Вывести y.

8) Дан массив из 20 элементов.

Четные элементы сдвинуть на три, а нечетные на четыре.

9) В массиве А(4,5). Найти количество чисел, меньше чем число х. Вывести количество чисел.

10) ai, i=1,…,10.

Сформировать массив по следующему правилу:

нечетные разделить на 2, четные умножить на 2.

11) Даны два числа. Вывести второе число, если оно не меньше первого и вывести сумму обоих чисел, если это не так.

12) Подсчитать сумму элементов массива состоящего из семи элементов.

13) Сложить два числа, если результат будет больше 200, то вычесть число 50, иначе прибавить 15.

буду крайне благодарен!!! у нас просто экзамен по ассемблеру.... после удачной сдачи, с нас пивко *70

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

Ссылка на комментарий

Задачи на ассемблере:

1) Дан массив действительных чисел А(i), i=1÷10. Определить минимальный элемент массива и его порядковый номер.

2) Найти наименьшее из трех данных чисел. Вывести его.

3) Дан массив ai, i=1,…,10. Найти среднее арифметическое наименьшего и наибольшего элементов массива. Вывести среднее арифметическое.

4) Дано число x. Вычислить y, если:

y=x^2, при -2 ≤ х ≤ 2

y=4, в противном случае. Вывести y.

5) Даны два числа. Заменить второе число нулем, если не меньше первого. И оставить его прежним, если это не так.

Вывести второе число.

6) Даны два числа. Вывести первое число, если оно больше второго, и оба числа, если это не так.

7) Дано число х, вычислить y, если:

y=0, при х ≤ 0

y= х^4, в противном случае. Вывести y.

8) Дан массив из 20 элементов.

Четные элементы сдвинуть на три, а нечетные на четыре.

9) В массиве А(4,5). Найти количество чисел, меньше чем число х. Вывести количество чисел.

10) ai, i=1,…,10.

Сформировать массив по следующему правилу:

нечетные разделить на 2, четные умножить на 2.

11) Даны два числа. Вывести второе число, если оно не меньше первого и вывести сумму обоих чисел, если это не так.

12) Подсчитать сумму элементов массива состоящего из семи элементов.

13) Сложить два числа, если результат будет больше 200, то вычесть число 50, иначе прибавить 15.

ну что никто не поможет?!!!

не за просто так же!!! ну хэлп, плиииз

Ссылка на комментарий

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...