我是全新的彙編語言編程,我遇到了一個問題,我需要更改輸入字符串的大小寫以及反轉字符串。我正在使用emu8086。我下面的代碼我要麼能夠改變大小寫或反轉字符串。但我需要同時執行這兩個操作。emu8086更改輸入字符串的大小寫並將其反轉
.MODEL CASECHANGE
.DATA
MSG1 DB 0DH,0AH, 'Enter string:$'
MSG2 DB 0DH,0AH, 'String in reverse case:$'
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,'$'
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
這兩組代碼是我的老師提供的,所以只能用這段代碼玩。
EMU8086只模擬一個8086,沒有更多。一般而言,你的最終評論是正確的,但在OP案例中,它不會成立。我知道你確實說**,如果** –
@MichaelPetch:是的,這就是爲什麼我說「如果你的目標包括」,過去式,而不是「如果你的目標包括」。由於OP正確地用8086標記了問題,甚至提到了emu8086,這很清楚(這是對某些問題的一個很好的改變)。嗯,我應該問。已經說過「你可以裝載」,以使句子的其餘部分與過去式相匹配。 –