Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Примеры программ





В рассматриваемых примерах приводится только смысловая часть программы, полное оформление программы мы рассмотрим позже.

1. Подсчитать число символов в строке. Текущий символ адресуется регистром SI, признак конца строки - нулевой код. (Команды сравнения)

MOV AH, 00h; Признак конца строки в регистр AH.

MOV CX, -1h; Начальное значение -1.

ST: INC CX; Увеличиваем счетчик.

INC SI; Передвигаем указатель на следующий символ.

CMP AH, [SI - 1]; Сравниваем текущий символ с терминатором.

JNZ ST; Если не терминатор - продолжаем цикл.

 

2. Сформировать для строки 7-битных кодов символов, адресуемой SI и заканчивающейся символом NULL биты контроля на четность каждого символа (записываются в старший разряд) и записать вместо символа NULL байт продольной четности. (Логические операции и переходы)

XOR AH, AH; Сбросить регистр AH (для байта продольной четности).

ST: MOV AL, [SI]; Передать в AL код символа из строки.

AND AL, AL; Т. к. команды пересылки не меняют флаги для их установки

; выполняем любую команду не изменяющую регистр

JZ EXIT; Если символ NULL - конец строки.

JPE NON; Число единиц четное? (Переход если флаг четности PF = 1).

OR AL, 80h; Нет - записываем 1 в старший бит.

NON: MOV [SI], AL; Вернуть символ в строку.

XOR AH, AL ‘ Учесть символ в контрольном байте продольной четности

INC SI; Передвинуть указатель на следующий символ

JMP ST; Повторить цикл

EXIT: MOV [SI], AH; Записать контрольный байт вместо последнего символа.

 

3. Найти сумму элементов массива беззнаковых двухбайтовых целых чисел. Начальный адрес массива в регистре DI, длина массива N. (управление циклами)

XOR AX, AX; Сбросить регистры для хранения младшего и

XOR BX, BX; старшего слов суммы.

MOV CX, N; Занести число элементов в счетчик.

M: ADD AX, [DI]; Прибавить текущий элемент.

JNC NOC; Есть перенос? (Переход если флаг переноса CF = 1)

INC BX; Учесть перенос в регистре BX.

NOC: INC DI; Продвинуть указатель на следующий элемент.

INC DI; (на два байта)

LOOP M; Повторить цикл сложения.

 

4. Проверить готовность принтера и в случае готовности записать байт в порт данных принтера 378h. Готовность принтера проверяется опросом порта 379h - там должно быть 11011ххх (разряды байта говорят, что принтер готов, есть бумага, не было сбоя и др).

MOV DX, 379h; Адрес порта состояния в DX

M0: IN AL, DX; Читаем байт состояния в AL

AND AL, F8h; Обнуляем три последних неопределенных бита

XOR AL, D8h; Складываем по модулю 2 AL и то, что должно там быть,;когда принтер готов. Если эти значения совпадают в результате будет 0.

JNZ MO; Если не 0 повторяем опрос

MOV DX, 378h; Адрес порта данных

MOV AL, 31h; Байт данных для вывода в аккумулятор

OUT DX, AL; Вывод в порт

 

5. Установить дату, используя функцию 2Ah прерывания 21 DOS.

MOV CX, 1999; год (1980 - 2099)

MOV DH, 01; месяц

MOV DL, 01; день

MOV AH, 2Bh; номер функции

INT 21h; вызов прерывания

 

Date: 2015-09-02; view: 293; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.008 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию