| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 605 人关注过本帖
标题:求高手找错。
只看楼主 加入收藏
LegendofMine
该用户已被删除
收藏
已结贴  问题点数:20 回复次数:1 
求高手找错。
提示: 作者被禁止或删除 内容自动屏蔽
搜索更多相关主题的帖子: 字符串 word 
2010-06-23 01:28
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:20 
楼上的兄弟主要是没有搞清楚int 21h 0ah号功能调用的详细使用方法,所以才会困惑。

调用前,输入缓冲区的第一字节必须标示输入缓冲区的长度(<81),调用后第二字节的内容为用户真实的输入字串长度。第三字节开始是真实输入缓冲区内容。

所以程序得这样写:
data segment
    string db 'Please input one word:$'
    str db 10,10 dup(0)
    sentence db 'Press enter to quit$'
data ends
code segment
    assume cs:code,ds:data
    start:    mov ax,data
        mov ds,ax
        mov dx,offset string
        mov ah,09h
        int 21h
        
        lea dx,str
        mov ah,0ah
        int 21h
        
        lea si,str                          //缓冲区寻址
        mov dx,si                           //为了显示调用

        mov al,byte ptr[si+1]               //计算要移动的偏移
        movzx ax,al                         //长度对齐
        add si,ax                           //移动指针
        add si,2                            //加上前两个字节的长度
        mov byte ptr[si],'$'                //放入字符串终止符
   
        add dx,2
        mov ah,09h
        int 21h
        

        lea dx,sentence
        mov ah,09h
        int 21h

        mov ah,01h
        int 21h

        mov ah,4ch
        int 21h
code ends
    end start

BTW:
没有处理换行,楼主自己在琢磨一下吧。

举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2010-06-24 16:11
快速回复:求高手找错。
数据加载中...
 
   



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

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