微机接口课件第等3章8086指令系统(上).ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7.带进位的循环左移指令 格式:RCL OPR,CNT 功能:将操作数与CF整体循环左移若干位,每次移动时,将CF中的值移至操作数的最低位,最高位移入CF,如图3-19所示。 8.带进位的循环右移指令 格式:RCR OPR,CNT 功能:将操作数与CF整体循环右移若干位,每次移动时,将CF移至最高位,最低位移入CF,如图3-20所示。 实训3-3 两个压缩BCD码相减并调整结果为压缩BCD码 对两个压缩BCD码求差(51H-34H),将计算结果调整为压缩的BCD码后,将该结果显示出来。 使用减法指令对两个数求差,利用十进制调整指令对结果进行调整。 要想将压缩BCD结果在屏幕上显示出来,要先将其各字符分别转换成对应的ASCII码。 在进行转换时,先通过逻辑运算指令和移位指令获得各位字符,然后才能分别进行转换。 【源程序】 DSEG SEGMENT ;数据段,给变量指定数据, ;分配存储空间 X DB 51H Y DB 34H DSEG ENDS SSEG SEGMENT STACK ;堆栈段 DB 100 DUP (?) SSEG ENDS CSEG SEGMENT ;代码段 ASSUME CS:CSEG,DS:DSEG,SS:SSEG START:MOV AX,DSEG;给数据段寄存器装初值 MOV DS,AX MOV AL,X;求X-Y SUB AL,Y DAS ;将求得的差调整为压缩BCD码 MOV BL,AL ;将AL中的计算结果保存在BL中 MOV CL,4 ;将移动的位数存入CL中 ROR AL,CL ;AL循环右移4位, ;将AL中的高4位移至低4位 AND AL,0FH ;将AL的高4位清0 ADD AL,30H ;计算AL高位数的ASCII值 MOV DL,AL ;DOS功能调用,将高位数在屏幕显示出来 MOV AH,02H INT 21H MOV AL,BL ;将保存在BL中的计算结果送入AL AND AL,0FH ;将AL的高4位清0 ADD AL,30H ;计算AL低位数的ASCII值 MOV DL,AL ;DOS功能调用,将低位数在屏幕显示出来 MOV AH,02H INT 21H MOV AH,4CH ;系统功能调用,结束程序返回DOS INT 21H CSEG ENDS END START (1)压缩的BCD码加法调整指令 格式:DAA 功能:两个压缩的BCD码执行加法指令后,将AL中的和调整为压缩BCD码。 如果AL的低4位大于9或AF=1,则(AL)←(AL)+06H,AF←1; 如果AL的高4位大于9或CF=1,则(AL)←(AL)+60H,CF←1。 【例3-22】 用十进制计算29+88的程序段如下: MOV AL, 29H MOV BL, 88H ADD AL, BL DAA (2)压缩的BCD码减法调整指令 格式:DAS 功能:两个压缩的BCD码执行减法指令后,将AL中的差调整为压缩BCD码。 如果AL的低4位大于9或AF=1,则(AL)←(AL)-06H,AF←1; 如果AL的高4位大于9或CF=1,则(AL)←(AL)-60H,CF←1。 2.非压缩的BCD码调整指令 (1)非压缩的BCD码加法调整指令 (2)非压缩的BCD码减法调整指令 (3)非压缩的BCD码乘法调整指令 (4)非压缩的BCD码除法调整指令 (1)非压缩的BCD码加法调整指令 格式:AAA 功能:两个非压缩的BCD码执行加法指令后,将AL中的和调整为非压缩BCD码。 如果AL的低4位大于9或AF=1,则(AH)←(AH)+01H,(AL)←(AL)+06H,清除AL的高4位,AF←1,CF←1; 否则,清除AL的高4位,AF←0,CF←0。 【例3-23】 用十进制计算5+6的程序段如下: MOV AX, 05H MOV BL, 06H ADD AL, BL AAA (2)非压缩的BCD码减法调整指令 格式:AAS 功能:两个非压缩的BCD码执行减法指令后,将AL中的差调整为非压缩BCD码。 如果AL的低4位大于9或AF=1,则(AH)←(AH)-01H,(AL)←(AL)-06H,清除AL的高4位,AF←1,CF←1; 否则,清除AL的高4位,AF←0,CF←0。 【例3-24】 用十进制计算15-6的程序段如下: MOV AX, 0105H ;非压缩的BCD码15送入AX MOV BL, 06H ;非压缩的BCD码6送入BL SUB AL, BL AAS (3)非压缩的BCD码乘

文档评论(0)

181****7126 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档