Ввод ASCII-кодов начальной и конечной букв, вывод букв, расположенных между введёнными - Assembler

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

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

Написать exe-программу, которая выведет запрос о коде начальной и конечной букв из ASCII-таблицы и выведет на экран только те буквы, которые окажутся между ними. P.S. Не знаю ассемблер; полный 0 в нём. Буду благодарен за решение.

Решение задачи: «Ввод ASCII-кодов начальной и конечной букв, вывод букв, расположенных между введёнными»

textual
Листинг программы
.model small
 
.stack 100h
 
.data
        StartChar       db      'a'
        FinishChar      db      's'
        CrLf            db      0Dh, 0Ah, '$'
        msgPressAnyKey  db      0Dh, 0Ah, 'Press any key to exit...', '$'
        msgStartChar    db      'Enter the code of start char: ', '$'
        msgFinishChar   db      'Enter the code of finish char: ', '$'
.code
 
main    proc
        ;инициализация сегментного регистра ds адресом сегмента данных
        mov     ax,     @data
        mov     ds,     ax
 
        ;ввод исходный данных
        ; - ввод кода начальной буквы
        mov     ah,     09h
        lea     dx,     [msgStartChar]
        int     21h
        call    ReadByte
        mov     [StartChar],    al
        mov     ah,     09h
        lea     dx,     [CrLf]
        int     21h
 
        ; - ввод кода конечной буквы
        mov     ah,     09h
        lea     dx,     [msgFinishChar]
        int     21h
        call    ReadByte
        mov     [FinishChar],   al
        mov     ah,     09h
        lea     dx,     [CrLf]
        int     21h
 
        ;вывод символов между начальной и конечной буквой
        mov     ah,     02h
        mov     dl,     [StartChar]
        jmp     @@next
        @@repeat:
                int     21h
        @@next:
                inc     dl
                cmp     dl,     [FinishChar]
        jb      @@repeat
 
        ;ожидание нажатия любой клавиши
        mov     ah,     09h
        lea     dx,     [msgPressAnyKey]
        int     21h
        mov     ah,     00h
        int     16h
 
        mov     ax,     4C00h
        int     21h
main    endp
 
ReadByte        proc
        push    bx
        push    dx
 
        mov     dx,     ax
        mov     bh,     10
        mov     al,     0
@@InputChar:
        mov     bl,     al
        mov     ah,     08h
        int     21h
 
        cmp     al,     13
        je      @@stop
        cmp     al,     '0'
        jb      @@InputChar
        cmp     al,     '9'
        ja      @@InputChar
 
        mov     ah,     02h
        mov     dl,     al
        int     21h
 
        sub     al,     '0'
 
        xchg    al,     bl
        mul     bh
        add     al,     bl
 
        jmp     @@InputChar
@@stop:
        mov     ah,     dh
        mov     al,     bl
        pop     dx
        pop     bx
        ret
ReadByte        endp
 
end     main

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


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

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

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