Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1 / МУ_ЭВМ+ПУ_ч1 / 7-МУ_ЭВМ+ПУ-переходы.docx
Скачиваний:
22
Добавлен:
28.05.2015
Размер:
46.72 Кб
Скачать
    1. Пример программы 2

7.6.1 Формулировка задачи

Если биты номер 2 и 3 ASCII-кода введенного с клавиатуры символа равны 1, инвертировать биты номер 0, 3 и 6 и вывести на дисплей символ, соответствующий измененному коду; иначе протестировать бит номер 5 кода введенного символа.

7.6.2 Постановка задачи

В начале работы предлагается ввести символ, имеющий ASCII-код.

После анализа бит номер 2 и 3 кода выполняется либо инвертирование бит номер 0, 3 и 6 и вывод символа, соответствующего измененному коду, либо тестирование бита номер 5 исходного кода и вывод соответствующего результата.

Предусмотреть в конце программы задержку для обозрения сообщения.

7.6.3 Тестирование программы

Для проверки правильности работы программы необходимо установить символы, коды которых соответствуют условиям задачи. Наиболее простой вариант определение таких символов – «сконструировать» их коды, то есть задать значения всех сочетаний бит номер 2 и 3, а значения остальных бит назначить произвольно. Один из вариантов выбора проверочных символов представлен в таблице 7.3. ASCII-коды символов содержатся в Приложении Б.

Таблица 7.3Символы для тестирования программы

Номер бита кода символа

Символ

Примечание

7

6

5

4

3

2

1

0

0

1

1

0

1

1

1

0

n (англ)

Подлежит инвертированию

0

0

1

0

0

1

0

1

%

Результат инвертирования

0

0

1

1

0

1

0

0

4

Подлежит тестированию

0

1

1

1

1

0

0

0

х (англ)

Подлежит тестированию

0

1

0

1

0

0

0

0

Р (англ)

Подлежит тестированию

7.6.4 Листинг программы

model small

.stack 100h

.data

priglash db 'Введите символ->','$'

vivs db 10, 13, 'Символ после изменения кода ->','$'

rez0 db 10, 13, 'Бит = 0','$'

rez1 db 10, 13, 'Бит = 1','$'

.code

start: ; точка входа в программу

mov ax, @data ; загрузка адреса сегмента данных

mov ds, ax

mov dx, offset priglash ; загрузка начального адреса строки в dx

mov ah, 9h ; вывод строки 'Введите символ'

int 21h

mov ah, 1h ; ввод символа

int 21h ; код символа - в al

mov bl, al ; копия кода символа - в bl

; если хотя бы одно условие не выполняется, переход на тестирование

; (см. подробно в п. 7.4)

test bl, 100b ; проверка бита номер 2

jz tst ; если =0, (случай «иначе»), переход на tst

test bl, 1000b ; проверка бита номер 3

jz tst ; если =0, (случай «иначе»), переход на tst

; инвертирование бит номер 0, 3 и 6

xor bl, 01001001b

mov dx, offset vivs ; вывод строки 'Символ после изменения кода' mov ah, 9h

int 21h

mov dl, bl ; вывод символа, код символа в dl

mov ah, 2h

int 21h

jmp fin

tst: test bl, 00100000b ; тестирование бита номер 5

jz r0 ; если бит =0, переход на метку r0

; бит ≠0, вывод сообщения rez1

mov dx, offset rez1 ; вывод строки 'Бит = 1'

mov ah, 9h

int 21h

jmp fin

r0: ; вывод сообщения rez0

mov dx, offset rez0 ; вывод строки 'Бит = 0'

mov ah, 9h

int 21h

fin: mov ah, 1 ; задержка для обозрения

int 21h

mov ax, 4C00h ; завершение работы

int 21h

end start