谁知道汇编里0ah怎么用?

谁知道汇编里0ah怎么用?

真郁闷,刚才敲了一大通,居然没有发送成功!555
我想你是要问DOS的0ah号功能调用吧?
它的功能是完成从键盘接收一个字符串并存放到内存的规定缓冲区中。
它的入口参数:DX的内容设置为内存缓冲区的首地址;ah里面放10;然后利用int 21h调用就行了。
这里的缓冲区定义,格式上有规定:缓冲区的第0个字节表示字符串的最大长度;第1个字节一般初始化为0,调用结束后会由系统自动存入实际数据的字符个数;第2个字节开始才是存放输入字符的ASCII码。
比如在数据段有如下定义:
buff db 5,0,5 dup(0)
这里的5表示字符串最大长度为5个字符;0占用的那个字节在调用结束后会被放入实际输入的字符个数;5 dup(0)开辟5个字节单元,存放输入的字符的ASCII码。
在代码段用下面的指令进行调用:
lea dx,buff
mov ah,10
int 21h
运行时输入“ABC”
则调用结束后,内存的buff单元的内容应该是:05H,03H,41H,42H,43H,00H,00H
:)明白了没有啊?
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-06-26
真郁闷,刚才敲了一大通,居然没有发送成功,555
我想你是要问DOS的0ah号功能调用吧?
它的功能是完成从键盘接收一个字符串并存放到内存的规定缓冲区中。
它的入口参数:DX的内容设置为内存缓冲区的首地址;ah里面放10;然后利用int 21h调用就行了。
这里的缓冲区定义,格式上有规定:缓冲区的第0个字节表示字符串的最大长度;第1个字节一般初始化为0,调用结束后会由系统自动存入实际数据的字符个数;第2个字节开始才是存放输入字符的ASCII码。
比如在数据段有如下定义:
buff db 5,0,5 dup(0)
这里的5表示字符串最大长度为5个字符;0占用的那个字节在调用结束后会被放入实际输入的字符个数;5 dup(0)开辟5个字节单元,存放输入的字符的ASCII码。
在代码段用下面的指令进行调用:
lea dx,buff
mov ah,10
int 21h
运行时输入“ABC”
则调用结束后,内存的buff单元的内容应该是:05H,03H,41H,42H,43H,00H,00H
:)明白了没有。
第2个回答  2006-12-07
0ah前面要是加0了,就是代表一个16进制数0a,等于10进制中的10,如果看做字符的话,代表table,就是一个制表位,这个一般化在汇编输出时和0dh(回车)一起使用。
如果不加0就是AX寄存器的高位了,在dos中断中常常用来存放中断号
第3个回答  2006-12-07
楼上的说的有问题,加0因为规定(字母数字前必须加),否则编译程序会搞错,后面的h才是指明其是十六进制数。当然如果就这个数而言,他只是代表了十六进制中的十,如果和中断向量合用的话就会成为一些特殊的功能指令了。
相似回答