- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【例3–15】 设(A)=56H,(R7)=78H,执行指令 ADD A,R7 DA A 结果:1 24( BCD数) (A) 0101 0110 + (R7) 0111 1000 1100 1110 调整 0110 0110 结果 1 0011 0100 3.4.4 十进制加法调整指令 * 【 例3–16】BCD码的减1操作可用加99来求得,条件是不计进位值。设累加器A中原BCD码值为30,执行下列指令 ADD A , #99H DA A (A) 0011 0000 + #99H 1001 1001 1100 1001 调整 0110 结果 1 0010 1001 经调整后,实际得数129,若不计进位, 则和数为29.它与30-1=29相当。 3.4.4 十进制加法调整指令 * 3.5 逻辑运算类指令 逻辑运算:与、或、异或、清0和取反 A清0操作对P标志有影响。 对A循环移位 方向:左、右 CY:带、不带 * 3.5.1 单操作数简单逻辑运算类指令 CPL A CLR A 1.清零与取反 把A的内容清 0 ,结果仍在A中。 把A的内容取反0 ,结果仍在A中。 * RR A RRC A RL A RLC A 2.循环移位指令 A的内容循环右移1位。 A的内容连同CY位循环右移1位。 A的内容循环左移1位。 A的内容连同CY位循环左移1位。 3.5.1 单操作数简单逻辑运算类指令 * “累加器A内容乘2”的任务可以利用指令RLC A 方便地完成。 例:若(A)= BDH = 1011 1101B,(CY)=0。 执行指令RLC A 结果为:17AH(378)=2×BDH(189) A PSW 0 1 0 1 1 1 1 0 1 3.5.1 单操作数简单逻辑运算类指令 * 【例3-17】 试用三种方法将累加器A中无符号数乘2。 方法1: CLR C RLC A ;左移一位,相当于乘2 方法2: CLR C MOV R0,A ADD A,R0 方法3: MOV B,#2 MUL AB 3.5.1 单操作数简单逻辑运算类指令 * SWAP A 【例3-18】设内部RAM 40H、41H单元中连续存放有4个压缩的BCD码数据,试编程序将这4个BCD码倒序排列。 分析:过程如图3–5所示. 程序如下: MOV A, 41H SWAP A XCH A, 40H SWAP A MOV 41H,A 图3-5压缩BCD码倒序排列示意图 3.累加器A半字节交换指令 3.5.1 单操作数简单逻辑运算类指令 * 3.5.2 双操作数逻辑运算指令 ANL direct, A #data ANL A, Rn direct @Ri #data 利用逻辑“与”操作,可使8位二进制数的若干位清零(屏蔽这些位),而其余位不变。若将两个直接地址单元的内容进行逻辑运算,则要通过A才能实现。 1.逻辑“与”运算指令 源操作数与直接地址单元内容相与 源操作数与累加器A的内容相与 * A #data ORL A, Rn direct @Ri #data 利用逻辑“或”操作,可使8位二进制数的若干位置1,而其余位不变。 2.逻辑“或”运算指令 源操作数与直接地址单元内容相或 源操作数与累加器A的内容相或 A 源操作数与直接地址单元内容相或 ORL direct, A 3.5.2 双操作数逻辑运算指令 * 【例3–19】若A=65H,利用ANL指令屏蔽A的高4位。 ANL A, #0FH 执行指令后,A=05H,高4位被屏蔽掉。 【例3–20】要求将内部RAM存储器40H的第1、第3位置1,而其它位不变。 ORL 40H,#
原创力文档


文档评论(0)