Chinaunix首页 | 论坛 | 博客
  • 博客访问: 674317
  • 博文数量: 156
  • 博客积分: 3402
  • 博客等级: 中校
  • 技术积分: 1639
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-13 14:06
个人简介

业余编程爱好者

文章分类

全部博文(156)

文章存档

2014年(1)

2013年(13)

2012年(46)

2011年(38)

2010年(58)

分类: WINDOWS

2011-12-18 17:07:54

《汇编语言》实验10.3,改写了下,在不使ax溢出的前提下,能完美显示ax中的数字,而且是彩色的。使用堆栈做了参数传递接口。但通过编写这些小程序,发现这种编码风格,本身存在着容易让程序员思路混乱的情形。必须小心的考虑寄存器会不会被占用,寄存器会不会溢出。
        org     0100h
start@:
        mov     ax,cs
        mov     ds,ax
        mov     ss,ax
        mov     sp,stackStart@
        mov     ax,15645
        push    0
div@:
        mov     dx,0
        mov     bx,10
        div     bx
        add     dx,30h
        push    dx
        mov     cx,ax
        jcxz    show_str
        jmp     div@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
show_str:
        pop     dx
        mov     cx,dx
        jcxz    end@
        push    bx
        mov     ah,09h                                  ;调用9号DOS功能打印字符
        mov     al,dl
        mov     bl,01001010b
        mov     bh,0
        push    cx
        mov     cx,1

        int     10h                                     
        pop     cx
        pop     bx
        mov     ah,02h
        int     21h
        jmp     show_str

end@:
        jmp     $

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;dataStart@:
;        db      100 dup (' ')
;dataEnd@:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
stackEnd@:
        db      100 dup (0)                            ;堆栈区初始化
stackStart@:
阅读(1232) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

cf6303142011-12-18 17:14:02

如果通一使用堆栈做参数传递接口,就能避免这种编程时思维的混乱。然而一个系统栈是不够的,同时放数据和子程序返回的地址,不好操作。这样就引申出了forth的思想,使用两个个堆栈--数据栈和返回栈。