Получите новое сообщение от пользователя. Проверьте сообщение, чтобы убедиться, что оно начинается с заглавной буквы и заканчивается точкой ('.'), Вопросительным знаком ('?') Или восклицательным знаком ('!'). Если ввод неверен, отклоните его с сообщением об ошибке пользователю (продолжайте использовать предыдущее сообщение вместо этого). В противном случае, если действительно, замените исходное сообщение.
Я проверяю первый символ, который работает, теперь, чтобы проверить конец строки, я добавляю длину входного символа к входу минус 1., но это меняет значениепервого символа пользовательского ввода.
section .data
text1 db "ENTER TEXT: "
len equ $ - text1
text2 db "THIS IS WHAT YOU ENTERED: "
text3 db "invalid message, keeping curent "
section .bss
character resb 255
section .text
global main
main:
mov r11, text2
mov rax, 1
mov rdi, 1
mov rsi, text1
mov rdx, 12
syscall
call validate
validate:
mov rax, 0
mov rdi, 0
mov rsi, character
mov rdx, 10
syscall
mov r8, rax
mov rdi, character
mov al, [character]
mov ah, 'A'
cmp al, ah
jl invalid
cmp al, 90
jg invalid
add rax, r8 ;
sub rax, 1
cmp rax, '!'
je valid
cmp rax, '.'
je valid
cmp rax, '?'
je valid
valid:
mov r11, character
mov rax, 1
mov rdi, 1
mov rsi, r11
mov rdx, r8
syscall
jmp exit
invalid:
mov rax, 1
mov rdi, 1
mov rsi, text3
mov rdx, 12
syscall
jmp exit
exit:
mov rax, 60
xor rdi, rdi
syscall