Если в строке встречаются подряд 3 гласные буквы, вставить после них пробел (tasm) - Assembler
Формулировка задачи:
Дана произвольная строка, если встречаются подряд 3 гласные буквы, вставить после них пробел
Решение задачи: «Если в строке встречаются подряд 3 гласные буквы, вставить после них пробел (tasm)»
textual
Листинг программы
ORG 100h JMP start mess0 DB 13,10,'ENTER STRING: $' mess1 DB 13,10,'Press any key...$' table DB 'AEIOUYaeiouy' start: MOV AH,9 ; запрос на ввод строки MOV DX,mess0 ; INT 21h ; XOR BX,BX ; счётчик гласных тройняшек MOV AH,1 ; ввод с эхо.. INT 21h ; @@1: ; MOV DH,AL ; DH = предыдущий символ MOV AH,1 ; ввод с эхо.. INT 21h ; CMP AL,13 ; это Enter? JE exit ; CMP DH,AL ; это предыдущий символ? JNE @@1 ; MOV DI,table ; 2 символа совпали! MOV CX,12 ; проверим их на гласную REPNE SCASB ; OR CX,CX ; если пара согласная, JZ @@1 ; то мотаем цикл.. INC BX ; счётчик найденых +1 CMP BX,2 ; 3 символа совпали? (можно изменить предел в +/-) JZ space ; да - вставить пробел JMP @@1 ; иначе: ждём следующий символ space: ; MOV AL,' ' ; вставим 'Space' INT 29h ; могут быть ещё 3 гласных в строке XOR BX,BX ; 'Reset' счётчика JMP @@1 ; следующий символ... exit: ; MOV DX,mess1 ; мессага "Press key" MOV AH,9 ; INT 21h ; XOR AX,AX ; INT 16h ; INT 20h ; Gagarin...
Объяснение кода листинга программы
В этом коде на языке Assembler выполняется следующая задача:
- Запрос на ввод строки (запрос на ввод с эхо).
- Цикл, который проверяет каждый символ в строке.
- Если предыдущий символ не равен текущему, то цикл продолжается.
- Если предыдущий символ равен текущему, и текущий символ не равен последнему символу в строке, то вставляется пробел.
- Если предыдущий символ равен текущему, и текущий символ равен последнему символу в строке, то происходит выход из цикла и выводится сообщение
Press key
. - Если предыдущий символ не равен текущему, и текущий символ равен последнему символу в строке, то происходит выход из цикла и выводится сообщение
Press any key...
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д