Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР1_121.doc
Скачиваний:
1
Добавлен:
20.11.2018
Размер:
114.18 Кб
Скачать

Лабораторная работа №121

1.Анализ и совершенствование демонстрационных программ

В папке misc1(c:\aduc\code\845\misc1) открыть с помощью блокнота исходный файл rotate.asm. Сохранить его в папку misc под именем rotate1.asm. По указанию преподавателя предельно упростить исходный файл до вида показанного на рис.1.

;ROTATE1.ASM

$MOD52 ; Use 8052 predefined Symbols

CSEG ;Начало сегмента кодов

; метка м н е м о н и к а ; комментарий

ORG 0000h ;0000h – адрес след.команды

MOV R2,#08H ;

MOV A,#3Ch ;

M1: RLC A ;

DJNZ R2,M1 ;

NOP ;

RR A ;

RR A ;

RR A ;

RR A ;

END

Рис.1. Исходный файл программы ROTATE1.ASM(язык ASSEMBLER)

Первые 5 команд программы ROTATE1.ASM образуют программную конструкцию «Простейший цикл» (см. рис.2). Записать программу из рис.1 в столбец В рис.2 и сопроводить команды, входящие в цикл комментариями (в терминах программной конструкции «Простейший цикл»).

В программе ROTATE1 основное действие цикла выполняется командой RLC A (сдвиг аккумулятора влево через перенос). Изобразить эту процедуру в табл.1, а также продемонстрировать действие RLC A в цикле путем заполнения 11 строк табл.2.

1.1.Теоретический анализ работы программы rotate1

Описание действия команды RLC A

Таблица 1

C

7

6

5

4

3

2

1

0

=[A]

В строке 4 (см.рис.2) может находиться любая из множества команд (28 команд) входящих в группу «Команды передачи управления по условию» (см. табл.8.5, часть 1). Все они имеют блок-схему в виде ромбика (см.поле 4А на рис.2). В программе ROTATE1 проверку: «Циклы все?» осуществляет ко-

1

Установка

начальных

параметров

цикла

М:

2

Основное

действие

цикла

М1:

3

Установка

параметров

следующего

цикла

нет

4

Проверка:

Циклы все?

DJNZ R2, M1(rel)

DEC R2, если NZ идти на М1, иначе NOP

да

5

NOP

Выход из цикла

а) блок- б)назначение в) программа г) комментарии

схема блоков

Рис.2.Программная конструкция «Простейший цикл»

для программы ROTATE1

манда DJNZ R2, rel (DEC R2(уменьшение R2 на единицу) и затем

PC<=[PC0+2]+rel^NZ). Если условие выполняется([R2]≠0, NZ=1), то

PC<=[PC0+2]+rel = М1, иначе ([R2]=0, NZ=0), PC<=[PC0+2]=адрес следующей команды. Таким образом выход из цикла происходит по нулю в R2, следовательно R2 является счетчиком циклов(т.е. в поле 1В, рис2, должна быть команда, задающая содержимое R2(число выполняемых циклов)).

Действие RLC A в цикле

Таблица 2

R2

C

7

6

5

4

3

2

1

0

[A]

Исходное до цикла

08h

0

0

0

1

1

1

1

0

0

3Ch

После 1 RLC A

После 2 RLC A

После 8 RLC A

До выполнен. NOP

Закончив все действия цикла, после команды NOP, программа (см.рис.1) выполняет 4 команды RR A. Изобразить эту процедуру в табл.3, а также продемонстрировать действие RR A путем заполнения 5 строк табл.4.

Описание действия команды RR A

Таблица 3

C

7

6

5

4

3

2

1

0

=[A]

Иллюстрация действия четырех команд RR A

Таблица 4

C

7

6

5

4

3

2

1

0

[A]

После NOP

После 1 RR A

После 2 RR A

После 3 RR A

После 4 RR A

Исходный файл находится по адресу:

c:\aduc\code\845\misc\rotate1.asm.

Запустить программу ASSEMBLER ASM51 указанием пути: c:\aduc\asm51\

asm51.exe и ответить на запрос:

Source file drive and name[.asm]: c:\aduc\code\845\misc\rotate1.asm .

При отсутствии ошибок, на черном экране мелькает надпись:

ASSEMBLY COMPLETE, 0 ERRORS FOUND

ASM51 при успешном ассемблировании в папку misc добавляет файлы с именами ROTATE1.LST(листинг) и ROTATE1.HEX (загрузочный модуль).

Открыть файл ROTATE1.LST и ознакомиться с сообщением об ошибках. При наличии ошибок, внести исправления в исходный файл и повторить процесс ассемблирования. Открыть файл ROTATE1.HEX и познакомиться с его содержимым. Сопоставляя ROTATE1.LST и ROTATE1.HEX выделить в последнем коды команд и их адреса (см.также рис.22 в раздаточном материале «часть 2»).

Запустить симулятор ADSIM и проиграть в пошаговом режиме ROTATE1.HEX, сравнивая при этом полученные теоретические результаты (см.табл.2 и 4)с практическими данными, полученными на ADSIM.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]