- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
微机原理第讲
第七讲 指令系统 AAS指令的用法说明 功能:减法的ASCII调整 格式:AAS 执行的操作: 这条指令之前必须执行SUB或SBB指令,减法指令必须把两个非压缩的BCD码相减,并把结果存放在AL寄存器中。 (AL)←把AL中的差调整到非压缩的BCD格式 (AH)←(AH)-调整产生的借位值 AAS指令除影响AF和CF标志外,其余标志位均无定义。 AAS指令的操作步骤 AAS指令的调整步骤是: (1)如AL寄存器的低4位在0~9之间,且AF位为0,则跳过第(2)步,执行第(3)步: (2)如AL寄存器的低4位在十六进制数A~F之间或AF位为1,则把AL寄存器的内容减去6,AH寄存器的内容减1,并将AF位置1; (3)清除AL寄存器的高4位; (4)AF位的值送CF位。 DAS指令的使用说明 功能:压缩BCD码减法结果的十进制调整 格式:DAS 执行的操作: 这条指令之前必须执行SUB或SBB指令,减法指令必须把两个压缩的BCD码相减,并把结果存放在AL寄存器中. (AL)←把AL中的差调整到压缩的BCD格式 DAS指令对OF标志无定义,但影响所有其它条件标志。 DAS指令的使用说明 DAS指令的调整方法是: 如果AF标志为1,或者AL寄存器的低4位是十六进制的A~F,则使AL寄存器的内容减去06H,并将AF位置1。 如果CF标志为1,或者AL寄存器的高4位是十六进制的A~F,则使AL寄存器的内容减去60H,并将CF位置1。 DAS减法十进制调整指令例题 指令如下: SUB AL,AH DAS 假定指令执行前: (AL)=86,(AH)=07 (AL)=43,(AH)=62 减法十进制调整指令图解1 减法十进制调整指令图解2 BCD加减运算十进制调整的区别 算术运算指令 3 乘法指令 MUL src 无符号数乘法指令 IMUL src 有符号数乘法指令 AAM 乘法的十进制调整 MUL指令的用法说明-1 格式: MUL src ;B/W 操作: 字操作数 DX, AX←AX*(src) 字节操作数 AX←AL*(src) 其中目的操作数dst为累加器,是隐含的。 字运算,必须用AX寄存器存放目的操作数(或称被乘数)。 字节运算,必须用AL寄存器存放目的操作数(或称被乘数)。 MUL指令的用法说明-2 源操作数src可使用寄存器操作数,各种寻址方式的存储器操作数。 不允许使用立即数和段寄存器作源操作数 当源操作数是存储单元时,必须在操作数前加B或W说明是字节还是字。 两个16位数相乘得到的是32位乘积,乘积存放在DX和AX中。 DX存放乘积的高位字,AX存放乘积的低位字。 两个8位数相乘得到的是16位乘积,乘积存放在AX中。 乘积高8位存放在AH中,乘积低8位存放在AH中。 MUL指令操作示意图 [例] MUL BL 指令执行前,AL=B4H=180,BL=11H=17。 指令执行 [例] MUL DL ; AX←AL*DL MUL CX ; (DX,AX)←AX*CX MUL B[SI] ; AX←AL*(内存中某字节) MUL W[BX] ; (DX,AX)←AX*(内存中某字) MUL指令执行后影响CF和OF标志,如果结果的高半部分(字节操作为AH、字操作为DX)不为零,表明其内容是结果的有效位,则CF和OF均置1。否则,CF和OF均清0。通过测试这两个标志,可检测并去除结果中的无效前导零。乘法指令使AF、PF、SF和ZF的状态不定。 IMUL指令的用法说明 格式: IMUL SRC 执行的操作: 与MUL基本相同 不同的是MUL参加乘法运算的是无符号数,而IMUL参加运算的是有符号数。 存放结果的方式与MUL相同。如果源操作数为字节,则与AL相乘,双倍长结果送到AX中。如源操作数为字,则与AX相乘,双倍长结果送到DX和AX中,最后给乘积赋予正确的符号。 [例] 设AL=-28H,BL=59H,试计算它们的乘积。 可使用下面指令: IMUL BL 结果: AX=0F98CH=-1652,CF=1,OF=1 至于IMUL指令采用什么算法来实现上述功能可以有几种方案,如可以直接采用补码乘法算法,也可以采用原码乘法算法、快速补码乘法或者快速原码乘法计算,这些工作由计算机自动完成。 AAM指令的使用说明 功能:对非压缩BCD码乘法结果作十进制调整 格式:AAM 执行的操作: (AX)←把AX中的乘积调整到非压缩的BCD格式 AAM指令之前必须执行MUL指令,把两个非压缩的BCD码相乘(此时要求其高4位为0),结果放在AX寄存器中。本指令的调整方法是:把AL寄存器的内容除以0AH,商放在AH寄存器中,余数保存在AL寄存器中。 本指令根据AL寄存器的内容设置条件码SF、ZF和PF,但O
文档评论(0)