Снос зданий:
ecosnos.ru
Главная  Микроустройства: номенклатура изделий электронной промышленности 

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

Адресация по базе с индексированием. Исполнительный адрео формируется путем сложения базовогоадреса и смещения, которые содержатся в регистрах. В качестве базовых регистров могут использоваться регистры ВХ или BP, любой из регистров SI или DI может служить индексным регистром.

Команды обработки строк. В микропроцессоре К1810ВМ86 имеется несколько команд, специально предназначенных для обработки данных, представленных в виде блоков или строк. В иих подразумевается использование индексных регистров SI и DI для указания исходной строки-операнда и для указания строки-результата соответственно. Строка-результат всегда размещается в дополнительном сегменте с помощью регистра ES. По умолчанию исходная строка содержится в сегменте данных DS. Разряд DF регистра FLAGS указывает автоинкрементный или автодекрементный способ адресации.

Перед командами обработки строк можно разместить один из префиксов, что обусловливает циклическое выполнение команды под управлением процессора (табл. 6.8). Если начальное значение регистра СХ равно О, то команда (CMPS или SCAS) не выполняется ни разу. В противном случае команда повторно выполняется до тех пор, пока значение СХ ие станет равным О или ие осуществит-ся-окончание цикла по флажку ZF.

6.8. Префиксы команд обработки строк

Мнемоника

Onepaн^ы

Выполняемое действие

MOVS, MOVSB, MOVSW, STOS

Выполнение команд-о'Перан-дов, пока СХ ф 0 В каждом цикле выполняется СХ: = СХ - I

REPE/REPZ

CMPS или SCAS

Выполнение команд-операндов, пока ZF = I и СХ 0 В каждом цикле выполняется СХ: = СХ - 1 и про-верка ZF

REPNE/REPNZ

CMPS или SCAS

Выполнение команд-операндов, пока ZF = 0 и СХ 0 Выполняются те же действия, что и в предыдущем случае, но выход из цикла, если ZF = 1

Пример:

В данном примере подпрограмма STSRCH устанавливает, входит ли заданная строка в буфер BUFFER. Вызывающая программа передает в подпрограмму базовый адрес и длину заданной строки.



КОММЕНТАРИЙ: БАЗОВЫЙ АДРЕС СТРОКИ ПЕРЕДАЕТСЯ ЧЕРЕЗ РЕГИСТРЫ DS и ВХ, А ЕЕ ДЛИНА УКАЗЫВАЕТСЯ В РЕГИСТРЕ DX

ЕСЛИ ВХОЖДЕНИЕ СТРОКИ НЕ ОБНАРУЖЕНО, ТО УСТАНАВЛИВАЕТСЯ В РЕГИСТРЕ FLAGS: ZF =0, ИНАЧЕ ZF = 1

МЕСТО ВХОЖДЕНИЯ ОПРЕДЕЛЯЕТСЯ СОДЕРЖИМЫМ РЕГИСТРОВ ES И DI ZCODE SEGMENT

ASSUME CS: ZCODE, ES : ZDATA, DS: ZSRC

BO ВРЕМЯ ВЫПОЛНЕНИЯ ПРОГРАММЫ СЕГМЕНТНЫЕ РЕГИСТРЫ CS, ES, DS ДОЛЖНЫ СОДЕРЖАТЬ БАЗОВЫЕ АДРЕСА СЕГМЕНТОВ: ZCODE, ZDATA, ZSRC FAR ; КЛЮЧЕВОЕ СЛОВО FAR

УКАЗЫВАЕТ, ЧТО П/П STSRCH ВЫЗЫВАЕТСЯ ТО-ЬКО С ПОМОЩЬЮ МЕЖСЕГМЕНТНЫХ КОМАНД ВЫЗОВА П/П ЗАГРУЗКА РЕГИСТРОВ

STSRCH RROC

MOV MOV

CLD JMP

CHKSTR: MOV MOV PUSH

REPE

CMPS

AX, SEG BUFFER ES, AX DI, OFFSET BUFFER AX. OFFSET BUFFER AX, DX

DX СОДЕРЖИТ ДЛИНУ СОПОСТАВЛЯЕМОЙ СТРОКИ-ЭТО ПОСЛЕДНИЙ ВОЗМОЖНЫЙ АДРЕС В BUFFER ДЛЯ СОПОСТАВЛЕНИЯ

SHORT. CHKLST SI, ВХ СХ, DX

DI ; СОХРАНЕНИЕ ТЕКУЩЕ-

; ГО НАЧАЛЬНОГО АДРЕ-;.СА В СТЕКЕ BUFFER, ; ВЫПОЛНЕНИЕ КОМАН-STRING ; ДЫ CMPS, ПОКА ZF = I

;ИСХ(>

; ЕСЛИ ОПЕРАНДЫ РАВ-



NOTFND:

FNDIT: RET

STSRCH ENDP

ZCODE ENDS

5 НЫ, TO ZF = 1 DI J ВОССТАНОВЛЕНИЕ HA-

. ; ЧАЛЬНОГО АДРЕСА, ZF ; HE ИЗМЕНЯЕТСЯ FNDIT ; ПЕРЕХОД К FNDIT,

; ЕСЛИ ZF = I DI ; ПОПЫТКА ПОСЛЕДУЮ.

; ЩЕГО СРАВНЕНИЯ DI, АХ ; СРАВНЕНИЕ СОДЕРЖИ.

; МОГО DI С МАКСИМАЛЬ. НО ВОЗМОЖНЫМ АДРЕ. СОМ СРАВНЕНИЯ, КОТО. РЫЙ СОДЕРЖИТСЯ В АХ CHKSTR ; ЕСЛИ < ИЛИ =, ТО

ПЕРЕХОД К ПРОДОЛ. ЖЕНИЮ СРАВНЕНИЯ i СТРОК

{ ВОЗВРАТ ИЗ П/П

Глава 7

ЯЗЫКИ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ

7.1. УНИВЕРСАЛЬНЫЕ ПРОЦЕДУРНО-ОРИЕНТИРОВАННЫЕ ЯЗЫКИ

Программирование на языках высокого уровня упрощает и ускоряет разработку прикладных и системных программ для микроЭВМ и МПС. Наибольшее распространение получили языки ПЛ/М (ПЛ/F), БЕЙСИК, Паскаль.

Процедурно-ориентированными языками называются языки, в которых вычислительный процесс представлен последовательностью определенных процедур манипуляции с данными, не зависящими от конкретной машины. Одним из направлений развития процедурно-ориентированных языков является создание универсальных языков типа ПЛ/1, АЛГОЛ-68, АДА и др. Например, средства автоматизации разработки программ (САРП) для микроЭВМ семейства Электроника С5 включают трансляторы для универсального языка ПЛ/1.

Для таких языков, как ПЛ/М, БЕЙСИК, ФОРТРАН, разработаны мощные кросс-трансляторы, которые позволяют получать программные модули, исполняемые на микроЭВМ или на программируемых МП [26, 55, 58]. Трансляюры для языков Паскаль, МОДУЛА-2 реализованы на мини-ЭВМ, что значительно расширяет область использования языковых процессоров. Специально для МПС разработан язык ЭДИСОН [72], обеспечивающий распараллеливание процессов.

JEQ INC

CHKLST: CMP



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