Замена согласных строчных букв в строке на заглавные - Assembler

Узнай цену своей работы

Формулировка задачи:

замена всех букв на заглавные понимаю как, а вот как именно только согласные не доходит. подскажите что нужно сделать.
TITLE  CHANGE  
;---------------------------------------------------------------------------------------
 
    DATASG    SEGMENT   PARA
    MYTEXT   DB 'absolute victory' ,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, 61H
        JB  MT2
        CMP     AH, 7AH
        JA  MT2
        CALL    COR
    MT2:    INC     BX
        LOOP MT1
        LEA     DX, MYTEXT
        MOV     AH, 09H
        INT     21H
        RET
    BEGIN   ENDP
 
    COR PROC     NEAR
        NOP
        AND     AH, 0DFH
        MOV     [BX], AH
        RET
    COR ENDP
    CODESG  ENDS
    END BEGIN

Решение задачи: «Замена согласных строчных букв в строке на заглавные»

textual
Листинг программы
mov bx,offset эталонная_строка_для_подмены
mov si,offset исходная_строка
mov di,offset строка_для_результата
mov cx,sizeof(исходная_строка)
@@: lodsb
       xlat
       stosb
       loop @b

Объяснение кода листинга программы

  1. В начале кода, с помощью инструкции mov, в регистр BX записывается смещение (offset) от начала сегмента данных до эталонной строки для подмены.
  2. Следующая инструкция mov записывает смещение (offset) от начала сегмента данных до исходной строки в регистр SI.
  3. В регистр DI записывается смещение (offset) от начала сегмента данных до строки, в которую будут записаны результаты.
  4. В регистр CX записывается размер исходной строки в байтах, включая завершающий нулевой символ.
  5. Далее следует цикл, который выполняется до тех пор, пока в регистре CX не станет равным нулю.
  6. Внутри цикла происходит чтение байта из исходной строки с помощью инструкции lodsb и перевод его в верхний регистр с помощью инструкции xlat.
  7. Записанный в верхний регистр байт затем записывается в целевую строку с помощью инструкции stosb.
  8. После выполнения цикла, управление возвращается в начало программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы