Разработка программ с использованием операций пересылки данных, сложения, способы адресации

       В изучаемом «учебном» микроконтроллере используется три вида адресации: прямая, непосредственная и косвенная.

     При прямой адресации в команде присутствует условное обозначение прямоадресуемого операнда. К прямоадресуемым относятся: аккумулятор А, регистры с R0 по R7, регистр «слово состояния процессора» PSW, таймер-счетчик Т, порты ввода-вывода BUS, P1, P2.    

Операнд может быть как источником, так и приемником. Содержимое  источника не изменяется, содержимое приемника изменяется. Например, требуется записать (скопировать) содержимое регистра R1  аккумулятор: MOV A,R1; (A)<--(R1), R1 – источник, А – приемник.

В данном случае и приемник и источник являются прямоадресуемыми операндами. Еще один пример: вывести содержимое аккумулятора в порт BUS:      OUTL BUS,A; (BUS)<--(A).

При непосредственной   адресации в качестве приемника (например, в командах пересылки данных, арифметических и логических операций) используется число, которое называется непосредственным операндом. Признак непосредственной адресации #. Таким образом, само число входит в команду. Например, требуется записать число А7Н в аккумулятор: MOV A,#A7H; (A)<--A7H.

В данном примере используется два вида адресации: непосредственная (число А7Н) и прямая (аккумулятор А). Еще один пример: записать в регистр R7  число 9ВН: MOV R7,# 9ВН; (R7)<-- 9ВН.

     К ячейкам ОЗУ можно адресоваться косвенно с помощью регистров R0  и R1. При этом необходимо чтобы один из указанных регистров содержал адрес этой ячейки. Например, перед обращением к ячейке в один из регистров записываем число, являющееся адресом ячейки, а затем обращаемся к этой ячейке. Признак косвенной адресации @. Например, требуется записать в аккумулятор содержимое ячейки с адресом 2FH:

     MOV R0,#2FH; (R0)<--2FH, в R0 записываем адрес ячейки,

     MOV A,@R0; (A)<-- ((R0)), записываем содержимое ячейки в А.

В данном примере в первой команде используется непосредственная адресация (число 2FH) и прямая (регистр R0), а во второй – косвенная (ячейка @R0) и прямая (аккумулятор А). Сочетание символов @R0 означает: содержимое ячейки, адрес которой находится в R0 или содержимое ячейки, на которую указывает R0.

     Ниже в виде кратких комментариев приводится ряд заданий по составлению коротких программ с использованием различных видов адресации, команд пересылки данных и сложения. Требуется решить задание в общем виде и «проследить» за изменением содержимого операндов (исходное содержимое операндов указывает преподаватель или задается самостоятельно). Например, требуется записать содержимое регистра R7 в ячейку 35Н (слева – решение в общем виде, справа – «отслеживание, (жирным шрифтом выделяется изменение содержимого)):

;(35Н) <-- (R7) – это задание

; это операнды: A R0 R7 35Н
; это исходное содержимое операндов: 04H ААH 8EH CEH
MOV R0,#35H; (R0) <--35H 04H 35H 8EH CEH
MOV A,R7; (А)<--(R7) 8EH 35H 8EH CEH
MOV @R0,A; ((R0))<--(A) A1H 35H 8EH 8EH

Задания к практическому занятию №1:

1) (А)<-- (R2); 2) (R7)<-- (А); 3) (R2)<--(R7); 4) (А)<--ВЕН;

5) (R0)<--3FН; 6) (20H)<-- CDН; 7) (А)<-- (30H); 8) (25H)<-- (А);

9) (20H)<--(R5); 10) (R5)<--(25H); 11) (30H)<--(20H); 12) (37H)<--1FH;

13) (R0)<-->(R4); 14) (30H)<-->(20H); 15) (R5)<--(А)+(R5); 16) (R6)<--(А)+(30H); 17) (20H)<--(30H)+(R7); 18) (22H)<--(21H)+(20H); 19) (29H)<--(30H)+5EH; 20) (20H)<--(R4)+(R5); 21) (2FH)<--(30H)+97H;

21) (A)<--(35H)+(3FH); 22) (3FH)<--(R0)+C8H; 23) (R3)<--(20H)+(A)

Практическое занятие №2


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: