- •Раздел 3 основы микропроцессорной техники
- •3.1 Структуры вычислительных систем
- •3.2 Принципы организации однокристальных микропроцессоров и микропроцессорных систем
- •3.3 Программирование микропроцессоров
- •При использовании прямой адресации
- •При использовании косвенной адресации
- •На языке Ассемблер
- •Ассемблер, содержащая подпрограмму
- •3.4 Принципы организации однокристальных микроконтроллеров
- •3.5 Программирование микроконтроллеров
- •3.6 Организация памяти микропроцессорных систем
- •3.7 Интерфейсные бис/ сбис
- •Информации
3.3 Программирование микропроцессоров
Рисунок 3.15 – Схема алгоритма инвертирования содержимого ячейки памяти
Таблица 3.4 – Программа инвертирования содержимого ЯП на языке Ассемблер
При использовании прямой адресации
Адрес |
Метка |
Команда |
Операнд |
Машинный код |
Комментарий |
0800 |
|
LDA |
0B00 h |
3A 00 0B |
; чтение числа из памяти |
0803 |
|
CMA |
|
2F |
; инвертирование числа |
0804 |
|
STA |
0B01 h |
32 01 0B |
; запись числа в память |
0807 |
|
HLT |
|
76 |
; останов |
Таблица 3.5 – Программа инвертирования содержимого ЯП на языке Ассемблер
При использовании косвенной адресации
Адрес |
Метка |
Команда |
Операнд |
Машинный код |
Комментарий |
0800 |
|
LXI |
H, 0B00 h |
21 00 0B |
; запись в пару регистров ; H-L адреса числа |
0803 |
|
MOV |
A, M |
7E |
; чтение числа из памяти |
0804 |
|
CMA |
|
2F |
; инвертирование числа |
0805 |
|
INX |
H |
23 |
; увеличение на 1 адреса ; числа |
0806 |
|
MOV |
M, A |
77 |
; запись числа в память |
0807 |
|
HLT |
|
76 |
; останов |
Рисунок 3.16 – Схема алгоритма циклической программы суммирования однобайтных чисел
Таблица 3.6 – Циклическая программа суммирования однобайтных чисел
На языке Ассемблер
Адрес |
Метка |
Команда |
Операнд |
Машинный код |
Комментарий |
0800 |
|
LXI |
H, 0A00 h |
21 00 0A |
; адрес первого слагаемого |
0803 |
|
MVI |
B, 05h |
06 05 |
; количество слагаемых |
0805 |
ADD B: |
XRA |
AC |
AF |
; обнуление регистра AC |
0806 |
|
MOV |
C, AC |
4F |
; обнуление регистра C |
0807 |
M1: |
ADD |
M |
86 |
; суммирование |
0808 |
|
JNC |
M2 |
D2 0C 08 |
; условный переход на ; M2, если (TC) = 0 |
080B |
|
INR |
C |
0C |
; увеличение содержимого ; регистра C на единицу |
080C |
M2: |
INX |
H |
23 |
; увеличение содержимого ; пары регистров H-L ; на единицу |
080D |
|
DCR |
B |
05 |
; уменьшение на единицу ; содержимого счетчика ; циклов |
080E |
|
JNZ |
M1 |
C2 07 08 |
; условный переход на M1, если (TZ) = 0 |
0811 |
|
HLT |
|
76 |
; останов |
Таблица 3.7 – Программа суммирования массива однобайтных чисел на языке
Ассемблер, содержащая подпрограмму
Адрес |
Метка |
Команда |
Операнд |
Машинный код |
Комментарий |
0800 |
|
LXI |
H, 0A00 h |
21 00 0A |
; адрес первого слагаемого |
0803 |
|
MVI |
B, 05h |
06 05 |
; количество слагаемых |
0805 |
|
CALL |
ADD B |
CD 09 08 |
; вызов подпрограммы ; сложения |
0808 |
|
HLT |
|
76 |
; останов |
0809 |
ADDB: |
XRA |
AC |
AF |
; обнуление регистра AC |
080A |
|
MOV |
C, AC |
4F |
; обнуление регистра C |
080B |
M1: |
ADD |
M |
86 |
; суммирование |
080C |
|
JNC |
M2 |
D2 10 08 |
; условный переход на ; M2, если (TC) = 0 |
080F |
|
INR |
C |
0C |
; увеличение содержимого ; регистра C на единицу |
0810 |
M2: |
INX |
H |
23 |
; увеличение содержимого ; пары регистров H-L на ; единицу |
0811 |
|
DCR |
B |
05 |
; уменьшение на единицу ; содержимого счетчика ; циклов |
0812 |
|
JNZ |
M1 |
C2 0B 08 |
; условный переход на M1, если (TZ) = 0 |
0815 |
|
RET |
|
C9 |
; возврат в основную ; программу |