汇编复习1--十进制输出的两种方式

来源:互联网 发布:一刀流 游戏源码 编辑:程序博客网 时间:2024/06/05 22:55
以十进制输出ax的值(0-65535)
1.方法一:通过堆栈来实现
入栈:
ax每次除以10,将余数压栈,商就保存在ax里,并用cx计入栈个数。当商不为0时,继续循环;否则开始出栈
出栈:

将刚刚保存的余数分别出栈,变为对应的ASCII值后输出


dec_out1 proc near    push ax    push bx    push cx    push dx        mov bx,10    mov cx,0yazhan:    mov dx,0    div bx        push dx    inc cx        cmp ax,0    jz chuzhan        jmp yazhan    chuzhan:    pop dx    add dl,30h    mov ah,2                int 21h               loop chuzhan        pop dx    pop cx    pop bx    pop ax        retdec_out1 endp


2.方法二:利用除法
ax先除以10000,输出商。余数除以1000,再输出商。余数除以100 ,再输出商。余数除以10,再输出商。余数除以1,再输出商。


dec_out2  proc  near  mov bx,ax         mov   cx, 10000d         call  dec_div         mov   cx, 1000d         call  dec_div         mov   cx, 100d         call  dec_div         mov   cx, 10d         call  dec_div         mov   cx, 1d         call  dec_div         retdec_out2  endpdec_div  proc  near         mov   ax, bx         mov   dx, 0         div   cx         mov   bx, dx;将每次的余数保存在bx中         mov   dl, al         add   dl, 30h         mov   ah, 2         int   21h         retdec_div  endp

两种方法的比较:

我认为第一种方式更好,因为第二种方法如果不够10000,也会输出前面的0。而且第一种方法利用了堆栈的先进后出的特点,比较巧妙。

0 0
原创粉丝点击