(微机原理与接口技术)chapter05算术和逻辑运算指令.ppt

(微机原理与接口技术)chapter05算术和逻辑运算指令.ppt

  1. 1、本文档共84页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二次实验: 1、两个数组的多位数加法操作(比如数组是100个字节的数据等),可以考虑数组中的数据既可以是二进制数,也可以是十进制数。 2、编程完成以下公式的运算:(假设公式中的所有变量均为16位有符号的数) 1)W=X+Y*300 要求乘积的高位在W中,低位在R中 2)W=P / (Q-15) 要求商存入W,余数存入R 80386-Pentium 4微处理器新增的位测试指令 例 30 Not指令和 NEG指令 NOT是逻辑取反, 或1的补 NOT 指令使字节、字或双字的所有位取反 NEG是算术符号取反, 或2的补 NEG指令对一个数求2的补码,这意味着将有符号数的算术符号由正变为负,或者由负变为正 移位指令 把寄存器或存储单元中的数向左或向右放置,即移动 4种不同类型的移位指令: (1) 逻辑左移是把0移入最低位 (2) 逻辑右移是把0移入最高位 (3) 算术左移和逻辑左移相同 (4) 算术右移是把符号位复制到数字中 移位指令和循环移位指令 逻辑移位操作用于无符号数,而算术移位操作作用于有符号数 一种形式用立即数计算移位次数,另一种形式是将移位次数装入寄存器CL 移位指令 例 31 例 32 双精度移位指令 用于80386和跟高档型号的微处理器 SHLD(左移)和SHRD(右移)指令有三个操作数 SHRD AX, BX, 12指令将AX寄存器逻辑右移12位,BX的右边12位移入AX的左边12位中,而BX的内容保持不变 SHLD EBX, ECX, 16指令向左移位EBX,移位以后,ECX的最左边16位移入EBX的最右边16位,操作数ECX的内容保持不变 循环移位指令 将寄存器或存储器中的二进制数据从一端循环移位到另一端,或者通过进位标志位从一端循环移动到另一端 循环计数可以是立即数,或者装入CL寄存器中 例 33 将寄存器DX, BX和AX中48位数据向左移1位的程序 例 17 余数的处理 1、直接截断法 2、四舍五入法:对无符号除法的结果,要求用余数与除数的一半进行比较 例 18 一个指令序列: AX 内容除以BL内容, 无符号除法结果四舍五入 3、余数转换成小数形式:先把商保存起来,再将AL清零,然后用AX中剩余的数除以原来的操作数后,产生小数形式的余数 例 19 假定用小数表示余数,而不是整数余数 BCD码和ASCII码算术运算指令 BCD:二进制编码的十进制 ASCII: 美国标准信息交换码 BCD算术运算指令 BCD数据的算术运算有两种:加法和减法 指令系统提供了两条指令, 利用AL寄存器修正 BCD加法和减法的结果 DAA (加法后十进制调整)指令跟在BCD加法之后 DAS (减法后十进制调整) 指令跟在BCD减法之后 BCD数据总是以压缩格式出现,每个字节存放在两个BCD数字位 DAA指令 跟随在ADD或ADC指令之后,把运算结果调整为BCD结果 调整算法是: If (AL低4位9 或 AF=1) then AL=AL + 06H , AF=1 Endif If (AL高4位9 或 CF=1) then AL=AL + 60H ,CF=1 Endif 例 20 假定DX和BX每个都包含有4个压缩BCD数,并且将结果存入CX中 DAS指令 跟随在SUB或SBB指令之后,把运算结果调整为BCD结果 调整算法是: If (AL低4位9 或 AF=1) then AL=AL - 06H , AF=1 Endif If (AL高4位9 或 CF=1) then AL=AL - 60H ,CF=1 Endif 例 21 假定DX和BX每个都包含4位压缩BCD数,将DX和BX中的BCD数相减,并且将结果存入CX中 ASCII算术运算指令 30H~39H之间的这些ASCII码对应0~9十个数码 AAA (加法后ASCII调整) AAD (除法前ASCII调整) AAM (乘法后ASCII调整) AAS (减法后ASCII调整) 这些指令都以寄存器AX作为源操作数或目标操作数 AAA指令 两个一位的ASCII码数据相加不产生任何使用的数据。例如,结果31H和39H相加,结果是6AH。这个ASCII加法(1+9)应当产生等于十进制数10的两位ASCII结果(ASCII码31H和30H) 如果加法以后执行AAA 指令,AX的内容将是0100H,虽然这不是ASCII码,但是通过加3030H可以转换成ASCII码,得到3130H 当结果小于10时,AAA 指令将AH清0;当结果大于10时,则使AH加1 调整算法是: If (AL低4位9 或 AF=1) then AL=AL + 06H ,AH=AH + 1, AF=

文档评论(0)

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

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

1亿VIP精品文档

相关文档