Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .model small
- printOtvet macro s:req ; Создаём макрос - что-то вроде процедуры в делфи, где s - строка, передаваемое значение
- mov ah, 9h ; Тело процедуры
- mov dx, offset s
- int 21h
- mov ah,2h ; Меняем содержание регистра прерывания. 2h - вывод символа по его ASCII коду
- endm ; Конец тела процедуры
- .data
- probel db '',10,13,'$'
- otvet db 'Symbol was printed',10,13,'$'
- wrong db 'Symbol wasnt printed',10,13,'$'
- .code
- start:
- push @data
- pop ds
- mov ah,1h ; Вводим символ с клавиатуры. В данном случае, код нашего введенного символа будет лежать в al, так как прерывание 1h записывает его именно туда
- int 21h
- mov ah,9h ; Выводим строку - пробел
- mov dx,offset probel
- int 21h
- cmp al,32 ; Сравниваем с пробелом. CMP - сравнивает два значения кодов символов
- jne SkipProbel ; Расшифровывается как jump not equal. Если значения кодов не равны, переходит к метке SkipProbel. Если значения равны, то jne игнорируется
- printOtvet otvet ; Запускаем макрос по выводу строки
- int 21h
- jmp Finish ; Безусловный переход по метке Finish
- SkipProbel:
- cmp al,33 ; Сравниваем с восклицательным знаком
- jne SkipVoskl
- printOtvet otvet
- mov dl,al
- int 21h
- jmp Finish
- SkipVoskl:
- cmp al,34 ; Сравниваем с двойными кавычками
- jne SkipDoubleKavichki
- printOtvet otvet
- mov dl,al
- int 21h
- jmp Finish
- SkipDoubleKavichki:
- cmp al,35 ; Сравниваем с решёткой
- jne SkipReshetka
- printOtvet otvet
- mov dl,al
- int 21h
- jmp Finish
- SkipReshetka:
- cmp al,36 ; Сравниваем с долларом
- jne SkipDollar
- printOtvet otvet
- mov dl,al
- int 21h
- jmp Finish
- SkipDollar:
- cmp al,37 ; Сравниваем с процентом
- jne SkipProcent
- printOtvet otvet
- mov dl,al
- int 21h
- jmp Finish
- SkipProcent:
- cmp al,38 ; Сравниваем со знаком ИЛИ
- jne SkipObiedinenie
- printOtvet otvet
- mov dl,al
- int 21h
- jmp Finish
- SkipObiedinenie:
- mov ah,9h ; Выводим сообщение о том, что символ не был напечатан
- mov dx, offset wrong
- int 21h
- Finish:
- mov ax, 4c00h
- int 21h
- end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement