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