网站大量收购闲置独家精品文档,联系QQ:2885784924

汇编语言程序设计 第二版 hb_ch6.ppt

  1. 1、本文档共78页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章算术运算与代码转换程序设计 6.1 加减法运算程序设计 6.2 乘除法运算程序设计 6.3 串操作程序设计 6.4 代码转换程序设计 6.5 排序与查找程序设计 第6章算术运算与代码转换程序设计 6.1 加减法运算程序设计 6.2 乘除法运算程序设计 6.3 串操作程序设计 6.4 代码转换程序设计 6.5 排序与查找程序设计 6.1 加减法运算程序设计 二进制加减运算 十进制加减运算 二进制加减运算 如果加减法运算的操作数是8位或16位的二进制数,而运算结果也在此范围内,那么用一条基本加减运算指令就可以完成。实际上,我们所面对的数据经常会超过8位、16位的范围,这就是多字节数的二进制加减运算。 二进制加减运算 例6.1 两个多字节无符号数分别存放在内存DATA1和DATA2开始的单元,数据长度存放在LEN单元,编程求两数之和,将结果存放在SUM开始的单元。 二进制加减运算 多字节数相加运算应考虑的问题有: (1)数据长度可存储在计算机中,也可定义成常量。 (2)为简化程序,应采用循环结构作程序主体。 (3)最低字节相加与其他字节相加有所不同。 (4)两个无符号数相加的最高字节产生的进位应处理成结果的最高字节,两个带符号数相加可能需要做溢出处理。 二进制加减运算 十进制加减运算 以4位二进制数对十进制数进行编码有两种情况。在一个字节中只含一个BCD码为非压缩型,其加减法调整指令分别为AAA和AAS。在一个字节中含两个BCD码为压缩型,其加减法调整指令分别为DAA和DAS。需要注意的是,调整指令要求加或减的结果一定在AL中。 十进制加减运算 例6.2 两个单字节非压缩BCD码数据分别存放在内存的DATA1和DATA2单元中,编程求两数的和与差,分别将结果存入SUM和DIF单元。 十进制加减运算 十进制加减运算 例6.3 两个压缩BCD码数据分别存放在内存的DATA1和DATA2单元中,编程求两数之差,将结果存入DIF单元。 十进制加减运算 第6章算术运算与代码转换程序设计 6.1 加减法运算程序设计 6.2 乘除法运算程序设计 6.3 串操作程序设计 6.4 代码转换程序设计 6.5 排序与查找程序设计 6.2 乘除法运算程序设计 如果被乘数和乘数的长度不超过两个字节,或者被除数的长度不超过四个字节、除数的长度不超过两个字节,就可以直接使用8086.8088提供的乘除法指令实现乘除法运算。如果超过了这个范围,就要与其他指令配合,通过程序段实现多字节的乘除法。 6.2 乘除法运算程序设计 二进制乘法运算 二进制除法运算 二进制乘法运算 乘法的目的操作数必须存放在AX中(或AL中),对应的乘积存放在DX及AX中(或AX中),乘法的源操作数可以是立即数寻址之外的任何寻址方式。 二进制乘法运算 例6.4 两个多字节无符号数分别存放在内存DATA1和DATA2开始的单元,数据长度分别存放在LEN1和LEN2单元中,编程求两数的乘积,将结果存放在PRDT单元。 分析:设被乘数的长度为L1,乘数的长度为L2,那么需要进行L1*L2次乘法运算,得到L1*L2个部分积,从而将多字节乘法转换成相应部分积的加法。 二进制乘法运算 二进制除法运算 除法的目的操作数必须存放在DX及AX中(或AX中),对应的商存放在AX中(或AL中),余数存放在DX中(或AH中),除法的源操作数可以是立即数寻址之外的任何寻址方式。无符号除法指令DIV要求被除数的高字节小于除数,否则产生溢出。 二进制除法运算 例6.5 无符号被除数和除数分别存放在内存DATA1字单元和DATA2字节单元中,编程求两数的商和余数,分别存放在QUO和REM单元。 被除数为字,除数为字节的无符号除法,如果被除数的高字节不小于除数就会产生溢出。避免的方法是对被除数和除数进行前插0扩展,分别成为双字和字。 二进制除法运算 第6章算术运算与代码转换程序设计 6.1 加减法运算程序设计 6.2 乘除法运算程序设计 6.3 串操作程序设计 6.4 代码转换程序设计 6.5 排序与查找程序设计 6.3 串操作程序设计 例6.6 一个字符串的长度为20,存放在数据段中STR1开始的单元,编程把它们传送到附加段中STR2开始的单元。 方法1: 利用LOOP指令用软件方法重复执行MOVSB的操作 方法2: 利用REP指令实现MOVSB的操作 基本串操作指令在与重复前缀联用时,需要先做好下面的准备工作: (1)将源串首地址(若反向操作则是末地址)存放在SI中; (2)如果是与REP联用,将附加段中的目的串首地址(若反向操作则是末地址)存放在DI中; (3)将数据长度存放在CX中; (4)设置方向标志。 例6.7 一个字符串以Null(00H)为

您可能关注的文档

文档评论(0)

精品课件 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档