emu8086 изменить регистр введенной строки и обратить ее обратно [закрыто]

Я совершенно новичок в программировании на ассемблере и застрял с проблемой, в которой мне нужно изменить регистр введенной строки, а также перевернуть строку. Я использую emu8086. В следующем коде я могу изменить регистр или перевернуть строку. но мне нужно выполнить обе операции одновременно.

.MODEL CASECHANGE

.DATA

        MSG1 DB  0DH,0AH, 'Enter string:

приведенный ниже код переворачивает строку, а приведенный выше код изменяет регистр, и мне нужно объединить оба кода для достижения желаемого результата

BACK:

        int 21h 
        MOV BL,AL
        cmp al,0dh

        jz exit  

        mov [si],al 
        inc si
        inc ch 
        jmp back



EXIT:      

        lea dx,MSG2
        mov ah,09h  
        int 21h 

cmp1:       

        mov al,[si]
        mov dl,al
        mov ah,02h
        int 21h
        dec si
        dec ch
        jnz cmp1
        mov ah,01ch
        int 21h


OFFSETS: 

        mov ch,01h
        mov si,offset STR1 

END START 

Эти 2 набора кодов предоставлены моим инструктором, поэтому я могу играть только с этим кодом.

MSG2 DB 0DH,0AH, 'String in reverse case:

приведенный ниже код переворачивает строку, а приведенный выше код изменяет регистр, и мне нужно объединить оба кода для достижения желаемого результата

BACK:

        int 21h 
        MOV BL,AL
        cmp al,0dh

        jz exit  

        mov [si],al 
        inc si
        inc ch 
        jmp back



EXIT:      

        lea dx,MSG2
        mov ah,09h  
        int 21h 

cmp1:       

        mov al,[si]
        mov dl,al
        mov ah,02h
        int 21h
        dec si
        dec ch
        jnz cmp1
        mov ah,01ch
        int 21h


OFFSETS: 

        mov ch,01h
        mov si,offset STR1 

END START 

Эти 2 набора кодов предоставлены моим инструктором, поэтому я могу играть только с этим кодом.

STR1 DB 255 DUP(?) .CODE START: MOV AX,@DATA MOV DS,AX LEA DX,MSG1 MOV AH,09H INT 21H LEA SI,STR1 MOV AH,01H jz offsets GET: INT 21H MOV BL,AL CMP AL,0DH JE SET XOR AL,20H MOV [SI],AL INC SI JMP GET SET: MOV AL,'

приведенный ниже код переворачивает строку, а приведенный выше код изменяет регистр, и мне нужно объединить оба кода для достижения желаемого результата

BACK:

        int 21h 
        MOV BL,AL
        cmp al,0dh

        jz exit  

        mov [si],al 
        inc si
        inc ch 
        jmp back



EXIT:      

        lea dx,MSG2
        mov ah,09h  
        int 21h 

cmp1:       

        mov al,[si]
        mov dl,al
        mov ah,02h
        int 21h
        dec si
        dec ch
        jnz cmp1
        mov ah,01ch
        int 21h


OFFSETS: 

        mov ch,01h
        mov si,offset STR1 

END START 

Эти 2 набора кодов предоставлены моим инструктором, поэтому я могу играть только с этим кодом.

MOV [SI],AL LEA DX,MSG2 MOV AH,09H INT 21H LEA DX,STR1 MOV AH,09H INT 21H MOV AL,09H JMP START JMP BACK .EXIT

приведенный ниже код переворачивает строку, а приведенный выше код изменяет регистр, и мне нужно объединить оба кода для достижения желаемого результата

BACK:

        int 21h 
        MOV BL,AL
        cmp al,0dh

        jz exit  

        mov [si],al 
        inc si
        inc ch 
        jmp back



EXIT:      

        lea dx,MSG2
        mov ah,09h  
        int 21h 

cmp1:       

        mov al,[si]
        mov dl,al
        mov ah,02h
        int 21h
        dec si
        dec ch
        jnz cmp1
        mov ah,01ch
        int 21h


OFFSETS: 

        mov ch,01h
        mov si,offset STR1 

END START 

Эти 2 набора кодов предоставлены моим инструктором, поэтому я могу играть только с этим кодом.

Ответы на вопрос(1)

Ваш ответ на вопрос