📄 e411_05.asm
字号:
STACK SEGMENT PARA STACK
DW 100 DUP(?)
STACK ENDS
DATA SEGMENT PARA
STRING1 DB 'ABOVE $'
STRING2 DB 'ABOUT $'
STRING3 DB 'AGAIN $'
NEW_LINE DB 0DH,0AH,'$'
LEN DB 5
DATA ENDS
CODE SEGMENT PARA
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
MAIN PROC FAR
MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV AX,STACK
MOV SS,AX
XOR CX,CX
XOR AX,AX
START: MOV AH,9
MOV DX,OFFSET STRING1
INT 21H
MOV AH,9
MOV DX,OFFSET STRING2
INT 21H
MOV AH,9
MOV DX,OFFSET STRING3
INT 21H
MOV AH,9
MOV DX,OFFSET NEW_LINE
INT 21H
BEGIN: PUSH ES
PUSH DS
POP ES
MOV SI,OFFSET STRING1
MOV DI,OFFSET STRING2
MOV CL,LEN
CLD
REPZ CMPSB
JNA STEP2
MOV CL,LEN
MOV SI,OFFSET STRING1
MOV DI,OFFSET STRING2
CHANGE1: MOV AL,[SI]
XCHG AL,[DI]
MOV [SI],AL
INC SI
INC DI
LOOP CHANGE1
STEP2: PUSH ES
PUSH DS
POP ES
MOV SI,OFFSET STRING1
MOV DI,OFFSET STRING3
MOV CL,LEN
CLD
REPZ CMPSB
JNA STEP3
MOV CL,LEN
MOV SI,OFFSET STRING1
MOV DI,OFFSET STRING3
CHANGE2: MOV AL,[SI]
XCHG AL,[DI]
MOV [SI],AL
INC SI
INC DI
LOOP CHANGE2
STEP3: PUSH ES
PUSH DS
POP ES
MOV SI,OFFSET STRING2
MOV DI,OFFSET STRING3
MOV CL,LEN
CLD
REPZ CMPSB
JNA EXIT
MOV CL,LEN
MOV SI,OFFSET STRING1
MOV DI,OFFSET STRING2
CHANGE3: MOV AL,[SI]
XCHG AL,[DI]
MOV [SI],AL
INC SI
INC DI
LOOP CHANGE3
EXIT: MOV AH,9
MOV DX,OFFSET STRING1
INT 21H
MOV AH,9
MOV DX,OFFSET STRING2
INT 21H
MOV AH,9
MOV DX,OFFSET STRING3
INT 21H
MOV AX,4C00H
INT 21H
MAIN ENDP
CODE ENDS
END MAIN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -