BLOCK DB -1,-3,5,6,-2,0,20,10
PLUS_D DB 8 DUP(?) ;正數緩沖區
MINUS_D DB 8 DUP(?) ;負數緩沖區
PLUS DB 0
MINUS DB 0
PLUSS DB THE PLUS DATA HAVE:,$,0DH,0AH
MINUSS DB THE MINUS DATA HAVE:,$,0DH,0AH
PLUSNUMS DB THE PLUS DATA NUMBER IS:,$
MINUSNUMS DB THE MINUS DATA NUMBER IS:,$
DAT ENDS
CODE SEGMENT
ASSUME CS:CODE,DS;DAT
MOV AX,DAT
MOV DS,AX
STAR:
MOV SI,OFFSET BLOCK
MOV DI,OFFSET PLUS_D
MOV BX,OFFSET MINUS_D
MOV CX, 8 ;數據個數送CX
GOON: LODSB ;AL← [SI]
TEST AX, 80H
JNZ JMIUS ;為負數,轉
INC PLUS ;正數個數加壹
STOSB ;[DI] ←AL,傳正數
JMP AGAIN
JMIUS: INC MINUS ;負數個數加壹
XCHG BX, DI
STOSB ;送負數到緩沖區
XCHG BX, DI
AGAIN: DEC CX
JNZ GOON
MOV AX,$
MOV [DI], AX;
MOV [BX],AX
LEA DX,PLUSNUMS
MOV AH,9
INT 21H
MOV DL,PLUS
MOV AH,8
INT 21H
LEA DX,PLUSS
MOV AH,9
INT 21H
LEA DX,PLUS_D
MOV AH,9
INT 21H
LEA DX,MINUSNUMS
MOV AH,9
INT 21H
MOV DL,MINUS
MOV AH,8
INT 21H
LEA DX,PMINUSS
MOV AH,9
INT 21H
LEA DX,MINUS_D
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END STAR