我是全新的汇编语言编程,我遇到了一个问题,我需要更改输入字符串的大小写以及反转字符串。我正在使用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,这很清楚(这是对某些问题的一个很好的改变)。嗯,我应该问。已经说过“你可以装载”,以使句子的其余部分与过去式相匹配。 –