Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LEC-ASM80.DOC
Скачиваний:
5
Добавлен:
01.05.2025
Размер:
929 Кб
Скачать
☆

Програма Алгоритм

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

Тема 18. Літерно-цифровий код

Коли мікро ЕОМ взаємодіє з відео терміналом або клавіатурою, необхідно звертатися до коду, який одночасно включає в себе числові та алфавітні знаки. Такі коди називають літерно-цифровими. Найбільш часто використовують літерно-цифровий код ASCII – американський стандартний код обміну інформацією. Повний код ASCII має коди цифр, великих та маленьких літер, знаків пунктуації та ознак команд.

Обробка символьної інформації

В більшості областях використання МП необхідна обробка символьної інформації. Це необхідно не тільки при роботі з такими поширеними пристроями, як клавішні пульти, телетайпи, друкуючі пристрої та дисплеї, але і при взаємодії з ЕОМ. Коди символів в коді ASCII можуть оброблюватися як звичайні числа з використанням арифметичних операцій та операцій порівняння.

Приклад 12. Довжина рядка символів в коді ascii

Необхідно визначити довжину рядка в коді ASCII, який розміщується в пам’яті, починаючи з адреси ADDR1. Кінець рядка помічено символом “крапка”, що має шістнадцятковий код 2EH. Результат необхідно розмістити в комірку за адресою ADDR1-1.

Програма Алгоритм

ORG 800H

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

Приклад 12. Перетворення із коду ASCII в десяткову систему

Щоб перетворити цифру з коду ASCII в десяткову систему, достатньо відняти від її коду значення 30H (нуль в коді ASCII). В програмі необхідно також перевірити, чи є символ, що перетворюється цифрою.

ORG 800H;

SUI ‘0’; завантажити символ в коді ASCII

CPI 10; відняти нуль в коді ASCII A<10, Cy=1

JC DEC; результат менше 10 ?

MVI A,0FFH; символ не є десятковою цифрою

DEC: STA ADDR2; запам’ятати результат

HLT

ADDR1: DB 36H

ADDR2: DB 0

END

Приклад 13. Порівняння символьних рядків

В багатьох задачах необхідно розпізнавати рядки символів в коді . Ці рядки можуть бути командами, ідентифікаторами, іменами, повідомленнями або числами. Розпізнавання складається в перевірці співпадання деякого символьного рядка з заданим.

Нехай два рядка символів розміщені в пам’яті, починаючи з комірок ADDR1 та ADDR2 відповідно. В комірці ADD1 вказано довжину рядка. Програма надсилає в ADD2 нуль, якщо рядки співпадають та 0FFH в протилежному випадку.

ORG 800H CMP M

MVI C,0FFH JNZ D1

LXI H,ADD1 DCR B

MOV B,M JNZ D2

LXI D,ADDR2-1 D1: MOV A,C

D2: INX H STA ADD2

INX D HLT

LDAX D ADD1: DB 4

ADDR1: DB ‘CAT.’

ADDR2: DB ‘CAT,’

ADD2: DB 0

END

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]