level 6
-a100mov ah, 0amov dx, 200int 21mov ah, 02mov dl, 0dint 21mov dl, 0aint 21mov ah, 09mov dx, 200int 21int 20-gfjiwejgioejgioejeiojgeiojgeijgiwjg|<-为什么我输到这里就不让再输了啊?每次都是这样...
2008年04月21日 04点04分
1
level 7
对于21h的0ah号功能调用参数:DS:DX=缓冲区首DS:[DX]=缓冲区最大容量
2008年04月21日 07点04分
5
level 6
谢谢 这个问题是时有时无的.我在纯DOS下输出都没问韪,可以输到127个字。在XP下就不行了,只能输入1~20个字,我想可能是缓冲区设置问题。
2008年04月23日 11点04分
7
level 6
3f出现一大堆乱码是因为你没有在字符末尾添加'$'符
2008年04月23日 11点04分
8
level 6
数据段和堆栈段最好不要和代码段放在同一段,这是我得出经验...(-_-)
2008年04月23日 11点04分
10
level 6
关于这个问题:mov ah, 0aHmov dx, 200int 21h和:汇编里的:mov ah, 0aHmov dx, Offset bufferint 21h是一样的,要想调用10号功能输入一串字符,就必需先建立一个有预留字的缓冲区:首先:buffer 应该定义成这样: buffer db 40,0,40dup(0)然后才能调用mov dx, offset buffermov ah, 0ahint 21h那么,现在换到debug里面,这一步也是不能省略的。(嘻嘻,不建立缓冲区,debug也不给面子.)我的做法是: -FDS:200 240 ' ' ;用空格填充这40个字节-EDS:240 '$' ;建立一个40个字节的缓冲区.并在末尾加上$符然后:-A100-.... ;就可以放心调用了。debug其实和汇编就是一样的,变量和缓冲区都要事件声明,只不过debug里无法设标签来代替实际地址,一切都要自己输进去。
2008年04月27日 07点04分
15
level 7
1.测试buffer db 40,0,40 dup(0)最多输入39个字符2.的确如兄所言那个缓冲区要自己度身量造3.就如偶上面同时修改200h 201h 两处使其最大输入数达到0feh个字符4.在masm5中buffer db 255,0,255 dup(0)256就会出错原因是db是定义一个字节最大也只能是0ffh即255d5.那么超过255的话该如何处理?buffer dw 300,0,300 dup(0)偶测试并不能达到300实际是43个偶推测了一下原因300d=12ch即当mov dx,offset buffer时ds:[dx]=2ch这也就限制了最大字符数为2bh即43
2008年04月27日 11点04分
16
level 6
纠正一下我15F的一个错误:-FDS:200 240 ' ' ;用空格填充这40个字节 <————Error-EDS:240 '$' ;建立一个40个字节的缓冲区.并在末尾加上$符 --------------------------------------从200~240是64个字节,因为Debug默认为16进制。
2008年04月28日 07点04分
17