Курсовая работа по машинным языкам вариант 1. Вариант 1. Курсовая работа по дисциплине Машинные языки программирования
Скачать 169.5 Kb.
|
Министерство образования и науки Российской Федерации. Федеральное агентство по образованию. Государственное образовательное учреждение высшего профессионального образования. Магнитогорский государственный технический университет им. Носова Г. И. Кафедра электроники и микроэлектроники. Курсовая работа по дисциплине «Машинные языки программирования» вариант №1. Выполнил студент группы АП-03 Фамилия И.О. Проверил к.т.н., доцент кафедры Э и Мэ Швидченко Д.В. Магнитогорск 2005 Оглавление Анализ поставленной задачи. 4 Подробная блок-схема алгоритма решения задачи. 5 Описание программы на языке ассемблера и в машинных кодах МП КР580МП80А. 8 Вывод. 10 Литература 11 Анализ поставленной задачи.Рассчитать контрольную сумму ПЗУ с адреса 0000h по адрес 0100h. Учитывать перенос в старший бит. Предусмотреть возможность переноса программы в адресном пространстве. Определить количество ячеек, в седьмом бите которых записан «0». Формат чисел:
Для правильного нахождения контрольной суммы понадобится два регистра, так как даже если во всех ячейках массива будет записано число FFh, то контрольная сумма составит FFh*FFh=FE01h. Чтобы учесть перенос в старший бит, удобно воспользоваться сложением содержимого регистровых пар, так как в этих командах предусмотрен автоматический учёт переноса в старший бит. При этом в младший байт регистровой пары ВС будет загружаться текущее число массива, а старший байт необходимо обнулить в начале программы. Для подсчёта количества ячеек, в которых седьмой бит содержит «0», будем использовать ячейку памяти с адресом 0805h, так как все регистры заняты. Для удобства задания адресного пространства адрес первой и последней ячейки памяти массива будут находиться в ячейках памяти с адресами 0800h-0803h. Регистровая пара ВС используется для хранения содержимого текущей ячейки памяти массива. Регистровая пара DE содержит адрес ячейки памяти массива. В регистровой паре HL находится контрольная сумма. Подробная блок-схема алгоритма решения задачи.В начале программы в регистровую пару DE загружается адрес первой ячейки памяти для подсчёта контрольной суммы (блок 1). Далее обнуляется содержимое регистровой пары HL (контрольная сумма), содержимое регистра В, содержимое ячейки памяти с адресом 0805h – счётчик количества ячеек памяти с нулевым седьмым битом (блок 2). Затем содержимое регистровой пары DE декрементируется (блок 3). Это необходимо сделать для того, чтобы была правильно проведена проверка на последнюю ячейку памяти задаваемого массива. В блоке 4 содержимое регистровой пары DE инкрементируется. После этого в аккумулятор загружается содержимое ячейки массива (блок 5). Содержимое аккумулятора сдвигается влево и проверяется значение седьмого бита в блоке 6. Если в седьмом бите записано «0», то выполняется инкремент счётчика (блок 7). В противном случае сразу выполняется загрузка содержимого текущей ячейки массива (блок 8). Затем текущее число загружается в регистр С (блок 9). Далее суммируется содержимое регистровых пар HL и BC (блок 10). Так как в начале программы содержимое регистра В обнуляется, ошибки при нахождении контрольной суммы не будет. В блоке 11 проверяется адрес текущей ячейки массива с адресом последней ячейки массива. Если текущая ячейка памяти не последняя, то выполняется переход к блоку 4. Иначе полученная контрольная сумма записывается в ячейки памяти с адресами 0806h, 0807h (блок 12) и программа завершает свою работу. Описание программы на языке ассемблера и в машинных кодах МП КР580МП80А.Таблица 1
Вывод.В ходе выполнения курсовой работы, была написана тест-программа ОЗУ для процессора МП КР580ВМ80А, позволяющая в заданном адресном пространстве найти контрольную сумму и количество ячеек, в седьмом бите которых записано «0». Для расширения диапазона проверяемой адресного пространства адрес первой и последней ячеек памяти массива загружаются из ячеек памяти с адресами 0800h – 0803h. При этом для правильного нахождения контрольной суммы диапазон ячеек проверяемой памяти не должен быть больше 257 ячеек памяти. Для переноса программы в адресном пространстве необходимо будет изменить адреса меток М1 и М2. Для нахождения количество ячеек, в седьмом бите которых записано «0», используется ячейка памяти. Если во всех ячейках массива в седьмом бите будет «0», то число таких ячеек не превысит 256, что составляет ёмкость одного байта. Поэтому ошибки при подсчёте таких ячеек памяти не будет. Ответ выводится в ячейки памяти 0805h-0807h. В ячейке с адресом 0805h находится количество ячеек, в седьмом бите которых записано «0». Младший байт контрольной суммы записывается в ячейку памяти с адресом 0806h, а старший байт – в ячейку памяти с адресом 0807h. ЛитератураТокхайм Р. “Микропроцессоры : курс и упражнения.”- М.: Энергоатомиздат, 1989. Курс лекций по дисциплине “Машинные языки программирования”. |