- 1、本文档共239页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章汇编语言程序设计(南通大学)(陈继红).ppt
CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG MAIN PROC FAR START:PUSH DS MOV AX,0 PUSH AX MOV AX,DSEG MOV DS,AX MOV SI,OFFSET BUFF ;区间上限送SI MOV CX,COUNT MOV DX,1 ;查找次数 MOV AX,SI ADD AX,CX ;求区间下限 MOV DI,AX ;下限送DI MOV AL,KEY ;关键字送AL COUNT1:MOV BX,SI ADD BX,DI SHR BX,1 ;j=BX/2 CMP AL,[BX] ;关键字与dj比较 JZ FOUND ;找到转FOUND PUSHF ;保护标志 CMP BX,SI ;J等于上限? JZ NOFID ;相等未找到 POPF JL LESS ;关键字小于dJ转 MOV SI,BX ;J作上限 JMP NEXT LESS:MOV DI,BX ;J作下限 NEXT:INC DX ;查找次数加1 JMP COUNT1 NOFID:MOV DX,0FFFFH ;未找到标记0FFFFH POPF FOUND:MOV PTRN,DX ;结果送PTRN单元 RET MAIN ENDP CSEG ENDS END START 4.7.4 功能调用 【例4.26】写一个程序,它先接受一个字符串,然后显示其中数字字符的个数、英文字母的个数和字符串的长度。 解决方法 Step1:利用0AH号功能调用接受一个字符串; Step2:分别统计其中数字字符、英文字母的个数; Step3:用十进制数的形式显示它们。 注意:整个字符串的长度从0AH号功能调用的出口参数中取得。 数据定义: MLENGTH =128 ;缓冲区长度 DSEG SEGMENT ;数据段 BUFF DB MLENGTH ;符合0AH号功能调用所需的缓冲区 DB? ? ;实际键入的字符数 DB MLENGTH DUP(?) MESS0 DB? ‘Please input:$’ MESS1 DB? ‘Length = $’ MESS2 DB? ‘X = $’ MESS3 DB? ‘Y = $’ DSEG ENDS 分类统计流程 SI←字符串首址,CX←字符个数 AL←取1个字符,SI←SI+1 AL ‘0’ ? AL ‘9’ ? AL ‘a’ ? AL ‘z’ ? 数字计数器BL+1 字符计数器BH+1 小写字符不变, 大写字符转成小写 CX←CX-1 CX=0? N N Y Y Y N N 保存结果,结束 Y CSEG SEGMENT ;代码段 ASSUME CS:CSEG, DS:DSEG START: MOV AX,DSEG MOV DS,AX ;设置DS MOV DX,OFFSET MESS0 ;显示提示信息 CALL DISPMESS MOV DX,OFFSET BUFF MOV AH,10 ;接受一个字符串 INT 21H CALL NEWLINE ; MOV BH,0 ;清数字字符计数器 MOV BL,0 ;清字母符计数器 MOV CL,BUFF+1 ;取字符串长度 MOV CH,0
文档评论(0)