那啥,怎么放进百度空间啊?哦,好了。我已经上传到百度空间了
追答DISP PROC NEAR ;自定义DISP过程
PUSH CX
PUSH BX
PUSH DX 三行压栈,保护现场
XOR CX, CX 令CX=0
NEXT_DIV:
XOR DX, DX 令DX=0
MOV BX, 10 设定除数
DIV BX DX_AX / BX = AX...DX
PUSH DX 保存余数,即个位数
INC CX 位数加一
CMP AX, 0 与0比较
JE D_END 相等就转移
JMP NEXT_DIV 不为0则继续去除以10
上面,循环除以10,直到AX=0。
余数,在DX,即为:个位、十位、百位...,
都压栈了。
CX,位数
;-----------------------
下面是显示。
D_END:
POP DX 取出最后压栈的,比如说是百位数
ADD DL, 30H 变成 ASCII 码
MOV AH, 2 这两行是显示DL内容
INT 21H
LOOP D_END CX-1,非零转移到前面,去显示十位数
按照 CX 来循环,依次显示出来百位、十位、个位。
MOV AH, 2 2 号功能调用,是显示 DL 的内容
MOV DL, ' ' 这三行,显示一个空格
INT 21H
POP DX 三行,恢复现场
POP BX 弹出次序,要和压栈次序相反
POP CX
RET 返回主程序
DISP ENDP 过程结束
CRLF PROC NEAR ;自定义过程
PUSH AX
PUSH DX
MOV AH, 2 2 号功能调用,显示 DL 的内容
MOV DL, 0DH 这三行,显示0D,回车符
INT 21H
MOV DL, 0AH 这两行,显示0A,换行符
INT 21H
POP DX
POP AX
RET 返回
CRLF ENDP 过程结束
CODES ENDS 代码段结束
END START 全部程序结束,从 START 开始执行
字数超了,删了一些。
觉得没有说明白,还可以追问。
大神啊,我膜拜你,来来来,财富值拿好,辛苦你了
追答DISP 过程的功能是:以十进制数,显示 AX 中的内容。
显示数字之后,还显示了一个空格。
DIV BX,是 32 位数除以 16 位数。
即: DX_AX / BX = AX...DX
商在 AX,余数在 DX。
CRLF 过程的功能是,显示回车、换行。