DISPLAY1 PRO NEAR
MOV DISSIGN,0
MOV BX,10
DIVD: DIV BX ;bx,16位,ax放商,dx放余数
PUSH DX
MOV DX,0
TEST AX,AX ;判断ax即商为0?
INC DISSIGN
JE OUT ;=0则开始输出
LOOP DIVD ;否则一直循环
MOV CX,DISSIGN
OUT: MOV AH,02H ;商AX为0开始输出
POP DX
ADD DX,30H ;将十进制数转为ASCII码输出
INT 21H
LOOP OUT ;从最高位开始一步步输出 ,dissign即实际位数
RET
DISPLAY1 ENDP
上面是个子程序,数最大5000所以DAA什么的都不能用
上面编译通过但是最多输出最高位,不知道哪里错了
DISSIGN表示该数位数
------解决思路----------------------
嗯,也有些问题,上面的 OUT: 也不是这样;对照下面的试试吧:
DISPLAY1 PROC NEAR
MOV DISSIGN,0
MOV BX,10
DIVD: DIV BX ;bx,16位,ax放商,dx放余数
PUSH DX
MOV DX,0
INC DISSIGN
TEST AX,AX ;判断ax即商为0?
JNE DIVD ; OUT1 ;=0则开始输出
; LOOP DIVD ;否则一直循环
MOV CX,DISSIGN
OUT1: MOV AH,02H ;商AX为0开始输出
POP DX
ADD DX,30H ;将十进制数转为ASCII码输出
INT 21H
LOOP OUT1 ;从最高位开始一步步输出 ,dissign即实际位数
RET
DISPLAY1 ENDP