Ввод 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д