Материал: kniga_mikroprotsessory

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Алгоритм

Пример

 

 

 

(A[M]) (A[M+1]), где M=0-6

;(A)=85H, (C)=1

(A[7]) (A[0])

RR A

 

 

RR A ;(A)=61H, (C)=1

 

 

 

RRC A

 

 

 

0 0 0 1 0 0 1 1

 

 

 

Команда "сдвиг аккумулятора вправо через флаг переноса" сдвигает содержимое аккумулятора A на один бит вправо, причем содержимое бита 0

аккумулятора пересылается во флаг переноса C, а содержимое C - в бит 7

аккумулятора. Команда на состояние других флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

 

 

(A[M]) (A[M+1]), где M=0-6

;(A)=85H, (C)=0

(A[7]) (С), (С) (A[0])

RRC A ;(A)=42H, (C)=1

 

 

SETB C

1 1 0 1 0 0 1 1

 

 

Команда "установить бит" устанавливает содержимое флага переноса C в "1".

Команда на состояние других флагов не влияет и имеет время выполнения 1

цикл.

Алгоритм

 

 

 

Пример

 

 

 

 

 

 

(C) 1

 

;(C)=0

 

 

 

 

SETB C ;(C)=1

 

 

 

 

 

 

 

 

SETB bit

 

 

 

 

1 1 0 1 0 0 1 0

 

bit

 

 

 

 

 

 

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

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

Алгоритм

Пример

 

 

(bit) 1

;(P2)=38H

 

SETB P2.0 ;(P2)=39H

 

 

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

1 0 0 1 1 r r r

где rrrB=000B-111B.

 

 

 

Команда "вычитание с заемом" вычитает содержимое заданного регистра Rn

выбранного банка вместе с содержимым флага переноса С из содержимого аккумулятора A, помещая результат в A. Содержимое используемого регистра не изменяется. При появлении заема в разрядах 7 и 3 аккумулятора устанавливаются в "1" флаг переноса C и флаг дополнительного переноса AC

соответственно, в противном случае эти флаги сбрасываются в "0".

Содержимое флага переполнения OV устанавливается, если есть заем в бите 6 и

нет заема в бите 7, или есть заем в бите 7 и нет - в бите 6, в противном случае флаг OV сбрасывается. Время выполнения команды 1 цикл.

 

Алгоритм

 

Пример

 

 

 

 

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

 

;(A)=0C9H, (R2)=54H, (C)=1

(С) x,

(OV) =x,

(AC) =x,

где

SUBB A,R2 ;(A)=74H,(R2)=54H,

x {0,1}

 

 

 

;(AC)=0, (C)=0, (OV)=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 0 0 1 0 1 1 i

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

 

 

 

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

как у рассмотренной выше команды с аналогичной мнемоникой.

83

Алгоритм

 

 

Пример

 

 

 

 

 

 

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

 

;(A)=49H, (R0)=3AH,

(С) x, (OV) =x, (AC) =x, где x {0,1}

;в РПД (3AH)=68H, (C)=1

 

 

 

SUBB A,@R0 ;(A)=0E0H,

 

 

 

;(AC)=0, (C)=1, (OV)=0

 

 

 

 

 

 

SUBB A,direct

 

 

 

 

 

1 0 0 1 0 1 0 1

direct

 

 

 

 

 

 

Команда "вычитание с заемом" вычитает из содержимого аккумулятора A

содержимое флага переноса С вместе с содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именем direct. Результат помещается в A. Содержимое используемой ячейки или используемого регистра не изменяется. Логика установки (сброса) флагов и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.

 

Алгоритм

 

 

Пример

 

 

 

 

 

 

(A) (A)-(C)-(direct)

 

 

 

;(A)=97H, (C)=0, (B)=25H

(С) x,

(OV) =x,

(AC) =x,

где

SUBB A,B ;(A)=72H, (B)=25H,

x {0,1}

 

 

 

 

;(AC)=0, (C)=0, (OV)=1

 

 

 

 

 

 

SUBB A,#data8

 

 

 

 

 

 

1 0 0 1 0 1 0 0

data8

 

 

 

 

 

 

 

Команда "вычитание с заемом" вычитает содержимое флага переноса С вместе с байтом данных data8, непосредственно указанным в команде, из содержимого аккумулятора A, помещая результат в A. Логика установки (сброса) флагов и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.

Алгоритм

Пример

 

 

84

1 1 0 0 0 1 1 i

(A) (A)-(C)-data8

;(A)=0BEH, (C)=0

(С) x, (OV) =x, (AC) =x, где x {0,1}

SUBB A,#3FH ;(A)=7FH,

 

 

;(AC)=1, (C)=0, (OV)=1

 

 

 

 

SWAP A

 

 

 

 

1 1 0 0 0 1 0 0

 

 

 

 

 

Команда "обмен тетрадой" осуществляет обмен содержимым младших четырех и старших четырех битов аккумулятора A. Команда на флаги не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

 

 

(A[3-0]) (A[7-4])

;(A)=49H

(A[7-4]) (A[3-0])

SWAP A ;(A)=94H

 

 

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

1 1 0 0 1 r r r

где rrrB=000B-111B.

 

 

 

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

содержимым заданного регистра Rn выбранного банка. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

 

 

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

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

(Rn) (A)

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

 

 

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

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

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

Алгоритм

Пример

 

 

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

;(A)=0FDH, (R1)=30H,

((Ri)) (A)

;в РПД (30H)=17H

 

XCH A,@R1 ;(A)=17H, (R1)=30H,

 

 

85

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

XCH A,direct

1 1 0 0 0 1 0 1

direct

 

 

 

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

содержимым ячейки, адрес которой определяется символическим именем direct

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

цикл.

Алгоритм

Пример

 

 

 

 

 

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

(A) (direct)

 

 

(direct) (A)

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

 

 

;(DPL)=24H

 

 

 

 

 

 

 

 

 

 

1 1 0 1 0 1 1 i

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

 

 

 

Команда "обмен тетрадой" выполняет обмен содержимого младшей тетрады

(биты 3-0) аккумулятора A с содержимым младшей тетрады ячейки резидентной памяти данных (РПД), при этом содержимое старших тетрад A и

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

выбранного банка, не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

 

 

 

 

 

(A[3-0]) ((Ri))[3-0], где i {0,1}

 

;(A)=0FDH, (R1)=30H,

((Ri))[3-0] (A[3-0])

 

;в РПД (30H)=17H

 

 

 

XCHD A,@R1 ;в РПД (30H)=1DH,

 

 

 

;(A)=0F7H, (R1)=30H

 

 

 

 

 

 

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

 

 

 

где rrrB=000B-111B.

 

0 1 1 0 1 r r r

 

 

 

 

 

 

 

Команда "логическое ИСКЛЮЧАЮЩЕЕ ИЛИ" выполняет поразрядное сложение по модулю 2 содержимого аккумулятора A с содержимым заданного

86

Источник: https://studfile.net/preview/15934500/