汇编语言程序哨设计第9章.ppt

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

GO: PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV ES,AX MOV DS,AX CLD MOV SI,OFFSET A MOV DI,OFFSET C MOV CX,COUNT MOV BYTE PTR[DI],0 CYCLE: LODSB AND AL,0FH MUL B AAM ADD AL,[DI] AAA STOSB MOV [DI],AH LOOP CYCLE RET STR ENDP COSEG ENDS END GO 例9-13 两个两位的BCD码相乘。 80x86中的乘法指令可实现8位或16位二进制数相乘或两个未组合的十进制数相乘(要经过AAM调整)。但若是两个两位的用BCD码表示的十进制数,就不能直接相乘(即没有相应的调整指令),但可以用累加的方法,编一个程序来实现两位组合的十进制数乘法。算法是对被乘数累加乘数所规定的次数,被乘数的每次累加和都要经过DAA调整;乘数每次减1以后也要经过调整。程序如下所示: NAME MULTIPLY BCD DATA SEGMENT FIRST DB 25H SECOND DB 25H THIRD DB 2 DUP(?) DATA ENDS STACK SEGMENT PARA STACK STACK STAPN DB 100 DUP(?) STACK ENDS COSEG SEGMENT ASSUME CS∶COSEG,DS∶DATA,ES∶DATA STR PROC FAR START: PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV ES,AX MOV BL,FIRST ;取乘数 MOV CL,SECDND ;取被乘数 MOV DX,0 ;DX存积 MOV AL,BL AGAIN: OR AL,AL JZ DONE ;若乘数为0,则转DONE MOV AL,DL ADD AL,CL DAA ;结果在AL MOV DL,AL MOV AL,DH ADC AL,0 ;处理进位(加进位) DAA MOV DH,AL MOV AL,BL SUB AL,1 ;乘数减1 DAS MOV BL,AL JMP AGAIN DONE: MOV BX,OFFSET THIRD MOV [BX],DX RET STR ENDP COSEG ENDS END START 例9-14 若内存的数据段中,有—个缓冲区BUFFER,前两个字节是一个16位带符号的被除数,第三、四字节是一个16位带符号的除数。接着两个字节放商,再下来的两个字节放余数。能实现该除法运算的程

文档评论(0)

186****0772 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档