主题:[讨论]帮忙看看是否有问题(把正数和负数分离,并求其各自)
DATA SEGMENT
ORITAB DB 33,22,11,-12,42,81,-17,54,-70,3
ODD DB 10 DUP(?)
DB '$'
EVE DB 10 DUP(?)
DB '$'
SUM_ODD DW ?
SUM_EVE DW ?
DATA ENDS
STACK SEGMENT PARA STACK'STACK'
STACK ENDS
CODE SEGMENT
START PROC FAR
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
XOR DX,DX
MOV BX,0
MOV SUM_ODD,BX
MOV SUM_EVE,BX
MOV DI,OFFSET ODD
MOV SI,OFFSET EVE
MOV BP,OFFSET ORITAB
MOV CX,10
LOP: MOV AL,[BP]
CMP AL,0
JL EVEP
JG ODDP
JMP NEXT
ODDP: MOV [DI],AL
INC DI
MOV DL,AL
MOV BX,0
MOV BX,SUM_ODD
ADD BX,DX
MOV SUM_ODD,BX
JMP NEXT
EVEP: MOV [SI],AL
INC SI
MOV DL,AL
MOV BX,0
MOV BX,SUM_EVE
ADD BX,DX
MOV SUM_EVE,BX
JMP NEXT
NEXT: INC BP
LOOP LOP
MOV DX,SUM_ODD
MOV [DI],DL
INC DI
MOV [DI],DH
MOV DX,0
MOV DX,SUM_EVE
MOV [SI],DL
INC SI
MOV [SI],DH
RET
START ENDP
CODE ENDS
END START
ORITAB DB 33,22,11,-12,42,81,-17,54,-70,3
ODD DB 10 DUP(?)
DB '$'
EVE DB 10 DUP(?)
DB '$'
SUM_ODD DW ?
SUM_EVE DW ?
DATA ENDS
STACK SEGMENT PARA STACK'STACK'
STACK ENDS
CODE SEGMENT
START PROC FAR
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
XOR DX,DX
MOV BX,0
MOV SUM_ODD,BX
MOV SUM_EVE,BX
MOV DI,OFFSET ODD
MOV SI,OFFSET EVE
MOV BP,OFFSET ORITAB
MOV CX,10
LOP: MOV AL,[BP]
CMP AL,0
JL EVEP
JG ODDP
JMP NEXT
ODDP: MOV [DI],AL
INC DI
MOV DL,AL
MOV BX,0
MOV BX,SUM_ODD
ADD BX,DX
MOV SUM_ODD,BX
JMP NEXT
EVEP: MOV [SI],AL
INC SI
MOV DL,AL
MOV BX,0
MOV BX,SUM_EVE
ADD BX,DX
MOV SUM_EVE,BX
JMP NEXT
NEXT: INC BP
LOOP LOP
MOV DX,SUM_ODD
MOV [DI],DL
INC DI
MOV [DI],DH
MOV DX,0
MOV DX,SUM_EVE
MOV [SI],DL
INC SI
MOV [SI],DH
RET
START ENDP
CODE ENDS
END START