- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
练习 怎么把BCD码转换成二进制值? 用4位二进制数来表示数值中的1位(十进制数中的0~9这10个数字),简称BCD码,即BCD代码 也可以这样理解:就是将十进制的数以8421的形式展开成二进制(14 以8421形式展现成二进制就是0 0 0 1 0 1 0 0 十进制表示就是20) 14的BCD码为20. 函数的作用就是把20变成14. 怎么把20变成14呢?从定义出发, 每一位用4位二进制表示.那就把BYTE的前4位*10,加上后四位即可。 bcd码是四位二进制码, 也就是将十进制的数字转化为二进制, 但是和普通的转化有一点不同, 每一个十进制的数字0-9都对应着一个四位的二进制码,对应关系如下: 十进制0 对应 二进制0000 ;十进制1 对应二进制0001 ....... 9 1001 接下来的10就有两个上述的码来表示 10 表示也就是BCD码是遇见1001就产生进位,不象普通的二进制码,到1111才产生进位10000 7.6 汇编语言程序设计 * 7.6 汇编语言程序设计 7.6.3 循环程序设计 循环程序的结构 初始化 循环体 修改 N 初始化 修改 结束处理 (b) N 进入循环? Y 循环体 结束循环? Y 结束处理 (a) “先执行后判断”结构 “先判断后执行”结构 一个循环程序一般由四部分组成:初始化、循环体、循环控制和循环结束处理。 * 7.6 汇编语言程序设计 循环控制方法 (1) 用计数控制循环 这种方法直观、方便,易于程序设计。只要在编制程序时,循环次数已知,就可以使用这种方法设计循环程序。 (2) 用条件控制循环 有些情况无法确定循环次数,但可用某种条件来确定是否结束循环。这时,编制程序主要是寻找控制条件以及对控制条件的检测。 * 7.6 汇编语言程序设计 编程例8:从xx单元开始的30个连续单元中存放有30个8位无符号数,从中找出最大者送入yy单元中。 根据题意,可把第一个数先 送入AL寄存器,将AL中的 数与后面的29个数逐个进行 比较。如果AL中的数较 小,则两数交换位置;如果 AL中的数大于等于相比较 的数,则两数不交换位置。 在比较过程中,AL中始终 保持较大的数,比较29次, 则最大者必在AL中。最后 把AL中的数(最大者)送入yy 单元。 MAX.asm * DATASP SEGMENT xx DB 73,59,61,45,81 DB 107,37,25,14,64 DB 3,17,9,23,55,97 DB 115,78,121,67 DB 215,137,99,241 DB 36,58,87,100,74,62 yy DB ? DATASP ENDS CODESP SEGMENT ASSUME CS:CODESP ASSUME DS:DATASP MAIN PROC FAR START:PUSH DS XOR AX,AX PUSH AX MOV AX, DATASP MOV DS,AX MOV AL,xx MOV SI,OFFSET xx MOV CX,29 LOOP1:INC SI CMP AL,[SI] JAE LOOP2 XCHG AL,[SI] LOOP2:LOOP LOOP1 MOV yy,AL RET MAIN ENDP CODESP ENDS END START 7.6 汇编语言程序设计 用户程序执行完后返回DOS状态标准方法 Max.asm * 7.5 汇编语言程序的实验上机过程 根据题意,被累加的自然数的个数事先是未知的,即循环的次数是未知的,因此不能用计数器方法控制循环。 但题目中给定一个重要条件,即累加和大于1000则停止累加,因此,可以根据这一条件控制循环。设用CX寄存器统计自然数的个数,用AX寄存器存放累加和,用BX寄存器存放每次取得的自然数,则可得相应的程序流程图。 7.6 汇编语言程序设计 编程例9:从自然数1开始累加,直到累加和大于1000为止,统计被累加的自然数的个数,并把统计的个数送入n单元,把累加和送入sum单元。 OneTo100.asm * DATAS SEGMENT n DW ? sum DW ? DATAS ENDS STACK SEGMENT PARA STACK STACK
文档评论(0)