Заменить заглавные буквы строчными в данном слове - Assembler
Формулировка задачи:
Здравствуйте, помогите пожалуйста исправить код так, чтобы надпись 'HELLO, MY NAME IS NASTYA’ оставалась заглавными буквами, а имя NASTYA начиналось с заглавной а все последующие были строчными:
или этот:
.model tiny .data Mystr db ‘HELLO, MY NAME IS NASTYA’ , 13, 10, ‘$’ .code .startup Mov ah, 9 Lea dx, MyStr Int 21h Cld Lea si, Mystr Mov d1, ‘ ’ Mov ah, 2 Next: Lodsb Cmp AL, ‘$’ Je Finish Cmp al, ‘A’ Jb Skip Cmp al, ‘z’ Ja Skip Cmp al, ‘Z’ Jbe Letter Cmp al, ‘a’ Jb skip And al, not 20h Letter: Cmp dl, ‘ ’ Je skip Or al, 20h Skip: Mov dl, al Int 21h Jmp next Finish: Int 20h end
CODESG ENDS DATASG SEGMENT PARA MYTEXT DB 'HELLO, MY NAME NASTYA' ,13,10, '$' DATASG ENDS STACKSG SEGMENT 'Stack' DB 12 DUP(?) STACKSG ENDS CODESG SEGMENT PARA 'Code' BEGIN PROC FAR ASSUME SS:STACKSG, CS:CODESG, DS:DATASG PUSH DS ; сохраняем сегмент данных в стек SUB AX, AX ; Обнуляем AX PUSH AX ; сохраняем содержимое АХ в стек MOV AX, DATASG ; заносим в сегментный MOV DS, AX ; регистр DS адрес сегмента данных LEA BX, MYTEXT ; заносим в BX адрес начального символа переменной Mytext MOV CX, 19H ; Вносим в СХ значение 17Н - параметр цикла MOV AH, 09H ; MOV DX, OFFSET MYTEXT ; INT 21H ; вывода на экран MT1: MOV AH, [BX] ; Метка1: заносим в АН код первого символа переменной Mytext CMP AH, 41H ; Сравниваем значения регистра AH и кода символа 41Н (символа A) JB MT2 ; преход к метке 2 если код, лежащий в AH больше 41H (символ старше A в таблице ASCII) CMP AH, 5AH ; Сравниваем значения регистра AH и кода символа 5АН (символа Z) JA MT2 ; преход к метке 2 если код, лежащий в AH меньше 5АH (символ младше Z в таблице ASCII) CALL COR ; вызов процедуры COR MT2: INC BX ; Метка 2: увеличиваем значение в BX на 1 LOOP MT1; Цикл с параметром, лежащим в СХ, передающий управление коду под меткой 1. LEA DX, MYTEXT ; Заносим в DX адрес переменной MYTEXT для вывода на экран MOV AH, 09H ; оформляем функцию DOS INT 21H ; вывода на экран RET ; воврат BEGIN ENDP COR PROC NEAR ; Начало процедуры COR NOP ; пауза ADD AH, 20H ; прибавляем к коду символа смещение 20H по таблице ASCII MOV [BX], AH; занесение в ячейку с адресом, лежащим в BX, кода символа из AH RET ; воврат COR ENDP ; завершение процедуры CODESG ENDS END BEGIN
Решение задачи: «Заменить заглавные буквы строчными в данном слове»
textual
Листинг программы
.model small .data mystr db 'HELLO, MY NAME IS NASTYA$' .code start: mov ax,@data mov ds,ax cld lea si,mystr+19 next: lodsb cmp al,'$' je finish cmp al,'A' jb skip cmp al,'z' ja skip cmp al,'Z' jbe letter cmp al,'a' jb skip letter: or al,20h skip: mov byte ptr [si-1],al jmp next finish: mov ah,09h lea dx,mystr int 21h mov ah,4Ch mov al,00h int 21h end start
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д