![]() |
|
|
![]()
|
|
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: нет Всего: 111 |
Помогите мне написать программу сортирущую 15 2х байтовых чисел и нахадящую их ср. арифметическое. Может кто что подскажет?
|
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Ты про тот проц, где есть команды типа LDA, STA ... ?
Счас попробую - ? PS Короче, я на ассемблере 8080 не писал, у меня есть книжка "Программирование на языке ассемблера для микропроцессоров 8080 и 8085 Левенталя и Сэйвилла", по ней я тебе завтра могу что-то изобразить, в ней есть даже пример сортировки, но для тебя он больно сложен - там медианный метод. Это сообщение отредактировал(а) Chingachguk - 21.3.2005, 20:44 -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: нет Всего: 111 |
Ну там, типа ADI, MVI, LXI и тд.
Дамаю, что "пузырьком" будет попроще |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: нет Всего: 111 |
Буду очень благодарен за любую помощь. К стати, по моему, есть только один хороший эмультор i8080 (K580BM80). По крайней мере лучше чем этот я не знаю. Если нужен могу выложить на народе.
|
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
А какая помощь тебе нужна-то ?
-------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: нет Всего: 111 |
Не знаю как сделать сортировку. Сейчас сижу разбираюсь с похожим примером, но как то медленно всё доходит |
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Публикуй, посмотрю.
-------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: нет Всего: 111 |
Вот. Вобщем это, вроде курсовая работа. Мне по ней надо сделать свою задачу.
0A00-0A1С Заданный массив 0A60-0A62 Сумма 0A90-0A92 Среднее арифметическое (ответ) 0A8F Остаток
|
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
И ты хочешь на основании этого сделать сортировку ?... Позже посмотрю подробнее.
-------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| Yanis |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: нет Всего: 111 |
Не обязательно на основании этого, мне главное понять как её реализовать!
Буду признателен! |
||||
|
|||||
| Chingachguk |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Ну, мне кажется лучше сделать так: сначала напиши по-возможности простой алгоритм - тот же пузырек - на ассемблере 8086, а если не знаешь его - на Паскале или СИ. Отладь ее получше, затем один в один перебей на 8080, если будут проблемы с этим, я попробую помочь. Вот совсем простой варинт пузырька, даже без анализа уже отсортированного массива во внешнем цикле:
Это сообщение отредактировал(а) Chingachguk - 31.3.2005, 23:09 -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
||||
|
|||||
| Yanis |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: нет Всего: 111 |
Сегодня с утра так и сделал: набрал на Delphi код "пузырька" и посмотрел код в Debug'е. Тольок там не совсем понятно и наглядно. К тому же на x80 and x85 мало регистров. Всего то 5+2 регистров: A, B, C, E, D, M(H, L). Да плюс к этому нет инструкции loop.
Спасибо за код как домой попаду начну разбираться. А этот код будет в Delphi работать? Хотя у меня дома ещё MASM32 есть, но там потрейсить не получится. |
||||
|
|||||
| Chingachguk |
|
||||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Напрямую не будет, он рассчитан на 16-ти битный режим. Нужно переделать si->esi, cx->ecx, esi загрузить верно... Примерно так:
Ну почему это ? Компилируешь в *.com, *.exe или еще что и смотри в td.exe (для дос). Можно набить это в асм-вставке в turbo pascal 7.0 для ДОС - там отлично трейсится асм-код и регистры тоже.
Используй комбинацию dec reg(cx, ecx...) + jnz @@Label. -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
||||||||
|
|||||||||
| Yanis |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: нет Всего: 111 |
В принципе, я разобрался с вашим кодом сортировки массива слов (см. .04.2005). Ещё переделал этот код на сортировку массива байт. Вот, что получилось (не могу без коментариев. Всё в голове не умещается
Всё правильно??? Наверное решать эту задачу (см. ) сразу на ассемблере i80 процессора будет сложновато. Поэтому я перефразирую вопрос. Может так будет легче перенести программу на ассемблер. Задача (общий вид). Дан массив A из n элементов типа Byte (A: array[1..n] of Byte). Каждая пара чисел/элементов массива (A[1], A[2]), (A[3], A[4])...(A[n-1], A[n]) представляет (принимается за) слово (WORD). Произвести сортировку этих слов. У меня на delphi получился такой код:
Но мне теперь нужно перегнать этот код в ассемблер |
||||
|
|||||
| Chingachguk |
|
||||||||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Комментарии - это здорово, и не совсем потому, что будет проще (не только тебе) впоследствии понять, в чем дело было. А потому, что написав мысль делаешь ее ясной для себя ;) Я обычно так и пишу:
Да, все верно, ты превратил это в сортировку массива байт. А вообще опыт - лучший критерий правильности.
Ну это и есть обмен элементов [esi+1] <-> [esi]:
Я не очень понял, чем эта задача отличается от сортировки слов (16 бит). Если мы будем представлять элементы Aj,Aj+1 как слово (Aj+1=high byte, Aj-low byte), и отсортируем их именно как слова, то будет ли решена задача ? Или приведи пример из набора чисел, и как они должны выглядеть после сортировки. И еще я сомневаюсь, что код на Паскале написан без ошибки ;) Его надо проверить. -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
||||||||||||
|
|||||||||||||
![]()
|
| Правила форума "Asm: Общие вопросы" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |