Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Assembler 01.doc
Скачиваний:
19
Добавлен:
09.11.2019
Размер:
727.04 Кб
Скачать

5. Программа: замена строчных букв на заглавные.

5.1. Заглавные буквы от А до Z имеют коды от 41Н до 5АН, а строчные буквы от а до z имеют коды от 61Н до 7АН. Единственная разница в том, что пятый бит равен 0 для заглавных букв и 1 для строчных:

Биты: 7 6 5 4 3 2 1 0 Биты: 7 6 5 4 3 2 1 0

Буква А: 0 1 0 0 0 0 0 1 Буква а: 0 1 1 0 0 0 0 1

Буква Z: 0 1 0 1 1 0 1 0 Буква z: 0 1 1 1 1 0 1 0

Запишите в текстовом редакторе NORTON следующую программу в COM-формате:

.286

TITLE CASE (COM) Перекодировка в заглавные буквы

CODESG SEGMENT PARA 'Code'

ASSUME CS:CODESG,DS:CODESG,SS:CODESG

ORG 100H

BEGIN: JMP MAIN

;----------------------------------------------------------

TITLEX DB 'Change to uppercase letters'

;----------------------------------------------------------

MAIN PROC NEAR

LEA BX,TITLEX+1 ;Адрес первого символа

MOV CX,31 ;Число символов

B20: MOV AH,[BX] ;Символ из TITLEX

CMP AH,61H ;Это

JB B30 ;прописная

CMP AH,7AH ;буква

JA B30 ;?

AND AH,11011111B;Да - преобразовать

MOV [BX],AH ;Записать в TITLEX

B30: INC BX ;Следующий символ

LOOP B20 ;Повторить цикл 31 раз

RET

MAIN ENDP

CODESG ENDS

END BEGIN

Эта программа преобразует данные в поле TITLEX из строчных букв в прописные начиная с адреса TITLEX+1. Программа инициализирует регистр ВХ адресом TITLEX+1 и использует его для пересылки символов в регистр АН начиная с TITLEX+1.

Команда CMP сравнивает код символа в регистре АН с числом 61Н.

Команда JB обеспечивает переход на метку В30, если в результате сравнения АН < 61Н.

Команда JA обеспечивает переход на метку В30, если в результате сравнения АН > 7АН.

Если 61Н < AH < 7AH, то будет выполняться команда AND. Команда AND умножает соответствующие биты числа в АН и числа 11011111 (логическое умножение). В результате умножения все биты числа в АН, кроме пятого, останутся без изменений. Пятый бит установится в 0, что соответствует коду заглавной буквы. Измененные символы засылаются обратно в область TITLEX, значение в регистре ВХ увеличивается для очередного символа и осуществляется переход на следующий цикл.

Используемый таким образом регистр ВХ действует как индексный регистр для адресации в памяти.

5.2. Выполните ассемблирование и компоновку программы case.asm. Запишите листинг программы в отчет. Вызовите отладчик DEBUG для пошагового выполнения программы.

5.3. Выполните первую команду JMP. Просмотрите сегмент кодов, введя команду D CS:100. Определите в каких параграфах находятся коды символов символьной константы TITLEX. Выводы запишите в отчет.

5.4. Выполните в пошаговом режиме 10 - 15 циклов работы программы. Количество циклов контролируйте по регистру СХ. Просмотрите сегмент кодов. Выводы запишите в отчет.

5.5. Выполните трассировку программы до конца, до команды RET. Просмотрите сегмент данных. Выводы запишите в отчет.

5.6. Введите команду Q для выхода из отладчика.

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