Хостинг портала RFpro.ru: Московский хостер Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64 РАССЫЛКИ ПОРТАЛА RFPRO.RU Лучшие эксперты по данной тематике | Номер выпуска: | 1551 | | Дата выхода: | 25.11.2013, 11:30 | | Администратор рассылки: | Лысков Игорь Витальевич (Старший модератор) | | Подписчиков / экспертов: | 44 / 21 | | Вопросов / ответов: | 1 / 1 | Консультация # 187629: Здравствуйте! Прошу помощи в следующем вопросе: Видел похожую задачу http://rfpro.ru/question/178004 Пожалуйста, помогите составить код к лабораторной работе и прокомментируйте 1ый пункт задания. Разработать программу на языке Ассемблера. Программа должна иметь все необходимые «псевдооператоры», которые позволяли бы загрузи... Консультация # 187629: Здравствуйте! Прошу помощи в следующем вопросе:
Видел похожую задачу http://rfpro.ru/question/178004
Пожалуйста, помогите составить код к лабораторной работе и прокомментируйте 1ый пункт задания.
Разработать программу на языке Ассемблера. Программа должна иметь все необходимые «псевдооператоры», которые позволяли бы загрузить ее непосредственно в среду. Коды программы должны начинаться с 0000Н, байтовые переменные — с 08Н, стек — с 60Н, битовые переменные — с 20Н, внешнее ОЗУ — с 0000Н. Ассемблирование вручную приводить не надо.
Cоставить программу проверки элементов массива на 0. Числа располагаются во внутренней памяти, начиная с адреса 10Н по ЗfН. Надо зафиксировать адреса нулевых элементов массива и запомнить их во внутренней памяти. Отчет должен содержать: 1. Распределение памяти ОЭВМ для решения задачи 2. Распределение переменных в указанных выше пространствах памяти. З. Cтруктурную схему алгоритма этой программы. 4. Листинг отлаже нной программы. 5. Контрольный пример для запуска программы. Спасибо! Дата отправки: 22.11.2013, 11:03 Вопрос задал: Alex (Посетитель) Всего ответов: 1 Страница онлайн-консультации » Консультирует Лысков Игорь Витальевич (Старший модератор): Здравствуйте, Alex! Предлагаю Вашему вниманию следующую программу, решающую Вашу задачу. Попробуйте сначала понять ее работу самостоятельно. Будут вопросы - спрашивайте в мини-форуме
Код : ;Программа проверки элементов массива на 0. ;Числа располагаются во внутренней памяти, начиная с адреса 10Н по ЗfН. ;Надо зафиксировать адреса нулевых элементов массива и запомнить их ;во внутренней памяти. Отчет должен содержать: ;1. Распределение памяти ОЭВМ для решения задачи ;2. Распределение переменных в указанных выше пространствах памяти. ;З. Cтруктурную схему алгоритма этой программы. ;4. Листинг отлаженной программы. ;5. Контрольный пример для запуска программы. array_i equ 10h ;адрес исходного массива count equ 30h ;количество = 3fh - 10h + 1 array_o equ 40h ;= array_i + count, сюда запишем адреса нулевых ;его длина равна исходному (могут быть все нули) start equ 0 stack equ 70h ;вершина стека = array_o + count org start mov sp, #stack ;стек ;------------- ;контрольный пример mov r0, #array_i ;заполним буфер mov a, 1 ;значениями, начиная с 1 mov r1, #count ;количество fill_loop: mov @r0, a ;сохраняем inc a ;с шагом 1 anl a, #03h ;чтобы были числа 0,1,2,3,0,1,2,3,... djnz r1, fill_loop ;в массиве будут числа 1,2,3,0,1,2,3,0,1,... ;------------- mov r0, #array_i ;адрес исходного массива во внутренней памяти mov r1, #array_o ;адрес результирующего массива во внутренней памяти mov r2, #count ;количество элементов массива loop: ;цикл по складыванию элементов массива mov a, @r0 ;читаем в аккум из внутренней памяти байт по адресу [r0] jnz next ;проверяем аккум на 0, не 0 - на следущий mov @r1, 0 ;а=0 - сохраняем его индекс r0, ;но обращаемся, как к ячейке памяти 0! inc r1 ;увеличиваем индекс в масиве нулевых next: inc r0 ;увеличиваем индекс в исходном массиве djnz r2, loop ;r2=r2-1; циклим, пока r2!=0 ;посчитаем количество нулевых clr c ;сбросим С (для subb) mov a, r1 ;адрес конца заполненного массива subb a, #array_o ;a = конец - начало - C ;в аккум количество нулевых элементов jmp $ ;задача решена, организовываем бесконечный цикл: ; крутимся на одном месте end  | Консультировал: Лысков Игорь Витальевич (Старший модератор) Дата отправки: 23.11.2013, 16:24 5 огромное спасибо! ----- Дата оценки: 23.11.2013, 19:01 | Рейтинг ответа: 0 |
Оценить выпуск | Задать вопрос экспертам главная страница | стать участником | получить консультацию техническая поддержка | восстановить логин/пароль Дорогой читатель! Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно! МЫ РАБОТАЕМ ДЛЯ ВАС! |
Комментариев нет:
Отправить комментарий