Програма Алгоритм
Приклад 12. Довжина рядка символів в коді ASCII
Обробка символьної інформації
Тема 18. Літерно-цифровий код
Програма Алгоритм
ORG 800H | |
LXI D,SQTAB | |
LDA ADDR1 | |
MOV L,A | |
MVI H,0 | |
DAD D | |
MOV A, M | |
STA ADDR2 | |
HLT | |
SQTAB: | DB 0,1,4,9,16,25,36,49 |
ADDR1: | DB 4H |
ADDR2: | DB 0 |
END |
Коли мікро ЕОМ взаємодіє з відео терміналом або клавіатурою, необхідно звертатися до коду, який одночасно включає в себе числові та алфавітні знаки. Такі коди називають літерно-цифровими. Найбільш часто використовують літерно-цифровий код ASCII – американський стандартний код обміну інформацією. Повний код ASCII має коди цифр, великих та маленьких літер, знаків пунктуації та ознак команд.
В більшості областях використання МП необхідна обробка символьної інформації. Це необхідно не тільки при роботі з такими поширеними пристроями, як клавішні пульти, телетайпи, друкуючі пристрої та дисплеї, але і при взаємодії з ЕОМ. Коди символів в коді ASCII можуть оброблюватися як звичайні числа з використанням арифметичних операцій та операцій порівняння.
Необхідно визначити довжину рядка в коді ASCII, який розміщується в пам’яті, починаючи з адреси ADDR1. Кінець рядка помічено символом “крапка”, що має шістнадцятковий код 2EH. Результат необхідно розмістити в комірку за адресою ADDR1-1.
![]() | |
MVI B,0 ;довжина рядка =0 | |
MVI A,’.’; завантаження крапки | |
NI: | LXI H,ADDR1 ;початок рядка |
CMP M ; поточний символ ‘.’ ? | |
JZ DOV ; так, йти до DOV | |
INR B;ні,збільшити довжину на 1 | |
INX H | |
JMP NI | |
DOV: | MOV A,B |
STA ADDR1-1 | |
HLT | |
ADDR1: | DB ‘A!0*.2H’ |
END |