Проверка бит кода введенного с клавиатуры символа - Assembler
Формулировка задачи:
Всем привет, помогите пожалуйста разобраться с асм, вот само задание:
Составить программу, предусматривающую:
*Запрос фамилии пользователя и ввод ее с клавиатуры
*Вывод фамилии на дисплей
*Ввод символа с клавиатуры
Если 3 бит кода введенного с клавиатуры символа равен 1 или 2 бит равен 0, протестировать 7 бит M и вывести соответствующее сообщение; иначе инвертировать 0, 3 и 4 биты кода и вывести на дисплей символ, соответствующий измененному коду.
Нужно только подправить данный код (скорректировать в соответствии с условием):
Увы и ах, но из всей учебной программы очень и очень трудно даётся лишь ассемблер((
Листинг программы
- model small
- include lib\io.asm
- .stack 100h
- .data
- d db 25
- m db 6
- y db 96
- a db 20
- lastname db 23 dup(?)
- lastnamePromt db 10,13, 'Input your lastname: ', '$'
- lastnameOut db 10,13, 'Your lastname is: ', '$'
- symbolPromt db 10,13, 'Input symbol: ', '$'
- symbolOut db 10,13, 'Changed symbol: ', '$'
- bitOut db 10,13, 'Bit #7 of the M variable is: ', '$'
- .code
- start:
- mov ax, @data
- mov ds, ax
- mov dx, offset lastnamePromt
- mov ah, 9h
- int 21h
- ;Ввод фамилии
- mov lastname,21
- mov lastname+1,20
- mov dx,offset lastname
- mov ah,10 ;ввод 10 в ah
- int 21h
- mov dx, offset lastnameOut
- mov ah, 9h
- int 21h
- lea dx, lastname+2
- mov ah, 9h
- int 21h
- ;Ввод символа с клавиатуры
- mov dx, offset symbolPromt
- mov ah, 9h
- int 21h
- mov ah, 1h;ввод символа
- int 21h
- ;Проверяем 3 бит
- test al, 00000100b
- js invert ;Если равно 1, то переход на метку
- mov ah, 1h
- int 21h
- test al, 00000010b
- jns invert ;Если равно 0, то переход на метку
- test m, 01000000b ; 7 бит M
- mov dx, offset symbolOut
- mov ah, 9h
- int 21h
- jmp finish
- ;Метка инвертации
- invert:
- mov dx, offset bitOut
- mov al, 9h
- int 21h
- mov dl, cl
- mov ah, 02h
- int 21h
- xor al, 00011001b ; Инвертация 0,3 и 4 бита в единицы
- mov cl, al
- mov dx, offset symbolOut
- mov ah, 9h
- int 21h
- mov dl, cl
- mov ah, 2h
- int 21h
- jmp finish
- output:
- mov dx,offset bitOut
- mov al,9h
- int 21h
- mov dl,cl
- mov ah,02h
- int 21h
- finish:
- mov ah,4ch
- int 21h
- end start
Решение задачи: «Проверка бит кода введенного с клавиатуры символа»
textual
Листинг программы
- test al, 00001000b
- jne invert
- test al, 00000100b
- je invert
Объяснение кода листинга программы
- Переменная
al
содержит байт, который был введен с клавиатуры. - Выполняется проверка бита 7 (самый старший) переменной
al
. Если он установлен, то происходит переход к меткеinvert
. - Выполняется проверка бита 4 (5-й бит от старшего) переменной
al
. Если он установлен, то происходит переход к меткеinvert
. - Если ни одна из предыдущих проверок не вызвала переход, то происходит выполнение кода между метками
invert
иend
. - Код между метками
invert
иend
не представлен в данном коде. - Если переменная
al
содержит 0, то происходит переход к меткеend
. - Код между метками
end
иnext
не представлен в данном коде. - Выполняется проверка бита 6 (6-й бит от старшего) переменной
al
. Если он установлен, то происходит переход к меткеnext
. - Выполняется проверка бита 2 (3-й бит от старшего) переменной
al
. Если он установлен, то происходит переход к меткеnext
. - Если ни одна из предыдущих проверок не вызвала переход, то происходит выполнение кода между метками
next
иend
. - Код между метками
next
иend
не представлен в данном коде. - Если переменная
al
содержит 0, то происходит переход к меткеend
. - Код между метками
end
иstart
не представлен в данном коде. - Переменная
al
содержит байт, который был введен с клавиатуры. - Выполняется проверка бита 1 (2-й бит от старшего) переменной
al
. Если он установлен, то происходит переход к меткеstart
. - Выполняется проверка бита 3 (4-й бит от старшего) переменной
al
. Если он установлен, то происходит переход к меткеstart
. - Если ни одна из предыдущих проверок не вызвала переход, то происходит выполнение кода между метками
start
иend
. - Код между метками
start
иend
не представлен в данном коде. - Переменная
al
содержит байт, который был введен с клавиатуры. - Код не представлен в данном коде.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д