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

业余编程爱好者

文章分类

全部博文(156)

文章存档

2014年(1)

2013年(13)

2012年(46)

2011年(38)

2010年(58)

分类: WINDOWS

2011-12-15 18:36:55

对于《汇编语言》实验10.1,增加了有条件转移指令,遇到字符串里的0,就跳出程序,停止转换。
        org     0100h
start@:
        mov     dh,15                                  ;显示在屏幕的行数
        mov     dl,20                                  ;显示在屏幕的列数
        mov     cl,2                                   ;显示在屏幕的颜色
        mov     ax,cs
        mov     ds,ax
        mov     ss,ax
        mov     sp,stackStart@
        mov     si,0
        call    show_str
        jmp     $
        mov     ax,4c00h
        int     21h
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
show_str:                                               ;屏显子程序,接收三个参数

        mov     al,160
        mov     bl,dh
        mul     bl
        add     dl,dl
        mov     bl,dl
        mov     bh,0
        add     ax,bx
        mov     bx,dataStart@
        add     si,ax
        mov     dh,cl
        mov     cx,dataEnd@-dataStart@

s@:
        push    cx                                      ;将循环次数入栈,保存起来
        mov     cl,[bx]                                 ;将字符串的单个字符放入cl
        mov     ch,0                                    ;补全cx
        jcxz    return@                                 ;若内容为0,则跳出循环

        mov     dl,[bx]
        mov     ax,0b800h
        mov     ds,ax
        mov     [ds:si],dx
        mov     ax,cs
        mov     ds,ax
        inc     bx
        add     si,2
        pop     cx                                      ;恢复循环次数cx
        loop    s@
return@:
        pop     cx                                      ;弹出cx,不然会影响ret的正确返回
        ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
dataStart@:                             
        db '-_-! Welcome to fasm!',0,'I am here!'      ;data区,存放要处理的数据
dataEnd@:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
stackEnd@:
        db 100 dup ('*')                               ;堆栈区初始化
stackStart@:
阅读(1260) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~