第6章 子程序 汇编语言程序设计 教学课件.ppt

第6章 子程序 汇编语言程序设计 教学课件.ppt

  1. 1、本文档共113页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 子程序 汇编语言程序设计 教学课件

【例6.11】编写子程序read,从键盘上读入一个整数。 【分析】为了尽可能与高级语言中整数输入的情况一致,子程序不仅要能读入正确输入时的数据,还要能对不正确的输入做出适当的反应,因此设计上要注意几个问题:首先是要用字符串输入方式(DOS的10号子功能),因为这种方式支持退格键修改功能,因而需要准备相应的输入缓冲区;出口参数需要两个,以CF的设置表示输入是否正确,当输入正确时把整数值放在AX中作为输入结果;要能够跳过若干个连续的空格符;要能够处理正负号。 【解】 ; 功能 : 从键盘读入整数值 ; 入口 : CF = 为0表示废弃多余符号,相当于READLN; ; 为1则把多余符号留作下一次输入,相当于READ ; 出口 : CF = 0表示正常读入,1表示输入有错 ; 破坏寄存器 : 无 read PROC NEAR PUSH BX PUSH CX PUSH DX PUSH SI PUSH DS ;以上为寄存器保护 PUSHF PUSH CS POP DS ;令DS取CS的值 rd1: MOV BX,CS:[point] ;取上次输入后已读取到输入串的位置 rd2: INC BX CMP CS:[bufin+BX+1], JE rd2 ;跳过空格 CMP CS:[bufin+BX+1],13 JNZ rd4 ;不是回车键,转读入数值处理 rd3: LEA DX,CS:[bufin] MOV AH,10 INT 21H ;遇回车键要求再次输入 MOV AH,2 MOV DL,10 INT 21H ;换行 MOV CS:[point],0 JMP rd1 ;对新的输入再转去跳过前导空格 rd4: MOV SI,BX DEC SI ;令SI指向输入串的第一个有效字符 MOV AX,0 MOV BX,10 MOV CX,0 rd5: CMP CS:[bufin+SI+2], + JNZ rd6 ;不是正号转 CMP CL,1 JE rd10 ;已读到正确数值后,遇正号转 CMP CL,0 JE rd8 ;正号是第一个有效字符转 STC ;输入有错 JMP rd13 rd6: CMP CS:[bufin+SI+2], - JNZ rd9 CMP CL,1 ;已读到正确数值后,遇负号转 JE rd10 CMP CL,0 JE rd7 ;负号是第一个有效字符转 STC ;输入有错 JMP rd13 rd7: MOV CH,1

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档