




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
5 3字符串输入输出方法5 3 1字符串输出 入口参数 AH 9 是DOS的子功能号DS DX 待输出字符串的首字符的逻辑地址 说明 1 被输出的字符串的长度不限 但必须连续存放在内存的某个地方 且以ASCII值为24H的字符 结束 中间可以含有回车符 换行符 响铃符等特殊功能符号 存放字符串的起始逻辑地址必须放在指定的寄存器DS和DX中 2 符本身不输出到屏幕 3 调用结果是把字符串中的各个字符从光标当前所在位置起 依次显示在屏幕上 直至遇到 为止 光标停在最后一个输出符号的后面 4 如果程序中需要输出 只能用2号子功能实现 5 9号子功能调用将影响AL的内容 不改变其余寄存器及标志寄存器的值 例5 5 分析下面的程序 写出程序执行后的结果 dataSEGMENTbuf1DB Hello 13 10 thisisanexample 13 10buf2DB END dataENDScodeSEGMENTASSUMECS code DS datamain MOVAX dataMOVDS AX LEADX buf1 MOVAH 9INT21HMOVDX OFFSETbuf2INT21HMOVAX 4C00HINT21HcodeENDSENDmain 解 执行结果如下 Hello thisisanexample END 分析一下例5 5的程序 1 程序包括两个段 data段中只有变量定义 是数据段 code段中是指令序列 是代码段 2 ASSUME伪指令只用来说明code段中定义的各标识符 实际只有标号main 以CS为缺省段寄存器 data段中的各标识符 两个变量 以DS为缺省段寄存器 ASSUME伪指令本身并没有对CS和DS赋值的功能 所以代码段的最前面两条指令就是用来对DS赋值 因为后面的字符串输出要求把输出串的段地址放到DS中 3 程序中没有类似的指令对CS赋值 这是因为操作系统DOS把该程序调进内存后 会把机器的控制权交给该程序 这是通过修改CS和IP的值的方法实现的 也就是说 DOS在移交控制权时就已经把CS和IP都放好了正确的值 而不需要用户程序进行处理 4 程序中的第1次INT21H调用前 用LEA指令把变量buf1的偏移地址取到寄存器DX中 用MOV指令把AH赋值为子功能号9 而在此之前DS已被赋值为buf1所在的data段的段地址 5 变量buf1中的第1个字符是字母 H 9号子功能从该字母开始 逐个显示后续字符 遇到13和10分别进行回车换行处理 直到遇到 符为止 本身并不出现在屏幕上 此时的输出情况是 Hello thisisanexample 并且光标停在了第2行输出的最后一个符号 的后面 虽然buf1的定义中在 后面还有内容 这些内容都不会被输出 6 由于9号子功能调用的结果并不改变除了AL以外的其它寄存器的值 故调用完后AH中仍然是9 所以第2次调用INT21H时只对DX重新赋了值 取的是buf2的偏移地址 因而第2次INT21H调用仍然是9号 从光标所在位置输出buf2的内容直到 于是得到前面的输出结果 例5 6 对例5 5的程序稍做修改成为下面的情况 写出程序执行后的结果 dataSEGMENTbuf1DB Hello 13 10 thisisanexample 13 10buf2DB END dataENDScodeSEGMENTASSUMECS code DS datamain MOVAX dataMOVDS AXLEADX buf1 MOVAH 9 2020 1 29 9 可编辑 INT21HMOVAX 4C00HINT21HcodeENDSENDmain 解 执行结果如下 Hello thisisanexample END 5 3 2字符串输入 入口参数 AH 0AH 是DOS的子功能号10DS DX 输入缓冲区的起始逻辑地址输入缓冲区有特定的要求 其内存图如图5 3所示 len1 len2 DS DX 允许输入的最大字符数 实际输入的字符数 输入串的各个字符 图5 3用DOS的10号子功能进行字符串输入的缓冲区要求 出口参数 由DOS的10号子功能在输入缓冲区中填写实际输入情况 即根据键盘输入情况 对图5 3中的 实际输入字符数 和 输入串的各个字符 部分进行填写 说明 1 输入缓冲区是一段连续的内存区 首地址必须在调用10号子功能前放到指定的寄存器DS和DX中 2 10号子功能在调用时等待操作员从键盘上按键 直到按下回车键为止 按键情况会显示在屏幕上 最后按下的回车键会导致回车操作 如果在按回车键之前发现输入有错误 可以使用退格键或向左的箭头进行修改 3 输入缓冲区的最前面一个字节 图5 3中len1处 的值由用户程序填写 用以指出允许输入的最大字符数 该值是字节型无符号数 有效范围是0 255 最后按的回车键也计算在内 当已输入len1 1个字符后就只能按回车键了 按其它键都会被认为是不正确的输入而不被机器认可 并且喇叭还会发出 嘀 的一声响以示警告 如果len1 1 表示只能按1个键 这个键只能是回车键 按其它键都会有 嘀 的一声警告 如果len1 0 表示一个键都不能按 包括回车键在内的任何按键都会被拒绝并且发出 嘀 的警告声 但机器又在等待输入 这一矛盾将导致无限期等待 即死机 4 输入缓冲区的次字节 图5 3中len2处 是由DOS的10号子功能填写的 在调用前用户程序可把它设为任意值 用户程序填写的这个值对10号子功能调用没有任何影响 5 子功能调用完成后 输入的字符串以ASCII的形式从输入缓冲区的第3个字节起连续存放 最后一个字符是回车键 0DH 第2个字节中放的是输入字符串的有效长度 最后的回车键不计算在内 用户程序可以从缓冲区的第2字节起取得输入字符串的串长及各个字符 例5 7 设有数据段定义如下 dSEGMENTbufDB10 11DUP 0 dENDS画出数据段的内存图 然后执行下面的程序段 设buf的缺省段寄存器为DS MOVAX dMOVDS AXMOVAH 10LEADX buf INT21H假设执行时键盘上的输入情况是在按A1B2后按回车键 画出程序段执行后的数据段的内存图 解 见图5 4 a 和 b 0A000000000000 00 0000000100020003000
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国铰接臂AWP行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国铝合金行业深度调研及投资前景预测研究报告
- 2025-2030中国铂铜合金行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国钻石刀片行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国钢材行业供需趋势及投资风险研究报告
- 2025-2030中国钉枪行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国野味皮制品行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国醋酸(乙酸)行业发展现状调研及市场趋势洞察研究报告
- 2025-2030中国造纸及纸制品行业市场发展现状及发展趋势与投资前景研究报告
- 2025-2030中国远程等离子体源行业市场发展趋势与前景展望战略研究报告
- 校长在中考复习备考研讨会上讲话:聚焦中考命题核心!靶向突破薄弱环节
- 2025年湖北省八市高三(3月)联考化学
- 健康管理师的心理健康指导试题及答案
- 3.2《做自尊的人》课件-2024-2025学年统编版道德与法治七年级下册
- 德育测试试题及答案
- 设计院挂靠合作协议书范本
- 2025年中国电子信息产业集团有限公司招聘笔试参考题库含答案解析
- 2025年江苏省职业院校技能大赛高职组(智慧物流)参考试题库资料及答案
- 上海市松江区届2024-2025学年高三上学期一模考试历史试题(解析版)
- 2025年浙江省高职单招《职业适应性测试》高频必练考试题(附答案)
- 《影视照明技术》课件:照亮影视作品的灵魂
评论
0/150
提交评论