Описание алгоритма программы
В программе используется цикл на убывание. В паре создаётся счётчик на десять шагов, так как требуется закодировать десять констант. Затем все действия повторяются применительно к каждой заданной константе в цикле. Переход к следующей ячейке массива исходных констант. Запись получившегося числа в массив кодов КОИ-7. Запись получившегося числа в массив кодов КОИ-7. Переход к следующей ячейке… Читать ещё >
Описание алгоритма программы (реферат, курсовая, диплом, контрольная)
Как известно, цифра, закодированная при помощи кода КОИ-7, отличается от незакодированной на число 30, а буквенное обозначение шестнадцатеричного числа — на 3716. Исходя из этой информации, принцип работы данной программы заключается в том, что константы из массива, начинающегося с адреса 500 016, по очереди копируются в аккумулятор и над каждой из них осуществляются следующие действия: данное двузначное число подвергается четырём сдвигам вправо с помощью команды «RAR», в результате чего его символы «меняются местами». Это нужно, чтобы закодировать первый символ. Затем обнуляется первый символ результата путём применения команды «ANI 0F». С помощью команды «CPI 0A» определяется, цифра или буква стоит на второй позиции.
На следующем этапе, в зависимости от того, цифра это или буква, результат складывается с числом 30 или 37 соответственно. После этого с исходным числом проделывается вышеописанная работа за исключением сдвигов вправо. Тем самым осуществляется кодировка второго символа исходной константы.
После того, как первая константа закодирована, получившееся в результате двухбайтное число заносится из аккумулятора в массив, начинающийся с адреса 600 016.
Затем все действия повторяются применительно к каждой заданной константе в цикле.
В программе используется цикл на убывание. В паре создаётся счётчик на десять шагов, так как требуется закодировать десять констант.
2.2 Листинг программы.
Адрес. | Текст ассемблера. | Коды ассемблера. | Комментарии. | |
LXI B, 500 016. | 01 00 50. | Загрузка начала исходного массива. | ||
LXI D, 600 016. | 11 00 60. | Загрузка начала массива кодов КОИ-7. | ||
MVI H, 0Ah. | 26 0A. | Создание счётчика в регистре H на 10 шагов. | ||
JP 500 016. | F2 00 50. | Выбор положительного числа. | ||
400B. | LDAX B. | 0A. | Запись первого числа в аккумулятор | |
400C. | RAR. | 1 °F. | Сдвиг вправо. | |
400D. | RAR. | 1 °F. | Сдвиг вправо. | |
400E. | RAR. | 1 °F. | Сдвиг вправо. | |
400 °F. | RAR. | 1 °F. | Сдвиг вправо. | |
ANI 0Fh. | E6 0 °F. | Обнуление первой тетрады числа. | ||
CPI 0Ah. | FE 0A. | Сравнение результата с 0Аh. | ||
JP 401E16. | F2 1E 40. | Если это буква, прыжок к адресу 401E. | ||
ADI 30h. | C6 30. | Сложение результата с константой 30h. | ||
JMP 402 116. | C3 20 40. | Прыжок к адресу 4020. | ||
401C. | ADI 37h. | C6 37. | Сложение результата с константой 37h. | |
401E. | STAX D. | Запись получившегося числа в массив кодов КОИ-7. | ||
401 °F. | INX D. | Переход к следующей ячейке массива кодов КОИ-7. | ||
LDAX B. | 0A. | Запись первого числа в аккумулятор | ||
ANI 0Fh. | E6 0 °F. | Обнуление первой тетрады числа. | ||
CPI 0Ah. | FE 0A. | Сравнение результата с 0Аh. | ||
JNC 403 016. | D2 2 °F 89 213 647 048 40. | Если это буква, прыжок к адресу 402 °F. | ||
ADI 30h. | C6 30. | Сложение результата с константой 30h. | ||
402A. | JMP 403 216. | C3 32 40. | Прыжок к адресу 4032. | |
402D. | ADI 37h. | C6 37. | Сложение результата с константой 37h. | |
402 °F. | STAX D. | Запись получившегося числа в массив кодов КОИ-7. | ||
INX D. | Переход к следующей ячейке массива кодов КОИ-7. | |||
INX B. | Переход к следующей ячейке массива исходных констант. | |||
DCR H. | Уменьшение счётчика на 01h. | |||
JP 400 816. | F2 08 40. | Прыжок к началу цикла, если в счётчике не 00h. | ||
JMP 4 016. | C3 40 00. | Выход в монитор | ||