Не могу найти ошибку в коде, посмотрите пожалуйста - 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
Объяснение кода листинга программы
- Переменная
AHустанавливается в значение 02h. - Переменная
DLустанавливается в значение <код выводимого символа>. - Выполняется функция INT 21h.