Как заменить первый и последний символ слова скобками? - Assembler
Формулировка задачи:
Ребят как сделать так чтобы из моей фразы: Our Native ZzZzZz получилось : (u) (ativ) (zzzz) т.е в каждом слове первый и последний символ заменить на '(' и ')' . первым заданием было заменить заглавные буквы на строчные
DATASG SEGMENT PARA MYTEXT DB 'Our Native ZzZzZz' ,13,10, '$' DATASG ENDS STACKSG SEGMENT 'Stack' DB 12 DUP(?) STACKSG ENDS CODESG SEGMENT PARA 'Code' BEGIN PROC FAR ASSUME SS:STACKSG, CS:CODESG, DS: DATASG PUSH DS SUB AX,AX PUSH AX MOV AX, DATASG MOV DS, AX LEA BX, MYTEXT MOV CX, 10H MT1: MOV AH, [BX] CMP AH, 41H JB MT2 CMP AH, 5AH JA MT2 CALL COR MT2: INC BX LOOP MT1 LEA DX, MYTEXT MOV AH, 09H INT 21H RET BEGIN ENDP COR PROC NEAR NOP ADD AH, 20H MOV [BX], AH RET COR ENDP CHANGE PROC NEAR NOP MOV AH, 01h MOV [BX], AH RET CHANGE ENDP CODESG ENDS END BEGIN
Решение задачи: «Как заменить первый и последний символ слова скобками?»
textual
Листинг программы
DATASG SEGMENT PARA MYTEXT DB 'Our Native ZzZzZz',13,10,'$' szmyText equ $-MyText DATASG ENDS STACKSG SEGMENT Stack 'Stack' DB 120 DUP(?) STACKSG ENDS CODESG SEGMENT PARA 'Code' BEGIN PROC FAR ASSUME SS:STACKSG, CS:CODESG, DS: DATASG PUSH DS SUB AX,AX PUSH AX MOV AX,DATASG MOV DS,AX xor dx,dx LEA BX,MYTEXT MOV CX,szMyText mt1: MOV Al,[BX] CMP Al,'A' JB mt2 cmp al,'Z' jbe mt3 CMP al,'a' jb mt2 cmp al,'z' ja mt2 mt3: inc dx cmp dx,1 jnz mt4 mov byte ptr[bx],'(' jmp short mt4 MT2: or dx,dx jz mt4 xor dx,dx mov byte ptr[bx-1],')' mt4: INC BX LOOP mt1 LEA DX,MYTEXT MOV AH,09H INT 21H RET BEGIN ENDP CODESG ends END BEGIN
Объяснение кода листинга программы
Этот код на языке Assembler выполняет следующую задачу: заменяет первый и последний символ в слове скобками. Список действий:
- Сохраняет сегмент данных в стеке.
- Очищает регистр AX.
- Перемещает сегмент данных в регистр AX.
- Перемещает регистр DS в регистр AX.
- Очищает регистр DX.
- Перемещает указатель на начало строки в регистр BX.
- Перемещает размер строки в регистр CX.
- Начинает цикл по всем символам строки.
- Если текущий символ является 'A', 'Z', 'a' или 'z', увеличивает счетчик символов и продолжает цикл.
- Если текущий символ является ' ' (пробел), переходит к следующему символу.
- Если текущий символ является конечным символом строки, переходит к следующему символу.
- Если текущий символ является первым символом строки, добавляет символ '('.
- Если текущий символ является последним символом строки, добавляет символ ')'.
- Увеличивает указатель на следующий символ.
- Проверяет, достигнут ли конец строки.
- Если достигнут, выводит строку на экран.
- Возвращает управление.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д