【微机原理与汇编语言】子函数练习

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值