STACK1 SEGMENT STACK
DW 256 DUP($)
STACK1 ENDS
DATA SEGMENT
MES1 DB 'The data in buf2 are:',0AH,0DH,'$'
BUF1 DB 11H,22H,33H,44H,55H,66H,77H,88H,99H,0AAH,0BBH,0CCH,0DDH,0EEH,0FFH,00H
BUF2 DB 20H DUP(0)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET BUF1
MOV DI,OFFSET BUF2
CMP SI,DI;判断数据段的先后顺序,决定首端移动或是尾端移动
JG LABEL1
MOV CX,20H
LOOPER:
MOV BX,CX
MOV CX,SI[BX]
MOV DI[BX],CX
PUSH DI[BX]
INC BX
CALL PRINT
LOOP LOOPER
JMP LAST
LABEL1:
MOV BX,20H
SUB BX,CX
MOV CX,SI[BX]
MOV DI[BX],CX
PUSH DI[BX]
DEC BX
CALL PRINT
LOOP LABEL1
JMP LAST
LAST:
RET
PRINT PROC
POP DI[BX]
PUSH AX
MOV DX,DI
MOV AL,02H
INT 21H
POP AX
RET
PRINT ENDP
CODE ENDS
END START