汇编 输入字符串

[复制链接]
查看11 | 回复4 | 2017-10-7 09:01:09 | 显示全部楼层 |阅读模式
输入字符串我是这样写的:


mov ah,0ah

int 21h

mov x1,dx;x1是变量
但是我输入之后,不论输入什么,都只有ax寄存器的al变成0D,为什么会这样呢?我输入的内容是存放在哪里的?

回复

使用道具 举报

千问 | 2017-10-7 09:01:09 | 显示全部楼层
DOS的0A号调用之前在内存是需要定义一个数据缓冲区的,键盘输入的数据是存在缓冲区里,你在做这个调用时没有看到你设置的数据缓冲区,因为调用时是要把缓冲区是首地址赋值给DX的。调用的完整格式如下:
ieadx,缓冲区首地址
mov ah,0ah
int 21h...
回复

使用道具 举报

千问 | 2017-10-7 09:01:09 | 显示全部楼层
这个比较特别,你把定义改成这样:dbabc5,?,7dup("$")5是接受输入的最大长度,?是输入的实际长度,实际的输入内容是在abc[2]开始。回答你补充的问题:最后一个是保留的,留给回车字节(第5个)。...
回复

使用道具 举报

千问 | 2017-10-7 09:01:09 | 显示全部楼层
你看一下10号DOS功能调用,它有入口参数的,DS:DX指向的内容依次存放最多允许的字符数、实际输入的字符数、和实际输入的字符,而你根本就没为DS和DX赋值...
回复

使用道具 举报

千问 | 2017-10-7 09:01:09 | 显示全部楼层
ahal是2个8位的可独立使用的寄存器你没有定义AL 啊所以总是原来哪个0DH...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行