Изменение маленьких букв на большие и наоборот - Assembler/TASM
Формулировка задачи:
Задача: Написать на языке ассемблер exe-программу, которая выведет на экран "Input string". После введения строки необходимо все прописные буквы перевести в строковые, а строковые в прописные.
Проблема заключается в том, что я перевожу маленькие в большие, но не нашел инфы как из заглавной переделать на прописную
P.S. Я не силен в Assembler
.model tiny .code org 100h .startup mov dx, offset vvedite mov ah,09h int 21h ;запрос ввода строки mov dx, offset stroka ;устанавливаем указатель на строку mov ah,0ah int 21h ;вводим строку mov cx,[bx + 1] ;устанавливаем счетчик lst: ;начало цикла mov di,cx cmp stroka [di + 1], 60h ;проверка, маленькая ли буква jl next ;если большая - идем дальше sub stroka [di + 1], 20h ;если маленькая - меняем ее next: loop lst ;переход на начало цикла mov dx, offset stroka + 2 ;конец цикла, установить указатель на строку mov ah,09h int 21h ret stroka db 255 dup ("$") vvedite db "vvedite stroku $" end
Решение задачи: «Изменение маленьких букв на большие и наоборот»
textual
Листинг программы
.model small .386 .stack 100h .data CrLf db 0Dh, 0Ah, '$' msgPressAnyKey db 0Dh, 0Ah, 'Press any key to exit...', '$' msgPrompt db 0Dh, 0Ah, 'Enter the string:', 0Dh, 0Ah, '$' KeyBuf db 80, 0, 81 dup(0) .code main proc ;инициализация сегментного регистра ds адресом сегмента данных mov ax, @data mov ds, ax ;ввод строки mov ah, 09h lea dx, [msgPrompt] int 21h mov ah, 0Ah lea dx, [KeyBuf] int 21h mov ah, 09h lea dx, [CrLf] int 21h ;обработка строки movzx cx, [KeyBuf+1] jcxz @@Skip lea si, [KeyBuf+2] mov di, si push es mov ax, ds mov es, ax @@For: lodsb cmp al, 'A' setb bl cmp al, 'Z' seta bh or bl, bh cmp al, 'a' setb bh and bl, bh cmp al, 'z' seta bh or bl, bh cmp bl, 1 sbb bl, bl and bl, (1 SHL 5) xor al, bl stosb loop @@For pop es @@Skip: ;вывод строки mov ah, 40h mov bx, 1 movzx cx, [KeyBuf+1] lea dx, [KeyBuf+2] int 21h ;ожидание нажатия любой клавиши mov ah, 09h lea dx, [msgPressAnyKey] int 21h mov ah, 00h int 16h mov ax, 4C00h int 21h main endp end main
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д