自己定义一组有符号的字节数(小于100个),
然后将其分别存入两个数组中,其中正数和负数的个数分别存入各自数组的第一个单元,
最后显示正数的个数和负数的个数,形式为:“+N”和“-M”,
要求:统计部分用一个过程完成,显示部分用一个过程或软中断完成,
软中断的向量自己根据系统要求决定。
题目链接:http://zhidao.baidu.com/question/711091038529152645.html
提问者采纳 2014-06-13 19:51
;---------------------------
ASSUME CS:CC, DS:QW
;---------------------------
QW SEGMENT
M_1 DB 12, 13, 10, -5, -85, 37, 92, -25, 94, 10, -36
DB 1, 100, 12, -37, 85, -6, 28, 125, 34, 17, -92
LLL EQU $ - M_1
M_P DB 101 DUP(0)
M_N DB 101 DUP(0)
MSG DB 13, 10, 'Press any key to continue ... $'
O_P DB 13, 10, '+$'
O_N DB 13, 10, '-$'
QW ENDS
;---------------------------
CC SEGMENT
START:
MOV AX, QW
MOV DS, AX
;
CALL TONGJI
CALL DISPLAY
EXIT:
LEA DX, MSG
MOV AH, 9
INT 21H
MOV AH, 7
INT 21H
MOV AH, 4CH
INT 21H ;返回DOS
;---------------------------
TONGJI:
MOV BX, OFFSET M_1
MOV SI, OFFSET M_P
MOV DI, OFFSET M_N
MOV CX, LLL
LP: MOV AL, [BX]
CMP AL, 128
JB ZHENG
MOV [DI + 1], AL
INC DI
INC M_N
JMP NEXT
ZHENG:
MOV [SI + 1], AL
INC SI
INC M_P
NEXT:
INC BX
LOOP LP
RET
;---------------------------
DISPLAY:
LEA DX, O_P
MOV AH, 9
INT 21H
MOV AL, M_P
MOV AH, 0
CALL OUTPUT
LEA DX, O_N
MOV AH, 9
INT 21H
MOV AL, M_N
MOV AH, 0
CALL OUTPUT
RET
;---------------------------
OUTPUT:
MOV BX, 10
MOV CX, 0
OL1:MOV DX, 0
DIV BX
ADD DL, '0'
PUSH DX
INC CX
CMP AX, 0
JNZ OL1
MOV AH, 2
OL2:POP DX
INT 21H
LOOP OL2
RET
;---------------------------
CC ENDS
END START
;---------------------------
提问要求的过程,这里都有了,并且使用了简便形式。
程序执行结果如下:
C:\MASM>ww
+15
-7
Press any key to continue ...
C:\MASM>
提问者评价:谢谢。