-
Пример программы 1
3.5.1 Формулировка задачи
Если биты номер 2 и 3 ASCII-кода введенного с клавиатуры символа равны 1, инвертировать биты номер 0, 3 и 6 и вывести на дисплей символ, соответствующий измененному коду; иначе протестировать бит номер 5 кода введенного символа.
3.5.2 Постановка задачи
В начале работы предлагается ввести символ, имеющий ASCII-код.
После анализа бит номер 2 и 3 кода выполняется либо инвертирование бит номер 0, 3 и 6 и вывод символа, соответствующего измененному коду, либо тестирование бита номер 5 исходного кода и вывод соответствующего результата.
Предусмотреть в конце программы задержку для обозрения сообщения.
-
Тестирование программы
Для проверки правильности работы необходимо ввести следующие символы (таблица 3.3).
Таблица 3.3 – Символы для тестирования программы
Номер бита кода символа |
Символ |
Примечание |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
||
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
m (англ) |
Подлежит инвертированию |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
$ |
Результат инвертирования |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
4 |
Подлежит тестированию |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
х (англ) |
Подлежит тестированию |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
Р (англ) |
Подлежит тестированию |
3.5.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
; если хотя бы одно условие не выполняется, переход на тестирование
; (см. подробно в п. 3.3)
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