1、编写子程序output,将AX中的数以无符号十进制形式输出显示。(如果有入口参数或出口参数,请给出相应注释进行说明。)
DATAS SEGMENT
;此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
;main()
MOV AX,1234 ;入口参数
CALL OUTPUT ;call调用output函数
MOV AH,4CH
INT 21H
OUTPUT PROC ;output(){
PUSH BX
PUSH CX
PUSH DX ;保留原始数据,防止中间计算错误找不到原始数据
MOV BH,1;CNT:入栈次数
MOV CL,10;除数
AGAIN:
DIV CL;AL->商 AH->余数
PUSH AX;把余数AH和商AL一并推入栈,最少压两字节,目的压AH保存AH
CMP AL,0
JE PRINT
INC BH ;BH++
MOV AH,0;保证AX只有商
JMP AGAIN
PRINT:
CMP BH,0
JE OUTPUTOVER
POP DX; 栈顶元素出栈
MOV DL,DH;DH里面放的余数 只要输出余数即可
ADD DL,48
MOV AH,2
INT 21H
DEC BH ;BH--
JMP PRINT
OUTPUTOVER:
POP DX
POP CX
POP BX;与PUSH顺序相反 栈先进后出
RE