Лабораторная работа 1.
Пример Выполнения.
В ячейку программной памяти по адресу 71h занести число FEh, по адресу 43h – число CAh. После чего значение ячейки 71h переписать в регистр R0 0-го банка, а значение ячейки 43h переписать в регистр R2 3-го банка. Начало программы с адреса 714h.
Выполнение.
Для того чтобы выполнить лабораторную работу в среде разработки Ceil v 2.0 необходимо, предпринять следующие шаги :
2. Создать новый проект, для чего в меню Project выбрать New Project. Высветиться окно с просьбой сохранить проект.
После сохранения проекта высветиться диалоговое окно в котором необходимо выбрать модификацию контроллера. Необходимо выбрать Atmel -> AT89S8252.
Если проект уже существует, то в том же меню нажать Open Project, после чего в появившемся диалоговом окне выбрать нужный проект.
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