Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
11.DOC
Скачиваний:
21
Добавлен:
16.04.2015
Размер:
195.58 Кб
Скачать

3.Практическая разработка.

3.1 Описание алгоритма программы.

Как известно, цифра, закодированная при помощи кода КОИ-7, отличается от незакодированной на число 30, а буквенное обозначение шестнадцатеричного числа – на 3716. Исходя из этой информации, принцип работы данной программы заключается в том, что константы из массива, начинающегося с адреса 500016, по очереди копируются в аккумулятор и над каждой из них осуществляются следующие действия: данное двузначное число подвергается четырём сдвигам вправо с помощью команды “RAR”, в результате чего его символы “меняются местами”. Это нужно, чтобы закодировать первый символ. Затем обнуляется первый символ результата путём применения команды “ANI 0F”. С помощью команды “CPI 0A” определяется, цифра или буква стоит на второй позиции.

На следующем этапе, в зависимости от того, цифра это или буква, результат складывается с числом 30 или 37 соответственно. После этого с исходным числом проделывается вышеописанная работа за исключением сдвигов вправо. Тем самым осуществляется кодировка второго символа исходной константы.

После того, как первая константа закодирована, получившееся в результате двухбайтное число заносится из аккумулятора в массив, начинающийся с адреса 600016.

Затем все действия повторяются применительно к каждой заданной константе в цикле.

В программе используется цикл на убывание. В паре <HL> создаётся счётчик на десять шагов, так как требуется закодировать десять констант.

3.2 Листинг программы.

Адрес

Текст

ассемблера

Коды

ассемблера

Комментарии

4000

LXI B, 500016

01 00 50

Загрузка начала исходного массива

4003

LXI D, 600016

11 00 60

Загрузка начала массива кодов КОИ-7

4006

MVI H, 0Ah

26 0A

Создание счётчика в регистре H на 10 шагов

4008

LDAX B

0A

Запись первого числа в аккумулятор

4009

RAR

1F

Сдвиг вправо

400A

RAR

1F

Сдвиг вправо

400B

RAR

1F

Сдвиг вправо

400C

RAR

1F

Сдвиг вправо

400D

ANI 0Fh

E6 0F

Обнуление первой тетрады числа

400F

CPI 0Ah

FE 0A

Сравнение результата с 0Аh

4011

JNC 401916

D2 19 40

Если это буква, прыжок к адресу 4019

4014

ADI 30h

C6 30

Сложение результата с константой 30h

4016

JMP 401B16

C3 1B 40

Прыжок к адресу 401В

4019

ADI 37h

C6 37

Сложение результата с константой 37h

401B

STAX D

12

Запись получившегося числа в массив кодов КОИ-7

401C

INX D

13

Переход к следующей ячейке массива кодов КОИ-7

401D

LDAX B

0A

Запись первого числа в аккумулятор

401E

ANI 0Fh

E6 0F

Обнуление первой тетрады числа

4020

CPI 0Ah

FE 0A

Сравнение результата с 0Аh

4022

JNC 402A16

D2 2A 40

Если это буква, прыжок к адресу 402А

4025

ADI 30h

C6 30

Сложение результата с константой 30h

4027

JMP 402C16

C3 2C 40

Прыжок к адресу 402С

402A

ADI 37h

C6 37

Сложение результата с константой 37h

402C

STAX D

12

Запись получившегося числа в массив кодов КОИ-7

402D

INX D

13

Переход к следующей ячейке массива кодов КОИ-7

402E

INX B

03

Переход к следующей ячейке массива исходных констант

402F

DCR H

25

Уменьшение счётчика на 01h

4030

JNZ 400816

C2 08 40

Прыжок к началу цикла, если в счётчике не 00h

4033

JMP 004016

C3 40 00

Выход в монитор

4003

LXI D, 600016

11 00 60

Загрузка начала массива кодов КОИ-7

Вывод.

В результате проделанной работы поставленная цель была достигнута. При помощи стандартных команд ассемблера была создана программа, переводящая заданный массив однобайтных констант в массив кодов КОИ-7. Без сомнения существуют более рациональные алгоритмы реализации данной задачи, использующие, может быть, короткие команды, или более сжато осуществляющие цикл. Можно предположить, что в моей программной реализации задачи вторую часть цикла (кодирование второго символа данной константы) можно было соединить с первой (кодирование первого символа константы), поскольку единственным их различием являются сдвиги в первой части. Бесспорно, программа стала бы намного короче, но мне, к сожалению, этого сделать не удалось по ряду причин.

Данная работа выполнялась на домашнем персональном компьютере с характеристиками:

I845E\Cel-1.7GHz\DDR128Mb\40Gb\GeF32Mb\FDDl

Операционная система: Windows XP Professional.

Программа-эмулятор: CM-1800 (эмулятор Смирнова).

Литература

  1. Ю. М. Казаринова «Микро - процессорный комплект К1810» Справочник Москва 1990г.

  1. «Микропроцессоры: Архитектура и проектирование микро ЭВМ. Организация вычислительных процессов.» 1,2,3 том Москва «Высшая школа» 1986г.

  1. Л.Н. Знаменская, С.В. Знаменский. Проблема множественности русских кодировок и новое семейство кириллических шрифтов. ( Электронная версия книги)

  1. Также использовались методические пособия к лабораторным работам по дисциплине «Организация ЭВМ и систем» и конспекты лекций по тому же предмету.

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