Не могу найти ошибку в коде, посмотрите пожалуйста - Assembler

Узнай цену своей работы

Формулировка задачи:

задача :Ввести с клавиатуры строку. Преобразовать все малые буквы в большие. Вывести результаты на экран. Программа работает,но изменяет только первый символ строки, в чем дело не могу понять
CODE_SEG SEGMENT
 
ASSUME CS:CODE_SEG,DS:DATA_SEG
 
START:

    MOV AX,DATA_SEG
    MOV DS,AX

    MOV DX,OFFSET STRING
    MOV AH,0Ah
    INT 21h

    MOV BX,DX
    INC BX          
    MOV CL,[BX]                
    XOR CH,CH                   
    PUSH CX     
 
TO_UPPER:
 
    INC BX          
    MOV AL,[BX]     

    CMP AL,'a'      
    JB DO_NOT_CHANGE
    CMP AL,'z'
    JA DO_NOT_CHANGE
    
    ADD AL,'A'-'a'  
    MOV [BX],AL         
 
DO_NOT_CHANGE:
 
    LOOP TO_UPPER   

    POP CX          
    MOV BX,OFFSET STRING
    MOV SI,2        
        
PRINT_LOOP:
 
    MOV AH,02h
    MOV DX,[BX][SI]
    INT 21h
    INC SI          
    LOOP PRINT_LOOP     
 
    MOV AX,4C00h
    INT 21h
 
CODE_SEG ENDS
 
DATA_SEG SEGMENT
 
STRING DB 80,?,80 DUP(?)
 
DATA_SEG ENDS
 
STACK_SEG SEGMENT STACK
 
DB 256 DUP(0)
 
STACK_SEG ENDS
 
END START

Решение задачи: «Не могу найти ошибку в коде, посмотрите пожалуйста»

textual
Листинг программы
MOV AH,02h
    MOV DL,<код выводимого символа>
    INT 21h

Объяснение кода листинга программы

  1. Переменная AH устанавливается в значение 02h.
  2. Переменная DL устанавливается в значение <код выводимого символа>.
  3. Выполняется функция INT 21h.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.667 из 5
Похожие ответы