Заменить строчные буквы на прописные, цифры повторить дважды - Assembler

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

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

Распечатайте введенную строку. В данной строке нужно заменить строчные буквы на прописные и повторить каждый цифр дважды. Все это нужно написать Ассемблере, помогите пожалуйста

Решение задачи: «Заменить строчные буквы на прописные, цифры повторить дважды»

textual
Листинг программы
@stack  segment para stack
        db      1024 dup(?)
@stack  ends
 
@data   segment
        String  db      80, ?, 81 dup(?)
        Prompt  db      'Enter the string:', 0Dh, 0Ah, '$'
        CrLf    db      0Dh, 0Ah, '$'
@data   ends
 
@code   segment
        assume  cs:@code, ds:@data, ss:@stack
main    proc
        ;инициализация сегментного регистра данных
        mov     ax,     @data
        mov     ds,     ax
        ;ввод строки
        mov     ah,     09h
        lea     dx,     [Prompt]
        int     21h
        mov     ah,     0Ah
        lea     dx,     [String]
        int     21h
        mov     ah,     09h
        lea     dx,     [CrLf]
        int     21h
        ;вывод строки на экран одновременно с обработкой символов
        lea     si,     [String+1]
        mov     cx,     0
        mov     cl,     [si]
        inc     si
        @@For:
                mov     al,     [si]
                inc     si
 
                cmp     al,     'a'
                jb      @@ShowChar
                cmp     al,     'z'
                ja      @@ShowChar
 
                ;замена строчной латинской буквы на прописную
                add     al,     'A'-'a'
 
        @@ShowChar:
                mov     ah,     02h
                mov     dl,     al
                int     21h
 
                cmp     al,     '0'
                jb      @@Next
                cmp     al,     '9'
                ja      @@Next
                ;если это цифра - дополнительно вывести её на экран
                mov     ah,     02h
                mov     dl,     al
                int     21h
 
        @@Next:
 
        loop    @@For
        ;перевод строки
        mov     ah,     09h
        lea     dx,     [CrLf]
        int     21h
        ;завершение программы
        mov     ax,     4C00h
        int 21h
main    endp
 
@code   ends
 
        end     main

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


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

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

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