Перевод в заглавные буквы Assembler
Формулировка задачи:
Здравствуйте, не ругайте косорукого,подскажите ,пожалуйста, почему не работает перевод ... ( И как найти символ по середине слова... Был в других темах, но не понял код
Листинг программы
- .model small
- .stack 100h
- .data
- string db 256 dup ('$')
- .code
- start:
- string1 EQU string[2]
- mov ax, @data
- mov ds, ax
- xor dx,dx
- mov ah,0Ah
- mov [string], 253
- lea dx,string
- int 21h
- lea si,string1
- L1:
- mov bl, [si]
- cmp bl, 64
- jbe konec
- cmp bl, 90
- ja stroki
- add bl, 32
- mov [si], bl
- jmp konec
- stroki:
- cmp bl, 97
- jb konec
- cmp bl, 122
- ja konec
- mov [si], bl
- konec:
- inc si
- loop L1
- mov bl, byte ptr '$'
- mov [si], bl
- mov ah, 09h
- lea dx, [si]
- int 21h
- mov ax,4c00h
- int 21h
- end start
Решение задачи: «Перевод в заглавные буквы Assembler»
textual
Листинг программы
- .model small
- .386
- .data
- string db 255,0,255 dup('$')
- .stack
- db 255 dup(?)
- .code
- start:
- mov ax,@data
- mov ds,ax
- mov ah,0Ah
- lea dx,string
- int 21h
- lea si,string[2]
- l1:
- mov bl,byte ptr [si]
- cmp bl,64
- jbe konec
- cmp bl,90
- ja stroki
- add bl,32
- mov byte ptr [si],bl
- jmp konec
- stroki:
- cmp bl,97
- jb konec
- cmp bl,122
- ja konec
- and bl,11011111b
- mov byte ptr [si],bl
- konec:
- inc si
- loop l1
- mov byte ptr [si],'$'
- mov ah,02h
- mov dl,0Dh
- int 21h
- mov ah,02h
- mov dl,0Ah
- int 21h
- mov ah,09h
- lea dx,string[2]
- int 21h
- mov ah,4Ch
- mov al,00h
- int 21h
- end start
Объяснение кода листинга программы
- Объявлены две переменные в сегменте данных: string (строка) и stack (стек).
- Начальный адрес стека установлен в 255,0,255 (для примера, заглавные буквы не переводятся).
- Код начинается с сегментации регистров.
- Далее выполняется проверка символа в строке на возможность перевода в заглавную букву.
- Если символ меньше или равен 90 (U), то он переводится в заглавную букву.
- Если символ больше 90 (U), но меньше или равен 122 (z), то он переводится в строчную букву.
- Если символ больше 122 (z), то он остается без изменений.
- В конце строки добавляется символ '$'.
- Выполняется вывод строки на экран.
- Выполняется вывод символа возврата каретки и символа перевода строки.
- Выполняется вывод строки на экран с использованием функции 9 (D).
- Выполняется выход из программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д