Группа команд передачи данных

Большую часть команд данной группы составляют команды передачи и обмена байтов. Команды пересылки бит представлены в группе команд битовых операций. Все команды данной группы не модифицируют флаги результата, за исключением команд загрузки PSW и аккумулятора (флаг паритета).

Структура информационных связей. В зависимости от способа адресации и места расположения операнда можно выделить девять типов операндов, между которыми возможен информационный обмен. Граф возможных операций передачи данных показан на рис. 21. Аккумулятор (А) представлен на этом графе отдельной вершиной, так как многие команды используют неявную (подразумеваемую) адресацию.

Группа команд передачи данных - student2.ru

Рис 21. Граф путей передачи данных в МК51

В отличие от МК48 передачи данных в МК51 могут выполняться без участия аккумулятора.

Аккумулятор. В отличие от МК48 обращение к аккумулятору может быть выполнено в МК51 с использованием неявной и прямой адресации.

В зависимости от способа адресации аккумулятора применяется одно из символических имен: А или АСС (прямой адрес). При прямой адресации обращение к аккумулятору производится как к одному из РСФ, и его адрес указывается во втором байте команды.

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

Обращение к внешней памяти данных. Режим косвенной адресации ВПД, имеющийся в МК48, реализован так же и в МК51. При использовании команд MOVX

@Ri обеспечивается доступ к 256 байтам внешней памяти данных.

Существует также режим обращения к расширенной ВПД, когда для доступа используется 16–битный адрес, хранящийся в регистре–указателе данных (DPRT). Команды MOVX @DPTR обеспечивают доступ к 65 536 байтам ВПД.

Группа команд арифметических операций

Данную группу образуют 24 команды, выполняющие операции сложения, десятичной коррекции, инкремента/декремента байтов. Дополнительно по сравнению с МК48 введены команды вычитания, умножения и деления байтов.

Команды АDD и ADDC аналогичны командам сложения МК48, но допускают сложение аккумулятора с большим числом операндов. Аналогично командам ADDC существуют четыре команды SUBB, что позволяет более просто, чем в МК48, производить вычитание байтов и многобайтных двоичных чисел. В МК51 реализуется расширенный (по сравнению с МК48) список команд инкремента/декремента байтов, введена команда инкремента 16-битного регистра-указателя данных.

Команда M U L.

По команде M U L

- содержимое аккумулятора умножается на содержимое регистра B;

- результат записывается в регистровую пару AB (младший байт – в регистр A, старший – в регистр B);

- триггер признака переноса (C) устанавливается в состояние "0";

- триггер признака переполнения (OV) - в состояние "0", если старший байт результата равен нулю, или в состояние "1", в противном случае.

Операнды команды рассматриваются, как порядковые числа.

Код Инструкция Алгоритм Время
MUL AB (A) : (B) := (A) * (B) (C) := 0 если (AB) > 255 то (OV) := 1 иначе (OV) := 0 все (P) := 0\1

пример выполнения команды:

; (A) = 50H, (B) = 0A0H

метка: MUL AB

; (B) : (A) Ü 3200H

; (C) Ü 0, (OV) Ü 0, (P) Ü 1

Команда D I V.

По команде D I V

- содержимое аккумулятора (делимое) делится на содержимое регистра B (делитель) ;

- целая часть результата (частное) записывается в аккумулятор, остаток от деления - в регистр B;

- триггер признака переноса (C) устанавливается в состояние "0";

- триггер признака переполнения (OV) устанавливается в состояние "1", если делитель в регистре B равно нулю, в противном случае - в состояние "0";

Операнды команды рассматриваются, как порядковые числа.

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


Код Инструкция Алгоритм Время
DIV AB если (B) = 0 то (OV) := 1 иначе (OV) := 0 Все (TMP) := (A) / (B) (B) := (A) мод (B) (A) := (TMP) (C) := 0 (P) := 0\1

пример выполнения команды:

; (A) = 0FBH, (B) = 12H

метка: DIV AB

; (A) Ü 0DH и (B) Ü11H, так как 0FBH=0DH*12H+11H

; (C) Ü 0, (OV) Ü 0, (P) Ü 0

Наши рекомендации