设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
中问网首页
我的收藏
站长博客
搜索
搜索
本版
帖子
用户
第一问答网
»
论坛
›
中问网
›
问答
›
汇编 输入字符串
返回列表
发新帖
汇编 输入字符串
[复制链接]
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...
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
千问
主题
0
回帖
4882万
积分
论坛元老
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
积分
48824836
加好友
发消息
回复楼主
返回列表
问答
热门排行