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