Добавил:
Negorov1337@gmail.com inst:vech.no_17 Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

kniga_mikroprotsessory

.pdf
Скачиваний:
21
Добавлен:
02.10.2020
Размер:
1.06 Mб
Скачать

программы назад. Допустимое количество возвратов определяется через меню

(setUp Undo), в исходном состоянии оно равно 20 – ти.

Выполнение программы в автоматическом режиме продолжается до окончания программы или до точки останова, устанавливаемой пользователем.

Клавишами F2 (вверх) и F4 (вниз), перемещают курсор по тексту программы,

устанавливают точки останова. Клавишей F3 устанавливается динамическая точка остановки по адресу на который указывает курсор. Динамическая точка останова – точка. Остановка, которая снимается после остановки выполнения программы. Другие типы точек останова можно установить через меню (Set Breakpoint).

4.Задание на лабораторную работу

1.Изучить выводимую на дисплей ПК информацию при запуске программы симулятора назначение пунктов и подпунктов меню, правила работы с программой.

2.Задать области памяти:

- внешнюю память данных с адресами 0010Н÷00FFH; -внешнюю память программ с адресами0023÷0FFFH;

заполнить заданные область внешней памяти данных константой 37Н.

Заполнить внутреннюю память данных с адресами 100Н÷150Н

константой 0FH.

После задания области и записи в нее константы проверить правильность записи.

3. В поле программы симулятора ввести программу, сохранить её в файл,

проверить пошагово выполнение операций: MOV R0,#05H

MOV 05H,#37H

M1: MOV A,R1

MOV @R0, A

INC R0

INC R1

52

DJNZ R2,M1

M2: MOVX A,@DPTR

ADDC A,@R0

MOVX @DPTR,A

INC R0

INC DPTR

DJNZ R3,M2

RET

5.Содержание отчета

1.Последовательности введения пунктов меню при задании областей памяти и записи в них константы

2.Последовательности введения пунктов меню при вводе программы,

тестировании её и сохранении в файл.

3. Распечатку файла с программой.

6.Контрольные вопросы

1.Основные элементы структуры ОМ – ЭВМ МК – 51

2.Виды памяти, используемые программой симулятора.

3.Задание областей различных видов памяти.

4.Ввод программы в поле программ симулятора.

5.Последовательность внесения изменений в программу, в команды программы.

53

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

Тема: Программирование команд передачи данных на языке

ассемблер МК-51

Цель работы: изучение операций передачи данных микро-ЭВМ МК-51.

Указания по выполнению работы

1.Изучение команд передачи данных

Система команд языка АСМ51 содержит 111 команд, которые обеспечивают реализацию широкой номенклатуры арифметических и логических операций, а также операций пересылки данных и передачи управления. В табл.9 приведены обозначения, используемые в описании команд.

Таблица 9

Обозначение

Назначение

addr

Символическое имя вычисляемого адреса ячейки памяти

 

программ.

addr11

Символическое имя 11-битового адреса ячейки памяти

 

программ.

addr16

Символическое имя 16-битового адреса ячейки памяти

 

программ.

bit

Символическое имя 8-разрядного адреса бита в области

 

ячеек резидентной памяти данных или регистров

 

специальных функций, допускающей побитовое обращение

 

(см. рис.2).

data8

Символическое имя байта данных.

Обозначение

Назначение

data16

Символическое имя 16-битовых данных.

direct

Символическое имя 8-разрядного адреса ячейки резидентной

 

памяти данных или регистра специальных функций.

rel

Значение байта смещения, используемое при вычислении

 

адреса addr.

(X)

Содержимое элемента X.

((X))

Содержимое по адресу, хранящемуся в элементе X.

X[M]

Разряд M элемента X.

X[3-0]

Группа разрядов элемента X.

 

Оператор присваивания.

54

Обозначение

Назначение

 

 

 

 

 

Дизъюнкция.

 

 

 

 

 

Конъюнкция.

 

 

 

 

 

Сложение по модулю 2.

 

 

X Y

Целочисленное деление элемента X на элемент Y.

mod[X Y]

Остаток при целочисленном делении.

Рассмотрим команды передачи управления.

 

 

MOV A,Rn ;где n=0-7

 

 

 

 

 

 

1 1 1 0 1 r r r

 

где rrrB=000B-111B

Команда "переслать байт" выполняет загрузку аккумулятора A содержимым заданного регистра Rn выбранного банка, при этом содержимое Rn не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(A) (Rn), где n=0-7

;(A)=0FAH, (R6)=93H

 

 

MOV A,R6

 

 

;(A)=93H, (R6)=93H

MOV A,@Ri ;где i {0,1}

 

 

 

1 1 1 0 0 1 1 i

Команда "переслать байт" выполняет загрузку аккумулятора A содержимым ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистра Ri выбранного банка, при этом содержимое используемой ячейки не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

 

 

(A) ((Ri)), где i {0,1}

;(A)=0FDH, (R1)=30H, в РПД

 

(30H)=17H

 

 

 

 

 

MOV A,@R1

 

 

 

 

 

;(A)=17H, (R1)=30H, в РПД (30H)=17H

MOV A,direct

 

 

 

 

 

 

1 1 1 0 0 1

0 1

 

direct

Команда "переслать байт" выполняет загрузку аккумулятора A содержимым ячейки, 8-разрядный адрес которой определяется символическим именем direct в области резидентной памяти данных или в среде регистров специальных функций. При этом содержимое используемой ячейки не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

 

(A) (direct)

 

;(A)=24H, (DPL)=3DH

 

 

 

MOV A,DPL

 

 

 

;(A)=3DH,(DPL)=3DH

 

MOV A,#data8

 

 

 

0 1 1 1 0 1 0 0

 

data8

55

Пример
;(R5)=81H, в РПД (16H)=22H
MOV R5,16H
;(R5)=22H, в РПД (16H)=22H

Команда "переслать байт" выполняет загрузку аккумулятора A байтом данных data8, непосредственно указанным в команде, на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

 

Пример

(A) data8

 

;(A)=81H

 

 

 

 

 

MOV A,#0FFH

 

 

;(A)=0FFH

 

 

 

MOV Rn,A ;где n=0-7

 

 

где rrrB=000B-111B.

 

 

1 1 1 1 1 r r r

 

 

Команда "переслать байт" выполняет загрузку заданного регистра Rn выбранного банка содержимым аккумулятора A, при этом содержимое A не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

(Rn) (A), где n=0-7

 

;(A)=55H, (R6)=93H

 

 

MOV R6,A

 

 

;(A)=55H, (R6)=55H

MOV Rn,direct ;где n=0-7

 

 

где rrrB=000-111B.

1 0 1 0 1 r r r

direct

Команда "переслать байт" выполняет загрузку заданного регистра Rn выбранного банка содержимым ячейки, адрес которой определяется символическим именем direct в области резидентной памяти данных (РПД) или в среде регистров специальных функций. При этом содержимое используемой ячейки не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.

Алгоритм

(Rn) (direct), где n=0-7

MOV Rn,#data8 ;где n=0-7

0 1 1 1 1 r r r

data8

где rrrB=000-111B.

Команда "переслать байт" выполняет загрузку заданного регистра Rn выбранного банка байтом данных, непосредственно указанным в команде и имеющим символическое имя data8. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

 

Пример

 

(Rn) data8, где n=0-7

 

;(R2)=5DH

 

 

 

 

 

MOV R2,#0FCH

 

 

 

; (R2)=0FCH

 

 

 

MOV direct,A

 

 

 

 

 

1 1 1 1 0 1 0 1

 

direct

 

Команда "переслать байт" пересылает содержимое аккумулятора A в ячейку, адрес которой определяется символическим именем direct в области

56

резидентной памяти данных или в среде регистров специальных функций. При этом содержимое A не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

 

Пример

(direct) (A)

 

;(A)=3CH, (B)=4DH

 

 

 

MOV B,A

 

 

 

 

;(A)=3CH,(B)=3CH

 

MOV direct,Rn ;где n=0-7

 

 

 

где rrrB=000-111B.

1 0 0 0 1 r r r

 

direct

Команда "переслать байт" пересылает содержимое заданного регистра Rn выбранного банка в ячейку, адрес которой определяется символическим именем direct в области резидентной памяти данных или в среде регистров специальных функций. При этом содержимое Rn не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 2 циклa.

Алгоритм

 

 

 

Пример

 

(direct) (Rn), где n=0-7

 

;(R7)=5EH, (P1)=0FFH

 

 

 

MOV P1,R7

 

 

 

 

;(R7)=5EH, (P1)=5EH

 

MOV direct,direct

 

 

 

 

1 0 0 0 0 1 0 1

 

direct

direct

Команда "переслать байт" пересылает байт данных между двумя ячейками, расположенными в области резидентной памяти данных (РПД) или (и) в среде регистров специальных функций. Адрес ячейки-источника (ячейки-приемника) определяется вторым (первым) операндом и размещается во втором (в третьем) байте команды. Необходимо отметить, что при пересылке содержимое ячейкиисточника не изменяется. Команда на состояние флагов не влияет и выполняется за 2 циклa.

Алгоритм

 

Пример

 

 

(direct) (direct)

;в РПД (4CH)=7AH, (B)=0F4H

 

MOV 4CH,B

 

 

 

;(B)=0F4H, в РПД (4CH)=0F4H

MOV direct,@Ri ;где i {0,1}

 

 

 

 

 

 

1 0 0 0 0 1 1 i

 

direct

Команда "переслать байт" пересылает содержимое ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистра Ri выбранного банка, в ячейку, адрес которой определяется символическим именем direct в области РПД или в среде регистров специальных функций. При этом содержимое ячейки-источника не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.

57

;(P2)=33H
MOV @Ri,A ;где i {0,1} 1 1 1 1 0 1 1 i
Команда "переслать байт" пересылает содержимое аккумулятора A в ячейку резидентной памяти данных (РПД), адресуемую содержимым заданного регистра Ri выбранного банка, при этом содержимое A не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм Пример
((Ri)) (A), где i {0,1} ;(A)=11H, (R1)=25H, в РПД (25H)=48H
MOV @R1,A
;(A)=11H, (R1)=25H, в РПД (25H)=11H
MOV @Ri, direct ;где i {0,1} 1 0 1 0 0 1 1 i direct
Команда "переслать байт" загружает ячейку резидентной памяти данных (РПД), адресуемую содержимым заданного регистра Ri выбранного банка, содержимым ячейки, адрес которой определяется символическим именем direct в области РПД или в среде регистров специальных функций. При этом содержимое ячейки-источника не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.
Алгоритм Пример
((Ri)) (direct), где i {0,1} ;в РПД (55H)=31H, (R0)=55H, (TH1)=0CDH
MOV @R0,TH1
;(TH1)=0CDH, (R0)=55H, в РПД (55H)=0CDH
;(P2)=0FFH
MOV P2,#33H

Алгоритм

 

 

 

Пример

 

 

(direct) ((Ri)), где i {0,1}

 

;в РПД (6FH)=57H, (R0)=6FH,

 

 

(PSW)=0C2H

 

 

 

 

MOV PSW,@R0

 

 

 

 

;(PSW)=57H, ;(R0)=6FH, в РПД

 

 

(6FH)=57H

 

 

 

MOV direct,#data8

 

 

 

 

 

0 1 1 1 0 1 0 1

 

direct

data8

Команда "переслать байт" копирует байт данных, непосредственно указанный в команде и имеющий символическое имя data8, в ячейку, адрес которой определяется символическим именем direct в области резидентной памяти данных или в среде регистров специальных функций. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.

Алгоритм Пример

(direct) data8

MOV @Ri,#data8 ;где i {0,1}

0 1 1 1 0 1 1 i

data8

58

Команда "переслать байт" копирует байт данных data8, непосредственно указанный в команде, в ячейку резидентной памяти данных (РПД), адресуемую содержимым заданного регистра Ri выбранного банка. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

Пример

 

((Ri)) data8, где i {0,1}

 

;(R1)=53H, в РПД (53H)=86H

 

 

 

MOV @R1,#77H

 

 

 

;(R1)=53H, в РПД (53H)=77H

 

MOV C,bit

 

 

 

 

1 0 1 0 0 0 1 0

 

bit

Команда "переслать бит" загружает флаг переноса C содержимым бита, 8- разрядный адрес которого определяется символическим именем bit в области ячеек резидентной памяти данных (либо регистров специальных функций), допускающей побитовое обращение. Команда на состояние других флагов, а также используемого бита не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

 

(C) (bit)

;(C)=0, (P1[4])=1

 

 

 

MOV C,P1.4

 

 

 

;(C)=1, (P1[4])=1

 

MOV bit,C

 

 

 

 

 

1 0 0 1 0 0 1 0

 

bit

Команда "переслать бит" копирует содержимое флага переноса C в бит, 8- разрядный адрес которого определяется символическим именем bit в области ячеек резидентной памяти данных (РПД) или регистров специальных функций, допускающей побитовое обращение. Команда имеет время выполнения 2 цикла и на состояние флагов не влияет, за исключением случая, когда флаг является операндом-приемником.

Алгоритм

 

 

Пример

 

 

(bit) (C)

 

;в РПД (22H)=0D0H, (C)=1

 

 

MOV 10H,C

 

 

 

 

;(C)=1, в РПД (22H)=0D1H

MOV DPTR,#data16

 

 

 

 

1 0 0 1 0 0 0 0

data16[15-8]

data16[7-0]

Команда "переслать два байта" загружает указатель данных DPTR 16-битовой константой data16, непосредственно указанной в команде, причем содержимое второго и третьего байтов команды загружается соответственно в старший (DPH) и младший (DPL) байты DPTR. Команда на флаги не влияет и имеет время выполнения 2 цикла.

Алгоритм

Пример

(DPTR) data16

;(DPH)=23H, (DPL)=0DFH

 

MOV DPTR,#1234H

 

;(DPH)=12H, (DPL)=34H

59

MOVC A,@A+DPTR

1 0 0 1 0 0 1 1

Команда "переслать байт" загружает аккумулятор A содержимым ячейки памяти программ (ПП), причем адрес используемой ячейки вычисляется как сумма исходного содержимого A и содержимого 16-битового указателя данных DPTR. Таким образом, в указанной пересылке может участвовать любая ячейка из памяти программ объемом до 64 Кбайт. Содержимое DPTR не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.

Алгоритм

 

Пример

 

(A) ((A)+(DPTR))

;(A)=01H, (DPTR)=30FFH, в ПП

 

 

(3100H)=22H

 

 

MOVC A,@A+DPTR

 

 

;(A)=22H, ;(DPTR)=30FFH

 

MOVC A,@A+PC

 

 

 

1 0 0 0 0 0 1 1

 

Команда "переслать байт" загружает в аккумулятор A содержимое ячейки памяти программ (ПП), причем адрес используемой ячейки вычисляется как сумма исходного содержимого A и содержимого программного счетчика PC, которое увеличено на единицу. Таким образом, в указанной пересылке может участвовать любая ячейка из памяти программ объемом до 64 Кбайт. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.

Алгоритм

 

Пример

(A) ((A)+(PC)+1)

;(A)=11H, (PC)=2300H, в ПП

 

(2312H)=44H

 

MOVC A,@A+PC

 

;(A)=44H, (PC)=2301H

MOVX A,@Ri ;где i {0,1}

 

 

 

1 1 1 0 0 0 1 i

Команда "переслать байт" выполняет загрузку аккумулятора A содержимым ячейки внешней памяти данных (ВПД), адресуемой содержимым заданного регистра Ri выбранного банка, при этом содержимое используемой ячейки не изменяется. Команда на состояние флагов не влияет, имеет время выполнения 2 цикла и обеспечивает доступ к ВПД объемом до 256 байт.

Алгоритм

Пример

(A) ((Ri)), где i {0,1}

;(A)=0CCH, (R0)=44H, в ВПД (44H)=3EH

 

 

MOVX A,@R0

 

 

;(A)=3EH, (R0)=44H, в ВПД (44H)=3EH

MOVX A,@DPTR

 

 

 

1 1 1 0 0 0 0 0

Команда "переслать байт" выполняет загрузку аккумулятора A содержимым ячейки внешней памяти данных (ВПД), адресуемой содержимым 16-битового указателя данных DPTR, при этом содержимое используемой ячейки не изменяется. Команда на состояние флагов не влияет, имеет время выполнения 2 цикла и обеспечивает доступ к ВПД объемом до 64 Кбайт.

60

Алгоритм

Пример

(A) ((DPTR))

;(A)=76H, (DPTR)=6D44H, в ВПД

 

 

(6D44H)=88H

 

 

MOVX A,@DPTR

 

 

;(DPTR)=6D44H, (A)=88H, в ВПД

 

 

(6D44H)=88H

MOVX @Ri,A ;где i {0,1}

 

 

 

1 1 1 1 0 0 1 i

Команда "переслать байт" копирует содержимое аккумулятора A в ячейку внешней памяти данных (ВПД), адресуемую содержимым заданного регистра Ri выбранного банка. Команда на состояние флагов не влияет, имеет время выполнения 2 цикла и обеспечивает доступ к ВПД объемом до 256 байт.

Алгоритм

Пример

((Ri)) (A), где i {0,1}

;(A)=0C6H, (R1)=22H, в ВПД (22H)=33H

 

 

MOVX @R1,A

 

 

;(A)=0C6H, (R1)=22H, в ВПД (22H)=0C6H

MOVX @DPTR,A

 

 

 

1 1 1 1 0 0 0 0

Команда "переслать байт" копирует содержимое аккумулятора A в ячейку внешней памяти данных (ВПД), адресуемую содержимым 16-битового указателя данных DPTR. Команда на состояние флагов не влияет, имеет время выполнения 2 цикла и обеспечивает доступ к ВПД объемом до 64 Кбайт.

Алгоритм

Пример

((DPTR)) (A)

;(A)=55H, (DPTR)=1234H, в ВПД

 

(1234H)=11H;

 

MOVX @DPTR,A

 

;(DPTR)=1234H, (A)=55H, в ВПД

 

(1234H)=55H

2.Задание на лабораторную работу

Изучить команды передачи данных и выполнить примеры, приведенные

для каждой команды при помощи симулятора, сохранить результаты в файл.

Примеры приведены в следующем формате

Пример

;состояние регистров и ячеек памяти до выполнения команды* КОМАНДА (этап выполнения)** ;состояние регистров и ячеек памяти после выполнения команды***

61

Соседние файлы в предмете Информатика