Лабораторные работы по курсу Спец. ЭВМ.
Для выполнения с использованием пакета Keil µVision2
Медяников А. В.



Лабораторная работа 1.




Пример Выполнения.


В ячейку программной памяти по адресу 71h занести число FEh, по адресу 43h – число CAh. После чего значение ячейки 71h переписать в регистр R0 0-го банка, а значение ячейки 43h переписать в регистр R2 3-го банка. Начало программы с адреса 714h.

Выполнение.

Для того чтобы выполнить лабораторную работу в среде разработки Ceil v 2.0 необходимо, предпринять следующие шаги :


  1. После запуска среды Ceil v 2.0 закрыть все существующие проекты, иначе могут возникнуть трудности на этапе отладки программы. Для этого в меню Project нажать Close project.





  2. 2. Создать новый проект, для чего в меню Project выбрать New Project. Высветиться окно с просьбой сохранить проект.


    После сохранения проекта высветиться диалоговое окно в котором необходимо выбрать модификацию контроллера. Необходимо выбрать Atmel -> AT89S8252.




    Если проект уже существует, то в том же меню нажать Open Project, после чего в появившемся диалоговом окне выбрать нужный проект.


  3. Создать новый файл, нажав иконку New File или в меню File – New, после чего сохранить его как Lab1.a.


3. Добавить его в проект следующим образом:



4. Настроить опции, для чего нажать пункт меню Project -> Option for target и выставить параметры как показано на рисунке


5. Набрать текст программы

$TITLE (LABA 1)

CSEG AT 0000H ; описывает начало сегмента команд

LJMP START ; переход на начало программы

ORG 0714H ; смещение на 714H адрес

START: ; метка начала программы

MOV 71H,#0FEH ; занесение первой константы в соответствующую ячейку ; памяти

MOV 43H,#0CAH ; занесение второй константы в соответствующую ячейку ; памяти

CLR psw.3 ; сброс 3-го бита регистра psw в ноль

CLR psw.4 ; сброс 4-го бита регистра psw в ноль, таким образом выбран 0-й ;банк регистров

MOV r0,71H ; занесение в регистр R0 константы из первой ячейки памяти

SETB psw.3 ; взвод 3-го бита регистра psw в единицу

SETB psw.4 ; взвод 4-го бита регистра psw в единицу, таким образом выбран ;0-й банк регистров

MOV r2,43H; занесение в регистр R0 константы из первой ячейки памяти

JMP $

END





6. Откомпилировать проект, используя иконку Build Target или меню Project -> Build Target.



7. Для отладки используется меню Debug,




Где


Step – выполнение текущей инструкции и переход на следующую.

Go – выполнение программы с текущей инструкции

Break points – меню точек останова


Для отображения окон используемых при отладки использовать меню View






Лабораторная работа 2.




Пример Выполнения.


В памяти програм с адреса ADR2 = 0D80h расположено N = 0Ch одна байтных констант. Например: 9,18,10,11,1,2,3,4,5,6,7,1

Необходимо периписать их в память данных, начиная с адреса ADR3=65Н. Программа должна начинаться с адреса ADR1 = 0F00H.


Листинг программы:


$TITLE (LABA 2)


DSEG



; Расположение констант по заданному адресу

CSEG AT 0D80H ;сегмент кода по адресу


ARR1: DB 9,18,10,11,1,2,3,4,5,6,7,1 ;массив констант




CSEG AT 0000H


LJMP START



ORG 0000H ;смещение начала программы



Start:


MOV DPTR,#0D7FH

MOV R0,#70H

MOV R1,#0CH

L1:

MOV A,R1

MOVC A,@A+DPTR

MOV @R0,A

DEC R0

DJNZ R1,L1


JMP $

END



Приложение 1.


Выполнение лабораторной в среде разработки Ceil v 2.0


Шаг 1.


Закройте существующие проекты если они открыты



Шаг 2.

Создайте новый проект

Высветиться окно с просьбой сохранить проект. После сохранения проекта высветиться диалоговое окно в котором необходимо выбрать модификацию контроллера. Необходимо выбрать Atmel -> AT89S8252.


Шаг 3.

Создайте новый файл и сохраните его с именем Laba2.a


Далее добавьте его в проект следующим образом:



Шаг 4.

Далее необходимо настроить опции, выполните пункт меню Project -> Option for target и выставите параметры как показано на рисунке







Шаг 5.

Набирите или скопируйте текст программы


Шаг 6.

Откомпилируйте проект Project -> Build Target

Шаг 7.

Для отладки проекта используйте меню Debug




Для отображения окон используемых при отладки используйте меню View


Состояние регистров отображается в окне Projecn Window



Лабораторная работа 3.




Пример Выполнения.


Пусть в памяти программ, начиная с ячейки 431h, расположена таблица кодов длиной 0Eh (Xi, I=1,2, ... 0Eh , формат - байт)

Записать в кодах МК К1816ВЕ1 программу, которая выполняет вычисление функции F =Сумма(Xi) / 0Eh над этими кодами. Результат вычисления разместить в регистр В. Программа должна начинаться с ячейки 714h.

Выполнение

$TITLE (LABA 3)

; Расположение констант по адресу 431h

CSEG AT 431H ;создание сегмента кода по нужному адресу

ARR1: DB 0Ah,18H,10H,1CH,1H,2H,3FH,4EH,54H,6H,7H,11H,73H,1H ;массив констант

CSEG AT 0000H ; начало программы

LJMP START ; переход на первый оператор

ORG 714H ; смещение кода программы на адрес 714H

Start: ; метка начала программы

MOV DPTR,#0430H ;заносим в DPTR адрес начала массив констант

MOV R0,#0EH ; заносим в R0 смещение последней константы относительно начала

MOV R1,#0 ; обнуляем R1, в дальнейшем будем его использовать для накопления ;суммы элементов массива

L1:

MOV A,R0 ;заносим в A смещение суммируемого элемента относительно начала ;массив констант

MOVC A,@A+DPTR ; заносим в аккумулятор текущий элемент массив констант

ADD A,R1 ; складываем текущий элемент с уже накопленной суммой предыдущих ;элементов из R1

MOV R1,A ;переносим новую сумму в R1

DJNZ R0,L1 ; проверяем не равно ли смещение 0, что является признаком конца ;массив, если нет то возвращаемся на метку L1. После окончания суммирования в регистре A располагается сумма значений всего массив констант

MOV B,#0EH ; Заносим в В число констант в массиве

DIV AB ; Делим А на В после чего цело численный результат деления будет ;расположен в регистре А

MOV B,A ; Переносим результат в регистр В

JMP $

END