Машинные языки

Автор: Пользователь скрыл имя, 07 Марта 2013 в 06:20, курсовая работа

Описание работы

Максимальное число проверяемых ячеек памяти равно 257. В каждой ячейки памяти может быть одновременно не больше трёх сочетаний «101. Отсюда следует, что максимальное количество сочетаний «01» в тестируемом адресном пространстве составляет 257*3=771 или 303h. Значит, для ответа потребуется две ячейки памяти.

Содержание

1. Анализ поставленной задачи . ............................................................................... 3
2. Разработка блок-схемы поставленной задачи. ..................................................... 4
3. Разработка программы. ........................................................................................... 7
4. Вывод. ....................................................................................................................... 9
5. Список используемой литературы. ....................................................................... 10

Работа содержит 1 файл

курсач МАШЯЗ.docx

— 84.67 Кб (Скачать)

Министерство образования и  науки Российской Федерации.

Государственное образовательное  учреждение высшего профессионального образования

ГОУ ВПО «Магнитогорский государственный технический университет

им. Г. И. Носова »

 

 

Кафедра электроники и микроэлектроники.

 

 

 

 

 

 

 

Курсовая работа

по дисциплине «Машинные языки  программирования»

вариант №44.

Выполнил:          студент группы АП-08

 Вахтеров М.В.

 

 

   Проверил:                    д.т.н., профессор

Лукьянов  С.И.

 

 

 

 

 

 Магнитогорск

2010

 

Содержание:

1. Анализ поставленной задачи  .  ............................................................................... 3

2. Разработка блок-схемы поставленной  задачи.  ..................................................... 4

3. Разработка программы.  ........................................................................................... 7

4. Вывод.  ....................................................................................................................... 9

5. Список используемой литературы.  ....................................................................... 10

1. Анализ поставленной задачи.

Подсчитать  число сочетаний «101» в адресном пространстве 0000h – 0100h. Начальный и конечный адрес должны находиться в ячейках памяти 0800h, 0801h и 0802h, 0803h соответственно. Например:

 

 

1 сочетание


3 сочетание


2 сочетание




 

1

0

1

0

1

1

0

1

Модуль числа


 

 

Максимальное число проверяемых  ячеек памяти равно 257. В каждой ячейки памяти может быть одновременно не больше трёх сочетаний «101. Отсюда следует, что максимальное количество сочетаний  «01» в тестируемом адресном пространстве составляет 257*3=771 или 303h. Значит, для ответа потребуется две ячейки памяти.

В ячейки памяти возможно шесть вариантов расположения сочетания «101». Для определения сочетания, после загрузки содержимого ячейки памяти в аккумулятор, накладывается маска на содержимое аккумулятора, выделяющая только три бита, а потом результат сравнивается с сочетанием «101». Если сочетание «101» есть, то счётчик сочетаний инкрементируется. Иначе проверяются следующие три бита. Таким образом, проверяются все шесть возможных комбинаций в цикле.

После проверки всех ячеек  памяти количество сочетаний «101» выводится в ячейки памяти с адресами 0900h и 0901h. 

Регистровая пара ВС используется для маскирования. Регистр D - для подсчёта количества сочетаний «101», регистр Е – счётчик прохождения тела цикла. В регистровой паре HL  содержится адрес текущей ячейки памяти.

Перед началом основной программы необходимо обнулить содержимое регистра D и ячеек памяти с адресами 0900h и 0901h.

Программа будет храниться  в адресном пространстве, начиная  с ячейки памяти 080Сh.

 

 

2. Разработка блок-схемы поставленной задачи.

 

Начало

А

Обнуление счётчика сочетаний  «101»

Загрузка начального адреса в регистровую пару HL

(Е)←06, (ВС)←A0E0

(А)←M(HL), (A)←(A)^(C)

(A)=(B)

Увеличение счетчика сочетаний  «101» на 1

Сдвиг содержимого регистров В и С вправо

(Е)-1=0?

1

Да

Нет

Да

Нет

1

2

3

4

5

6

7

8

                   Рисунок 1. Блок-схема программы (начало) 

А

Конец

1

Да

Нет

Ячейка памяти последняя?

Вывод содержимого регистра D в ячейку памяти с адресом 0900h

(HL)←(HL)+1

9

11

10

Рисунок 1. Блок-схема программы (окончание)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Как видно  из рисунка 1, программа состоит из 11 блоков.

В начале данной программы обнуляется счётчик сочетаний «101» - регистр D (блок 1). Затем в регистровую пару HL загружается адрес первой ячейки тестируемой памяти из ячеек памяти с адресами 0800h, 0801h (блок 2). Далее в регистр Е загружается число прохождения тела цикла, а в регистры В и С записываются маски для определения наличия сочетания «101» (блок 3).

Затем в аккумулятор загружается содержимое ячейки памяти, адрес которой находится в регистровой паре HL. С помощью маски, находящейся в регистре С обнуляются пять битов содержимого аккумулятора (при первом прохождении тела цикла ими являются биты с нулевого по четвертый) – блок 4. В блоке 5 проверяется равенство между тремя тестируемыми битами и сочетанием «101» (сравнивается содержимое аккумулятора и регистра (B). Если биты представляют собой сочетание «101», то счётчик этих сочетаний инкрементируется (блок 6). В противном случае выполняется сразу переход к блоку 7 – содержимое регистров В и С сдвигается вправо для тестирования следующих трех битов. Следом содержимое регистра Е декрементируется и проверяется равен ли он нулю (блок 8). Если содержимое регистра Е не равно нулю, то выполняется переход к блоку 4.

Иначе осуществляется переход к блоку 9, в котором  проверяется, не последняя ли текущая  ячейка памяти. Для этого сравнивается содержимое регистровой пары HL и адрес последней тестируемой ячейки памяти, находящийся в ячейках памяти с адресами 0802h, 0803h. Если ячейка памяти последняя, то содержимое регистра D выводится в ячейку памяти с адресом 0900h (блок 10). После этого программа завершает свою работу.

В ином случае содержимое регистровой пары инкрементируется (блок 11) и далее выполняется переход к блоку 3.

 

 

 

3. Разработка программы

                                                                                                                              Таблица 1

Описание программы на языке  ассемблера и в машинных кодах

Метка

Адрес

Данные

Ассемблер

Мнемоника

Комментарий

 

080C

080D

3E

00

MVI A,00

(A)←00

Загрузка в аккумулятор числа 00h

 

080E

080F

0810

32

01

09

STA 0901

M(0901)←(A)

Обнуление содержимого ячейки памяти с адресом 0901h

 

0811

57

MOV D,A

(D)←A

Обнуление счётчика сочетаний «101»

 

0812

0813

0814

2A

00

08

LHLD 0800

(L)←M(0800)

(H)←M(0801)

Загрузка в регистровую пару HL адреса первой ячейки

M5

0815

0816

1E

06

MVI E,06

(E)←06

Загрузка в регистр Е числа 06h

 

0817

0818

0819

01

E0

A0

LXI B, A0E0

(BC)← A0E0

Загрузка в регистровую пару ВС числа A0E0h

M2

081A

7E

MOV A,M

(A)←M(HL)

Загрузка в аккумулятор содержимого  ячейки памяти, адрес которой находится  в регистровой паре HL

 

081B

A1

ANA C

(A)←(A)^(C)

Логическое умножение содержимого  аккумулятора и содержимого регистра С

 

081C

B8

CMP B

Z=1 if (A)=(B)

Сравнение содержимого аккумулятора и регистра В

 

081D

081E

081F

C2

2B

08

JNZ M1

JMP if Z=0

Переход на метку М1, если нет сочетания «101»

 

0820

14

INR D

(D)←(D)+1

Инкремент содержимого регистра D

 

0821

0822

0823

C2

2B

08

JNZ M1

JMP if Z=0

Переход на метку М1, если регистр D не переполнен

 

0824

0825

0826

3A

01

09

LDA 0901

(A)←M(0901)

Загрузка содержимого ячейки памяти с адресом 0901h в аккумулятор

 

0827

3C

INR A

(A)←(A)+1

Инкремент содержимого аккумулятора

 

0828

0829

082A

32

01

09

STA 0901

M(0901)←(A)

Запись содержимого аккумулятора в ячейку памяти с адресом 0901h

M1

082B

78

MOV A,B

(A)←(B)

Запись в аккумулятор содержимого  регистра В

 

082C

0F

RRC

 

Сдвиг вправо содержимого аккумулятора

 

082D

47

MOV B,A

(B)←(A)

Загрузка в регистр В содержимого аккумулятора

 

                              Продолжение таблицы 1

Метка

Адрес

Данные

Ассемблер

Мнемоника

Комментарий

 

082E

79

MOV A,C

(A)←(C)

Запись в аккумулятор содержимого  регистра С

 

082F

0F

RRC

 

Сдвиг вправо содержимого аккумулятора

 

0830

4F

MOV C,A

(C)←(A)

Загрузка в регистр С содержимого аккумулятора

 

0831

1D

DCR E

(E)←(E)-1

Декремент содержимого регистра Е

 

0832

0833

0834

C2

1A

08

JNZ M2

JMP if Z=0

Переход на метку М2, если содержимое регистра Е не равно нулю

 

0835

0836

0837

3A

02

08

LDA 0802

(A)←M(0802)

Загрузка в аккумулятор младшего байта адреса последней ячейки

 

0838

BD

CMP L

Z=1 if (A)=(L)

Сравнение содержимого регистра L с содержимым аккумулятора

 

0839

083A

083B

C2

43

08

JNZ M3

JMP if Z=0

Переход на метку М3, если содержимое регистра L не равно содержимому аккумулятора

 

083C

083D

083E

3A

03

08

LDA 0803

(A)←M(0803)

Загрузка в аккумулятор старшего байта адреса последней ячейки

 

083F

BC

CMP H

Z=1 if (A)=(H)

Сравнение содержимого регистра Н  с содержимым аккумулятора

 

0840

0841

0842

CA

47

08

JZ M4

JMP if Z=1

Переход на метку М4, если содержимое регистра Н равно содержимому аккумулятора

M3

0843

23

INX H

(HL)←(HL)+1

Инкремент содержимого регистровой  пары HL

 

0844

0845

0846

C3

15

08

JMP M56

 

Безусловный переход на метку М5

M4

0847

7A

MOV A,D

(A)←(D)

Загрузка в аккумулятор содержимого  регистра D

 

0848

0849

084A

32

00

09

STA 0900

M(0900)←(A)

Запись в ячейку памяти с адресом 0900h содержимого аккумулятора

 

084B

FF

RST 7

 

Завершение программы


 

 

4. Вывод.

 

В ходе выполнения курсовой работы, была написана программа, позволяющая подсчитать количество сочетаний «101» в заданном адресном пространстве.

Достоинства: если необходимо подсчитать количество других сочетаний из трех байт, то достаточно изменить маску, загружаемую в регистр В, а так же само сочетание (регистр С). Так же возможно тестирование другого адресного пространства, включая ячейки памяти с адресами 0000h – FFFFh.   

Недостатки: программа позволяет подсчитать количество сочетаний «101» только внутри определенной ячейки.

Для того , чтобы программа считала сочетания и на стыке двух ячеек необходимо усовершенствование , а именно подсчитывать количество этих   сочетаний с помощью регистра состояния.

Ответ записывается в две ячейки памяти с адресами 0900h-0901h. Причем в ячейку памяти с адресом 0900h – младший байт, а в ячейку памяти с адресом 0901h – старший байт. Программа располагается в адресном пространстве 080Сh-084Вh.

 

5. Список используемой литературы.

      1.   Токхайм Р. «Микропроцессоры: курс и упражнения»;

    

      2. Курс лекций по дисциплине «Машинные языки программирования».

 




Информация о работе Машинные языки