Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Desktop / Отчет5 вар.doc
Скачиваний:
14
Добавлен:
06.02.2015
Размер:
140.29 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное образовательное учреждение

высшего профессионального образования

«Чувашский государственный университет имени И. Н. Ульянова»

Электротехнический факультет

Кафедра электрических и электронных аппаратов

Лабораторные работы по курсу

Электронные и микропроцессорные аппараты”

Работа на симуляторе 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