Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- org 100h
- Start:
- mov ah, $09 ; DOS функция для вывода строки
- mov dx, strHelloUser ; Указатель на строку приветствия
- int 21h ; Вызов прерывания DOS
- Input:
- mov ah, $0A ; DOS функция для ввода строки
- mov dx, bufInput ; Указатель на буфер ввода
- int 21h ; Вызов прерывания DOS
- OutputBeforeChange:
- mov ah, $09 ; DOS функция для вывода строки
- mov dx, bufInput + 2 ; Указатель на строку в буфере ввода, смещенную на 2
- int 21h ; Вызов прерывания DOS
- ProcessOnResult:
- mov cl, [bufInput + 1] ; Загрузка длины строки ввода в cl
- cmp cl, 4 ; Сравнение длины строки с 4
- jnge OutputLenghtBad ; Если длина строки меньше или равна 4, переход к OutputLenghtBad
- ; Сравнение позиций 3 и 6
- mov al, [bufInput + 1 + 1] ; Загрузка символа на позиции 1 в al
- mov bl, [bufInput + 2 + 1] ; Загрузка символа на позиции 2 в bl
- cmp al, bl ; Сравнение символов
- jne OutputNo ; Если символы не равны, переход к OutputNo
- ; Анализ символа на позиции 2
- mov al, [bufInput + 3 + 1] ; Загрузка символа на позиции 2 в al
- cmp al, 65 ; Сравнение символа с 'A' (48 в ASCII)
- jnge OutputNo ; Если символ меньше 'A', переход к OutputNo
- cmp al, 122 ; Сравнение символа с 'z' (57 в ASCII)
- jnle OutputNo; Если символ больше 'z', переход к OutputNo
- ; Смещение на 2 элемента
- ; следует очень подробно работу каждой строчки смысл и так далее
- xor bh, bh
- mov bl, [bufInput + 1]
- sub bl, 1
- cmp [bufInput + bx], 65 ; Сравнение bx с 'A' (65 в ASCII)
- jnge OutputNo ; Если bx меньше 'A', переход к OutputNo
- cmp [bufInput + bx], 122 ; Сравнение bx с 'z' (122 в ASCII)
- jnle OutputNo; Если bx больше 'z', переход к OutputNo
- ; Если все проверки прошли, переходим к outputyes
- OutputYes:
- mov ah, $09 ; DOS функция для вывода строки
- mov dx, strYes ; Указатель на строку "YES"
- int 21h ; Вызов прерывания DOS
- jmp AvaitingClose ; Переход к ожиданию закрытия
- OutputNo:
- mov ah, $09 ; DOS функция для вывода строки
- mov dx, strNo ; Указатель на строку "NO"
- int 21h ; Вызов прерывания DOS
- jmp AvaitingClose ; Переход к ожиданию закрытия
- OutputLenghtBad:
- mov ah, $09 ; DOS функция для вывода строки
- mov dx, strLenghtBad ; Указатель на строку "Lenght..."
- int 21h ; Вызов прерывания DOS
- jmp AvaitingClose ; Переход к ожиданию закрытия
- AvaitingClose:
- mov ah, $09 ; DOS функция для вывода строки
- mov dx, strClose ; Указатель на строку "Press any key to close programm..."
- int 21h ; Вызов прерывания DOS
- mov ah, $08 ; DOS функция для чтения символа без эхо
- int 21h ; Вызов прерывания DOS
- ret ; Возврат из программы
- x db ? ; Определение переменной x зачем(?)
- strHelloUser db 'Please, enter your string:',13,10,36
- bufInput db 9, 0, 9 dup(?),13,10,'$'
- strLenghtBad db 'Lenght...',13,10,36
- strNo db 'NO',13,10,36
- strYes db 'YES',13,10,36
- strClose db 'Press any key to close programm... $'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement