МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное образовательное учреждение
высшего профессионального образования
«Чувашский государственный университет имени И. Н. Ульянова»
Электротехнический факультет
Кафедра электрических и электронных аппаратов
Лабораторные работы по курсу
“Электронные и микропроцессорные аппараты”
Работа на симуляторе ADSIM микроконтроллера AduC812
Вариант 5
Выполнили:
ст. гр. ЭТ-22-01
Васильев А.Н.
Амиров А.Г.
Проверил:
доц. Гришанов В. Г.
Чебоксары 2005
Лабораторная работа 1
Пересылка массива данных
Цель работы: 1. Изучение описания Кросс-АссемблераASM51.
2. Изучение описания симулятораAdsimмикроконтроллера (МК)ADuC812.
3. На примере программы Massiv.asmизучение процессов трансляции и выполнения программы в автоматическом и пошаговом режимах.
Разработать программу пересылки массива данных в соответствии с табл.
Вариант |
Где находится исходный массив (сообщение) |
Куда пересылается массив (сообщение) |
5 |
Внутреннее ОЗУ |
Внутреннее ОЗУ |
Тест программы.
;Главная программа
;----------------------------------------------------
$MOD812
ADR_DS1 EQU 10H ;начальный адрес программы в DSEG
ADR_DS2 EQU 25H ;начальный адрес программы в DSEG
DL EQU 8 ;длина массива=8 байт
;Передача параметров в подпрограмму DS_DS
MOV R0,#ADR_DS1 ;R0=нач.адрес массива в DSEG
MOV R1,#ADR_DS2 ; R1=нач.адрес массива в DSEG
MOV R2,#DL ;R1=длина массива
LCALL DS_DS ;вызов ПП DS_DS
SJMP KONEZ ;переход в конец программы
;----------------------------------------------------
;ПП DS_DS пересылки массива из DSEG в DSEG
; R0=адрес начала массива в DSEG
; R1=адрес начало массива в DSEG
; R2=длина массива;
DS_DS:
XC: CLR A ;А=0
MOV A,@R0 ;А-очередной байт из АСС
CJNE A,#'^',M1 ;пока нет признака конца
SJMP M2
;массива продолжать пересылку
M1: MOV @R1,A ;DSEG=очередной байт
INC R0 ;следующий адрес DSEG
INC R1 ;следующий адрес DSEG
DJNZ R2, XC ;пока не все байты переданы,
;продолжить
M2: RET ;возврат из ПП
KONEZ:
END ;конец программы
Файл листинга
LYUBA1 PAGE 1
1 ;Главная программа
2 ;----------------------------------------------------
3 $MOD812
0010 4 ADR_DS1 EQU 10H ;начальный адрес программы в DSEG
0025 5 ADR_DS2 EQU 25H ;начальный адрес программы в DSEG
0008 6 DL EQU 8 ;длина массива=8 байт
7 ;Передача параметров в подпрограмму DS_DS
0000 7810 8 MOV R0,#ADR_DS1 ;R0=нач.адрес массива в DSEG
0002 7925 9 MOV R1,#ADR_DS2 ; R1=нач.адрес массива в DSEG
0004 7A08 10 MOV R2,#DL ;R1=длина массива
0006 12000B 11 LCALL DS_DS ;вызов ПП DS_DS
0009 800D 12 SJMP KONEZ ;переход в конец программы
13 ;----------------------------------------------------
14 ;ПП DS_DS пересылки массива из DSEG в DSEG
15 ; R0=адрес начала массива в DSEG
16 ; R1=адрес начало массива в DSEG
17 ; R2=длина массива;
000B 18 DS_DS:
000B E4 19 XC: CLR A ;А=0
000C E6 20 MOV A,@R0 ;А-очередной байт из АСС
000D B45E02 21 CJNE A,#'^',M1 ;пока нет признака конца
0010 8005 22 SJMP M2
23 ;массива продолжать пересылку
0012 F7 24 M1: MOV @R1,A ;DSEG=очередной байт
0013 08 25 INC R0 ;следующий адрес DSEG
0014 09 26 INC R1 ;следующий адрес DSEG
0015 DAF4 27 DJNZ R2, XC ;пока не все байты переданы,
28 ;продолжить
29
0017 22 30 M2: RET ;возврат из ПП
0018 31 KONEZ:
32 END ;конец программы
33
34
35
36
VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUND
LYUBA1 PAGE 2
ADR_DS1. . . . . . . . . . . . . NUMB 0010H
ADR_DS2. . . . . . . . . . . . . NUMB 0025H
DL . . . . . . . . . . . . . . . NUMB 0008H
DS_DS. . . . . . . . . . . . . . C ADDR 000BH
KONEZ. . . . . . . . . . . . . . C ADDR 0018H
M1 . . . . . . . . . . . . . . . C ADDR 0012H
M2 . . . . . . . . . . . . . . . C ADDR 0017H
XC . . . . . . . . . . . . . . . C ADDR 000BH
Загрузочный файл
:10000000781079257A0812000B800DE4E6B45E02C0
:080010008005F70809DAF4226B
:00000001FF