ASSUME CS:CODE, DS:DATA,SS:STACK1 START: MOV AX, DATA MOV DS, AX MOV AL, XX CMP AL, -1 JG BIGR MOV AL, -1 JMP JUST2 BIGR: CMP AL, 1 JGE JUST1 MOV AL, 0 JMP JUST2 JUST1: MOV AL, 1 JUST2: MOV Y, AL MOV AH, 4CH INT 21H CODE ENDS
END START
4-17 将内存中某数据块中的正数和负数分开,并分别将这些正数和负数送同一
数据段的两个缓冲区中,并在屏幕上显示正数和负数的个数. DATA SEGMENT
D1 DB -1, -2, 1, 2, 3, -4, 4,5,-5,0,0,9,-3 COUNT EQU $-D1
D2 DB 100 DUP(?) D3 DB 100 DUP(?) PNUM DW 1 DUP(?) NNUM DW 1 DUP(?)
CONST DW 10000,1000,100,10,1 DECS DB 5 DUP(0)
HEAD1 DB 'THE NUMBER OF POSITIVE NUMBER IS:$' HEAD2 DB 'THE NUMBER OF NEGATIVE NUMBER IS:$' DATA ENDS
STACK1 SEGMENT PARA STACK DB 100 DUP(0) STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA,SS:STACK1 START: MOV AX, DATA MOV DS, AX
MOV BX, OFFSET D1 MOV SI, OFFSET D2
MOV DI, OFFSET D3 MOV CX, COUNT LOP: MOV AL, [BX] CMP AL, 0 JGE JUST1 MOV [DI], AL INC DI INC NNUM JMP JUST2 JUST1: JE JUST2 MOV [SI], AL INC SI INC PNUM JUST2: INC BX DEC CX JNZ LOP
MOV AH,9H
MOV DX,OFFSET HEAD1 INT 21H
MOV AX,PNUM
MOV DL,0AH MOV AH,02H INT 21H
MOV DL,0DH MOV AH,02H INT 21H
MOV AH,9H
MOV DX,OFFSET HEAD2 INT 21H
MOV AX,NNUM CALL DISPLAY
MOV DL,0AH MOV AH,02H INT 21H
MOV DL,0DH MOV AH,02H INT 21H
MOV