Доставка цветов в Севастополе: SevCvety.ru
Главная -> Появление первого микропроцессора

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 [71] 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116

LXI Hf<NH)»2

DftD SP

RCHG H,R2 -

INX H . • • .

RCHG H,R1 POP и ENDH

; НЙКРОКОМАНДЙ ЗАГРУЗКИ В РЕГИСТРОВУП ПАРУ В ИЛИ Б СО-5 ЯЕРХИМОГО N-rO СЛОВА СТЕКА.

i ПАРАНЕТРЫ: Rl-ИНЯ СТАРШЕГО РЕГИСТРА РЕГИСТРОВОЙ ИйРЫ 5 < КРОНЕ Н ), К2-ИНЯ НЛАДШЕГО РЕГИСТРА РЕГИСТРОВОЙ ПАРЫ t < КРОНЕ L )» N- НОНЕР СЛОВА В СТЕКЕ ОТНОСИТЕЛЬНО ТЕКУ-! «ЕГО ЗНАЧЕНИЯ SP.

5 0ЦЕНКА:ВРЕМЯ-61 ТАКТ;ЛЛИНА-7 БАЙТ;ГЛУБИНА CTEKft-2 БАЙТА

LBSP HACRO R1»R2»H PUSH Н

LXI Hf <NH) tf2

BAD SP

HOV R2»H

INX H

HOV Rl.M

POP H

ENDH

Макрокоманды RCHG и XCHR осуществляют обмен! содержимым соответственно регистров и регистровых пар. В макрокоманде RCHG в качестве промежуточного запоминающего регистра используется аккумулятор, а в макрокоманде XCHR - вершина стека. Макрокоманда RCHG изменяет содержимое аккумулятора. Макрокоманды XTRR, XTRN и LDSP предназначены для работы с содержимым стека. Макрокоманда XTRR является аналогом процессорной команды XTHL и позволяет производить обмен между вершиной стека и регистровыми парами (В, С) и (D, Е). Макрокоманда XTRN обеспечивает непосредственный доступ к указанному слову стека. Доступ к данным, содержащимся в стеке, осуществляется с помощью базовой косвенной адресации. В качестве базового адреса используется содержимое регистра указателя стека SP. В качестве операндов, определяющих имена регистров, нельзя указывать регистры (Н) и (L), так как они используются для адресации содержимого стека. Действия макрокоманды LDSP аналогичны действиям макрокоманды XTRN, за исключением того, что содержимое указанных регистров теряется, а не помещается в стек, как.



в XTRN. Следует отметить, что макрокоманды XTRN и LDSR изменяют содержимое аккумулятора, так как используют макрокоманду RCHG.

5.2. формирование массивов 5.2.1. ПРОСТОЕ ФОРМИРОВАНИЕ МАССИВА

Формирование массива в МП системе, как правило, производится заполнением информацией, поступающей из внешних источников. Обслуживание этих внешних источников осуществляется специальными программами, которые назовем программами генерации кодов. При фор-, мировании массива может производиться некоторая дополнительная обработка поступающей информации.

Приведенная ниже программа выполняет простое формирование массива - без предварительной обработки (предполагается, что внешняя программа генерации кодов осуществляет при каждом своем вызове побайтную передачу очередного кода символа в регистр (А) и обеспечивает сохранение значений остальных регистров):

ЗЙП1:

; ПОДПРОГРЙММй ЗАПОЛНЕНИЯ МАССИВА КОЛАМИ»BMPАВАТЫВАЕМЫМИ ; ВНЕШНЕЙ ПОЛПРОГРАНМОЯ ГЕНЕРАЦИИ КОЛОБ (ПГК). S ПАРАМЕТРЫ: <Б»С)-АЯРЕС НАЧАЛА МАССИВА»(В»Е)-ДЛИНА НАС-: СИВА» (Н»П- АДРЕС ПГК.

; ОЦЕНКА: БРЕМЯ-10-К821Т)*Н» ГДЕ Т- ВРЕМЯ ПГК» N - ДЛИНА ; МАССИВА! ЯЛИНА-16 БАИТ;ГЛУБИНА СТЕКА-4 БАЙТА.

i ВЫЗОВ ПОЛПРОГРАММЫ ГЕНЕРАЦИИ КОДОВ

202Б С5 PUSH Б

202С 013120 LXI В,ПЕР1

202F С5 PUSH Б i АДРЕС ВОЗВРАТА ИЗ ПГК Б СТЕК

2030 Е9 PCHL

! ЗАПИСЬ ОЧЕРЕДНОГО БАЙТА И ПРОВЕРКА НА ОКОНЧАНИЕ МАССИВА

2031 С1 ПЕР1: POP Б

2032 02 STAX Б

2033 03 INX Б

2034 1Б вех В

2035 7Б т> А»Е

2036 В2 ORA D

2037 С22Б20 JNZ ЗАП1 203А С9 RET

Структура программы представляет собой итеративный цикл. На каждой итерации выполняется запись в массив одного байта. Вызов подпрограммы генерации кодов выполняется командой PCHL. Так как эта команда



не обеспечивает сохранения адреса возврата в исходную программу, то он предварительно загружается в вершину стека командой PUSH В. После возврата из подпрограммы генерации кодов осуществляется запись полученного кода в формируемый массив по адресу (В, С), содержимое регистровой пары (В, С) увеличивается, а содержимое регистровой пары (D, Е), равное .количеству незаписанных байтов в формируемом массиве, уменьшается на единицу. Возврат из описываемой программы выполняется, когда количество незаписанных байтов становится равным нулю. Проверка содержимого регистровой пары (D, Е) на нулевое значение производится путем логического сложения содержимого регистров этой пары.

5.2.2. ФОРМИРОВАНИЕ МАССИВА С КОНТРОЛЕМ КОДОВ ОКОНЧАНИЯ И ЗАБОЯ

Состав функций предварительной обработки данных, возлагаемых на программы формирования массива, определяется в основном спецификой работы внешнего источника информации. Рассмотрим в качестве примера программу формирования буфера консольного ввода, данные для которого вводятся со стандартной клавиатуры. Необходимо обеспечить ввод в буфер одной строки, представляющей цепочку символов, ограниченную кодом «ВК» - «Возврат каретки» (ООН), с возможностью коррекции вводимой строки посредством стирания последнего введенного символа консольной командой «ЗБ» - «Забой» (7FH). Программа имеет следующий вид:

3fiIT2:

; пгапРогрйННА зйпо.чнения массива кодами, bupaeatueaemumh

•г внешней п0л1тр0граин0я генерации кодов шпо с контролем ; кодов овн(завершение) и 7гн (забоя предыдущего байта). ; входные параметры: (в,с) - адрес начала массива,(в,е)-J д.чина массива, (H,L) - адрес пгк.

s внход.ные паранетры: (в,е)-количество незаписанных байт, 5 z=1-macchb заполнен полностью.

; опенка: BPEhifl-42-h22mn+34uxH ТАКТОВ,где Н - количество ; "обычных" символов, м - количество символов "забой"; ? длина-65 байт; глубина стека-6 еайт.

гКККК»»ХМ««КХ»х»К*)И««МКХ»)С»Х»»»»)))С»»«»ХХ*»«»(»»»)С*)««ХК

203б сп push в

; вызов полпрограиш генераций кодов 203с с5 НИКЛЗ: PUSH в

203d 014220 LXI в,пер2

2040 с5 PUSH Б ; адрес возврата из пгк в стек

2041 е9 PCHL



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 [71] 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116



0.0958
Яндекс.Метрика