
- •1. Система команд и программная модель
- •1 Мл. Ст. Мл. Ст. .2. Таблица шестнадцатеричных кодов команд мк семейства mcs-51
- •2. Операции с кодами
- •3. Сложение шестибайтных чисел без знака
- •3.2. Программа
- •4. Программирование параллельного интерфейса кр580вв55 и таймера кр580вв53
- •4.1. Логические схемы:
- •4.2. Управляющие слова:
- •4.3. Пример программы настройки счётчика
2. Операции с кодами
2.1. А = 110, В = 70
Перевод из десятичной системы счисления в двоичную:
110 / 2 = 55, остаток 0 70 / 2 = 35, остаток 0
55 / 2 = 27, остаток 1 35 / 2 = 17, остаток 1
27 / 2 = 13, остаток 1 17 / 2 = 8, остаток 1
13 / 2 = 6, остаток 1 8 / 2 = 4, остаток 0
6 / 2 = 3, остаток 0 4 / 2 = 2, остаток 0
3 / 2 = 1, остаток 1 2 / 2 = 1, остаток 0
11010 = 11011102 7010 = 10001102
Перевод из двоичной системы счисления в десятичную:
11011102 = 1· 26 + 1· 25 + 0· 24 + 1· 23 + 1· 22 + 1· 21 + 0· 20 = 11010
10001102 = 1· 26 + 0· 25 + 0· 24 + 0· 23 + 1· 22 + 1· 21 + 0· 20 = 7010
Перевод из десятичной системы счисления в шестнадцатеричную:
110 / 16 = 6, остаток 14 (E) 70 / 16 = 4, остаток 6
11010 = 6EH 7010 = 46H
Перевод из шестнадцатеричной системы счисления в десятичную:
6EH = 6· 161 + 14· 160 = 11010
46H = 4· 161 + 6· 160 = 7010
2.2.
A + В: 1 1 0 1 1 1 0 6 E
1 0 0 0 1 1 0 4 6
1 0 1 1 0 1 0 0 B 4
A − В: 1 1 0 1 1 1 0 6 E
1 0 0 0 1 1 0 4 6
0 1 0 1 0 0 0 2 8
2.3.
A > 0: 0 1 1 0 1 1 1 0 - прямой код
0 1 1 0 1 1 1 0 - обратный код
0 1 1 0 1 1 1 0 - дополнительный код
B > 0: 0 1 0 0 0 1 1 0 - прямой код
0 1 0 0 0 1 1 0 - обратный код
0 1 0 0 0 1 1 0 - дополнительный код
A < 0: 1 1 1 0 1 1 1 0 - прямой код
1 0 0 1 0 0 0 1 - обратный код
1 0 0 1 0 0 1 0 - дополнительный код
B < 0: 1 1 0 0 0 1 1 0 - прямой код
1 0 1 1 1 0 0 1 - обратный код
1 0 1 1 1 0 1 0 - дополнительный код
2.4. А + В
А > 0, B > 0: Результат сложения получается больше 128, следовательно, для выполнения операции необходимо представить А и В как двухбайтные числа. В этом случае бит знака станет пятнадцатым.
Зн 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0
0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0
0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0
101101002 = 18010
А > 0, B < 0: 0 1 1 0 1 1 1 0
1 0 1 1 1 0 1 0
0 0 1 0 1 0 0 0
001010002 = 4010
А < 0, B > 0: 1 0 0 1 0 0 1 0
0 1 0 0 0 1 1 0
1 1 0 1 1 0 0 0 - дополнительный код отриц. числа
1 1 0 1 1 0 0 0
0 0 0 0 0 0 0 1
1 1 0 1 0 1 1 1 - обратный код отриц. числа
1 0 1 0 1 0 0 0 - прямой код отрицательного числа
101010002 = − 4010
А < 0, B < 0: 1 0 0 1 0 0 1 0
1 0 1 1 1 0 1 0
1 0 1 0 0 1 1 0 0 - дополнительный код отриц. числа
1 0 1 0 0 1 1 0 0
0 0 0 0 0 0 0 0 1
1 0 1 0 0 1 0 1 1 - обратный код отриц. числа
1 1 0 1 1 0 1 0 0 - прямой код отрицательного числа
1101101002 = − 18010
3. Сложение шестибайтных чисел без знака
3.1. B7 A1 D2 75 98 45
B8 B1 D3 86 9F 44
1 70 53 A5 FC 37 89
3.2. Программа
$MOD845
CSEG
ORG 0000H
JMPMAIN
ORG 004Bh
MAIN:
; Заполнение адресов 2АH-2FH первым слагаемым
MOV R0, #2AH
MOV @R0, #0B7H
INC R0
MOV @R0, #0A1H
INC R0
MOV @R0, #0D2H
INC R0
MOV @R0, #75H
INC R0
MOV @R0, #98H
INC R0
MOV @R0, #45H
; Заполнение адресов 3АH-3FH вторым слагаемым
MOV R1, #3AH
MOV @R1, #0B8H
INC R1
MOV @R1, #0B1H
INC R1
MOV @R1, #0D3H
INC R1
MOV @R1, #86H
INC R1
MOV @R1, #9FH
INC R1
MOV @R1, #44H
; Поправки для регистров R0 и R1 банка 0
INC R0
INC R1
; Заполнение адресов 40H-4FH результатом сложения
SETB 0D3H
MOV R1, #4FH
M1: CLR 0D3H
DEC R1
DEC R0
MOV A, @R0
MOV C, 05H
ADDC A, @R1
MOV 05H, C
SETB 0D3H
MOV @R1, A
DEC R1
CJNE R1, #40H, M1
END
РПД после каждого выполнения цикла: