| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1130 人关注过本帖
标题:王爽汇编试验九----练技术贴(没啥技术)
取消只看楼主 加入收藏
Explorerlxz
Rank: 9Rank: 9Rank: 9
来 自:zzu
等 级:蜘蛛侠
威 望:4
帖 子:302
专家分:1032
注 册:2013-4-24
结帖率:100%
收藏
 问题点数:0 回复次数:2 
王爽汇编试验九----练技术贴(没啥技术)
图片附件: 游客没有浏览图片的权限,请 登录注册

程序代码:
data segment
    db 'Welcome to masm !'
    db 02h,42h,71h
data ends
assume cs:code
code segment
start:    mov ax,data
    mov ds,ax
    mov si,0

    mov ax,0b800h
    mov es,ax
    mov di,[160*11+2*32];从第11行32列开始显示字符

    mov bx,17

    mov cx,3;外循环控制三行
s:
    push cx
    mov cx,17
s0:    mov al,[si];内循环单行每个字符的移动
    mov es:[di],al
    inc di
    mov al,[bx]
    mov es:[di],al
    inc si
    inc di
    loop s0
    inc bx
    pop cx
    sub si,17
    add di,126
    loop s

    mov ax,4c00h
    int 21h
code ends
end start
搜索更多相关主题的帖子: 技术 
2014-06-06 09:58
Explorerlxz
Rank: 9Rank: 9Rank: 9
来 自:zzu
等 级:蜘蛛侠
威 望:4
帖 子:302
专家分:1032
注 册:2013-4-24
收藏
得分:0 
如果想要屏幕干净一点(没有其他字符),提前调用一个清屏子程序就可以了,如下
图片附件: 游客没有浏览图片的权限,请 登录注册

程序代码:
data segment
    db 'Welcome to masm !'
    db 02h,42h,71h
data ends
assume cs:code
code segment
start:    mov ax,data
    mov ds,ax
    mov si,0

    mov ax,0b800h
    mov es,ax
    mov di,[160*11+2*32];从第11行32列开始显示字符

    mov bx,17

    call clean_screen

    mov cx,3;外循环控制三行
s:
    push cx
    mov cx,17
s0:    mov al,[si];内循环单行每个字符的移动
    mov es:[di],al
    inc di
    mov al,[bx]
    mov es:[di],al
    inc si
    inc di
    loop s0
    inc bx
    pop cx
    sub si,17
    add di,126
    loop s

    mov ax,4c00h
    int 21h

clean_screen:
    push ax;此子函数用于清空屏幕
    push es
    push si
    push cx
    mov ax,0b800h
    mov es,ax
    mov si,0
    mov cx,2000
   be:  mov ax,0002h
    mov es:[si],ax
    add si,2
    loop be
    pop cx
    pop si
    pop es
    pop ax
    ret
code ends
end start
2014-06-06 10:02
Explorerlxz
Rank: 9Rank: 9Rank: 9
来 自:zzu
等 级:蜘蛛侠
威 望:4
帖 子:302
专家分:1032
注 册:2013-4-24
收藏
得分:0 
在windows xp下debug有时候好像不能显示第一行的内容,其实这是程序运行的太快,运行结束后马上滚屏导致的
在程序返回之前加上一个就
    mov ah,0
    int 16h
可以了,功能相当于C语言中的getchar(),即接受一个按键!如下所示
图片附件: 游客没有浏览图片的权限,请 登录注册

程序代码:
data segment
    db 'Welcome to masm !'
    db 02h,42h,71h
data ends
assume cs:code
code segment
start:    mov ax,data
    mov ds,ax
    mov si,0

    mov ax,0b800h
    mov es,ax
    mov di,0;从第1行1列开始显示字符

    mov bx,17

    call clean_screen

    mov cx,3;外循环控制三行
s:
    push cx
    mov cx,17
s0:    mov al,[si];内循环单行每个字符的移动
    mov es:[di],al
    inc di
    mov al,[bx]
    mov es:[di],al
    inc si
    inc di
    loop s0
    inc bx
    pop cx
    sub si,17
    add di,126
    loop s

    mov ah,0
    int 16h

    mov ax,4c00h
    int 21h

clean_screen:
    push ax;此子函数用于清空屏幕
    push es
    push si
    push cx
    mov ax,0b800h
    mov es,ax
    mov si,0
    mov cx,2000
   be:  mov ax,0002h
    mov es:[si],ax
    add si,2
    loop be
    pop cx
    pop si
    pop es
    pop ax
    ret
code ends
end start



[ 本帖最后由 Explorerlxz 于 2014-11-30 10:05 编辑 ]
2014-06-06 10:12
快速回复:王爽汇编试验九----练技术贴(没啥技术)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027476 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved