汇编语言程序设计实践.ppt

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

显示输入十进制数提示 开始 置数据段首地址 调用DECBIN子程序 调用回车换行宏指令 显示十六进制数结果提示 调用BINHEX子程序 调用回车换行宏指令 5.3.2 程序流程 主程序流程图 不断循环,可重复输入; 停止程序运行用Ctrl+C。 两个子程序间用BX传递数据 DECBIN子程序流程图 开始 BX清0 AL←键盘输入 AL←AL-30H 有借位? AL≥A? AH←0 子程序返回 N N Y Y AX、BX交换 DX、AX←AX×0AH DX≠0? BX←BX+AX 有进位? 显示输入太大提示 结束 N N Y Y Y CH-1=0? 1位显示 N 开始 CH←4 BX循环左移4位 DL←BL DL←DL低4位 DL←DL+30H DL≥3A? DL←DL+7 子程序返回 N Y BINHEX子程序流程图 5.3.2 程序清单 数据段和宏指令 DATA SEGMENT ECHO1 DB INPUT DECIMAL:$ ECHO2 DB HEX RESULT IS:$ ECHO3 DB TOO BIG!$ DATA ENDS CRLF MACRO ;定义宏指令,回车换行 MOV AH,2 MOV DL,0AH ;显示换行符 INT 21H MOV AH,2 MOV DL,0DH ;显示回车符 INT 21H ENDM 带参数宏指令 注意宏指令与子程序的区别 宏指令的调用: CRLF 展开 主程序 REPEAT: MOV AH,9 MOV DX,OFFSET ECHO1 INT 21H ;显示十进制输入提示信息 CALL DECBIN ;调用键盘输入 ;并转换为十六进制的子程序 CRLF ;光标移到下一行的开始处 MOV AH,9 MOV DX,OFFSET ECHO2;显示十六进制输出提示信息 INT 21H CALL BINHEX ;调用十六进制数显示子程序 CRLF ;光标移到下一行的开始处 JMP REPEAT ;继续下一次的输入和转换显示 DECBIN: ;子程序,键盘输入十进制数,转十六进制存BX中 MOV BX,0 ;十六进制数存BX中,先清0 NEW: MOV AH,1 INT 21H ;键盘输入一个字符 SUB AL,30H ;十进制数0~9的ASCII是30H~39H JC EXIT ;<30H则输入结束 CMP AL,0AH ;≥3AH则输入也结束 JNC EXIT MOV AH,0 ;AL中8位二进制扩展为16位,AH为高8位 XCHG AX,BX ;BX中十六进制数与AX中新输入数字交换 MOV CX,0AH MUL CX ;十六进制数乘0AH,结果在AX中 JC TOOBIG ;若DX≠0,即CF=1,则输入太大 ADD BX,AX ;十六进制乘0AH后与新输入数字相加,结果存BX中 JC TOOBIG ;若有进位,则输入太大 JMP NEW ;循环,继续输入十进制数的下一位数 EXIT: RET DECBIN子程序(1) toobig: mov ah,9 mov dx,offset echo3 ;显示“输入太大的信息” int 21h mov ah,4ch ;程序结束 int 21h DECBIN子程序(2) 将0~9以外的按键当成输入的结束符。 BINHEX子程序 BINHEX: ;子程序,BX中十六进制数显示 MOV CH,4 ;4位十六进制,循环4次 ROTATE: MOV CL,4 ROL BX,CL ;十六进制数循环左移4位,最高位移到最低位 MOV DL,BL AND DL,0FH ;保留低4位 ADD DL,30H ;十六进制数转换为ASCII CMP DL,3AH JC PRINT ADD DL,7 ;若是A~F的数字,则再加07H PRINT: MOV AH,

文档评论(0)

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

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

1亿VIP精品文档

相关文档