片机学习数逻指令.pptx

上传人:莉*** 文档编号:88389742 上传时间:2023-04-25 格式:PPTX 页数:26 大小:266.54KB
返回 下载 相关 举报
片机学习数逻指令.pptx_第1页
第1页 / 共26页
片机学习数逻指令.pptx_第2页
第2页 / 共26页
点击查看更多>>
资源描述

《片机学习数逻指令.pptx》由会员分享,可在线阅读,更多相关《片机学习数逻指令.pptx(26页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、3 3程序状态字寄存器程序状态字寄存器PSW PSW(标志寄存器标志寄存器)记存记存CPUCPU执行算术运算及某些操作的一些特征标志信息执行算术运算及某些操作的一些特征标志信息,以备后用以备后用SFRSFR名名+位次:位次:PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0 字节地址字节地址+位次位次:0D0H.7 0D0H.6 0D0H.5 0D0H.4 0D0H.3 0D0H.2 0D0H.1 0D0H.0:0D0H.7 0D0H.6 0D0H.5 0D

2、0H.4 0D0H.3 0D0H.2 0D0H.1 0D0H.0位地址:位地址:D7H D6H D5H D4H D3H D2H D1H D0H D7H D6H D5H D4H D3H D2H D1H D0HSFRSFR名名字节地址字节地址位名称位名称位次位次进进位位标标志志位位辅辅助助进进位位标标志志位位溢溢出出标标志志位位奇奇偶偶标标志志位位用用户户标标志志位位工作寄存器区工作寄存器区选择控制位选择控制位加减运算时加减运算时最高位向上最高位向上有进有进/借位借位则置则置1 1加减运算时加减运算时D3D3位向位向D4D4位位有进有进/借位借位则置则置1 1BCDBCD数运算修正用数运算修正用加

3、减运算时加减运算时D D7 7、D D6 6位向上的位向上的进进/借位不同借位不同则置则置1 1补码运算时表征溢出补码运算时表征溢出A A中中1 1的个数的个数为奇则置为奇则置1 1表征表征8 8位码的奇偶性位码的奇偶性P.14P.14图图2-3 PSW2-3 PSW的格式的格式半半进进位位标标志志位位随时根据随时根据A A的内容变化生成的内容变化生成第第1页页/共共26页页不影响不影响标志位标志位C AC OVC AC OV 3.4.2 3.4.2 算术运算类指令算术运算类指令积积FFFF则则0V=10V=1B=0B=0则则0V=10V=1不影响不影响AC OVAC OV标志标志 结果存累加

4、器结果存累加器A A CyCyCyCyT TM M第第2页页/共共26页页【例例3-13-1】(A A)=53H=53H,(R0R0)=FCH=FCH,执行指令,执行指令 ADD A,R0ADD A,R0结果结果:(A A)=4FH=4FH,Cy=1Cy=1,Ac=0Ac=0,OV=0OV=0,P=1P=1注意:注意:运算中,由于运算中,由于位位6 6和和位位7 7同时有进位,所以标志位同时有进位,所以标志位OV=0OV=0。【例例3-23-2】(A A)=85H,=85H,(R0R0)=20H,(20H)=AFH=20H,(20H)=AFH,执行指令,执行指令:ADD A,R0ADD A,R

5、0 结果结果:(A A)=34H=34H,Cy=1Cy=1,Ac=1Ac=1,OV=1OV=1,P=1P=1注意:注意:由于由于位位7 7有进位有进位,而,而位位6 6无进位无进位,所以标志位,所以标志位OV=1OV=1P.38P.3801010011 +111111001110000 =01001111 Cy:110000101 +101011110001111 =00110100 Cy:1第第3页页/共共26页页【例例3-33-3】(A A)=85H,=85H,(20H20H)=FFH,Cy=1=FFH,Cy=1,执行指令:,执行指令:ADDC A,20HADDC A,20H结果为结果为:

6、(A A)=85H,Cy=1,Ac=1,OV=0,P=1=85H,Cy=1,Ac=1,OV=0,P=1 【例例3-43-4】(A A)=56H,=56H,(R5R5)=67H=67H,把把它它们们看看作作为为两两个个压压缩缩的的BCDBCD数,进行数,进行BCDBCD数的加法。执行指令:数的加法。执行指令:ADD A,R5 ADD A,R5 ;先按二进制加,得;先按二进制加,得BDHBDH DA A DA A ;紧接着进行;紧接着进行BCDBCD调整,得调整,得23H23H且有向上进位且有向上进位结果为:结果为:(A A)=23H=23H,Cy=1 Cy=1(维持维持ADDADD后的后的Ac=

7、1,OV=1Ac=1,OV=1),P=1P=1。可见,可见,56+67=12356+67=123,结果是正确的。结果是正确的。【例例3-53-5】(A A)=C9H,=C9H,(R2R2)=54H,Cy=1,=54H,Cy=1,执行指令执行指令 SUBB A,R2 SUBB A,R2 结果:结果:(A A)=74H,Cy=0,Ac=0,OV=1=74H,Cy=0,Ac=0,OV=1(位(位6 6向位向位7 7借位借位而位而位7 7无无向上借位向上借位),P=0P=0 P.38P.38404010000101 +1111111111111111 =10000101 Cy:1原原Cy1100100

8、1 -01010100-1 =01110100 Cy:0原原Cy第第4页页/共共26页页【例例3-63-6】(A A)=0FH=0FH,(R7R7)=19H=19H,(30H)=00H(30H)=00H,(R1R1)=40H=40H,(40H)=0FFH(40H)=0FFH,执行指令,执行指令DEC DEC A A;(A)-1A;(A)-1A=0EH=0EHDEC DEC R7R7;(R7)-1R7;(R7)-1R7=18H=18HDEC DEC 30H30H;(30H)-130H;(30H)-130H=FFH=FFHDEC DEC R1R1;(R1)-1(R1);(R1)-1(R1)=FEH

9、=FEH结果为结果为(A A)=0EH,=0EH,(R7R7)=18H,(30H)=0FFH,(40H)=0FEH,P=1=18H,(30H)=0FFH,(40H)=0FEH,P=1,不影响其他标志不影响其他标志 【例例3-73-7】(A)=FBH (A)=FBH,(B)=12H(B)=12H,执行指令,执行指令DIV DIV ABAB结果为结果为(A)=0DH(A)=0DH,(B)=11H(B)=11H,Cy=0Cy=0,OV=0OV=0。P.41P.41第第5页页/共共26页页【例例B3-7B3-7】编程序实现编程序实现R1R1、R2R2中的双字节中的双字节BCDBCD数加上数加上R3R3

10、、R4R4中的双字节中的双字节BCDBCD数,数,三字节和值存放于三字节和值存放于R5R5、R6R6、R7R7中。中。ORG 11A0HORG 11A0H11A0 EA MOV A11A0 EA MOV A,R2 R2 ;取被加数低字节;取被加数低字节11A1 2C ADD A11A1 2C ADD A,R4 R4 ;加上加数低字节;加上加数低字节11A2 D4 11A2 D4 DA ADA A ;十进制调整;十进制调整11A3 FF MOV R711A3 FF MOV R7,A A ;存和值的低字节;存和值的低字节11A4 E9 MOV A11A4 E9 MOV A,R1 R1 ;取被加数高

11、字节;取被加数高字节11A5 3B ADDC A11A5 3B ADDC A,R3 R3 ;加上加数高字节及低字节的进位;加上加数高字节及低字节的进位 11A6 D4 11A6 D4 DA ADA A ;十进制调整;十进制调整 11A7 FE MOV R611A7 FE MOV R6,A A ;存和值的高字节;存和值的高字节11A8 74 00 MOV A11A8 74 00 MOV A,#00H#00H ;被加数与加数无第三字节,设其为;被加数与加数无第三字节,设其为0 011AA 34 00 ADDC A11AA 34 00 ADDC A,#00H#00H;加上高字节向第三字节的进位;加上

12、高字节向第三字节的进位 ;无需进行十进制调整;无需进行十进制调整(其结果为其结果为00H00H或或01H)01H)11AC FD MOV R511AC FD MOV R5,A A ;存和值的第三字节;存和值的第三字节11AD 80 FE SJMP$11AD 80 FE SJMP$;自循环暂停;自循环暂停11AF11AF【练习练习】如果是双字节数相加结果只需双字节呢?如果是双字节数相加结果只需双字节呢?如果是双字节二进制数相加如果是双字节二进制数相加(不是不是BCDBCD数数)呢?呢?如果是双字节二进制数相减结果为双字节二进制数呢?如果是双字节二进制数相减结果为双字节二进制数呢?如果是单字节二进

13、制数相加结果为双字节呢?如果是单字节二进制数相加结果为双字节呢?如果是如果是(31H)(31H)、(30H)(30H)的双字节数加上的双字节数加上(41H)(41H)、(40H)(40H)中的双字节数,三字节结中的双字节数,三字节结果存放于果存放于(52H)(52H)、(51H)(51H)、(50H)(50H)中,前者为高字节,如何编程。中,前者为高字节,如何编程。第第6页页/共共26页页3.4.3 3.4.3 逻辑操作类指令逻辑操作类指令跟跟0 0相与相与的位被屏的位被屏蔽蔽(清清0)0)跟跟1 1相或相或的位被置的位被置1 1跟跟1 1相异相异或的位被或的位被求反求反T TM M第第7页页

14、/共共26页页 二进制数的逻辑与运算二进制数的逻辑与运算00=010=001=011=1 例:例:逻辑与运算常用来将一个数据的某些位清零(屏蔽),而保持逻辑与运算常用来将一个数据的某些位清零(屏蔽),而保持其他位不变。其他位不变。【例例B3-8B3-8】将将30H30H单元的低单元的低4 4位清零,高位清零,高4 4位保持不变,可用下面位保持不变,可用下面指令实现。指令实现。ANL30H,#0F0H【例例3-93-9 】(A A)=07H,=07H,(R0R0)=0FDH,=0FDH,执行指令:执行指令:ANL A,R0ANL A,R0 结果:(结果:(A A)=05H=05H 1 0 1 1

15、 0 0 1 1 B)1 1 1 1 0 0 0 0 B 1 0 1 1 0 0 0 0 B不不 变变清清0(0(屏蔽屏蔽)第第8页页/共共26页页 二进制数的逻辑或运算二进制数的逻辑或运算0v0=01v0=10v1=11v1=1 例:例:逻辑或运算常用来将一个数据的某些位置逻辑或运算常用来将一个数据的某些位置1 1,而保持其他位不变。,而保持其他位不变。【例例B3-9B3-9】将将30H30H单元的低单元的低4 4位置位置1 1,高,高4 4位保持不变,可用下面指位保持不变,可用下面指令实现。令实现。ORL30H,#0FH【例例3-103-10】(P1P1)=05H,=05H,(A A)=3

16、3H=33H,执行指令,执行指令 ORL P1,AORL P1,A 结果:结果:(P1P1)=37H=37H 1 0 1 0 0 0 0 1 Bv)0 0 0 0 1 1 1 1 B 1 0 1 0 1 1 1 1 B不不 变变置置 1 1第第9页页/共共26页页 二进制数的逻辑异或运算二进制数的逻辑异或运算 0 0=01 0=10 1=11 1=0例:例:逻辑异或运算常用来将一个数据的某些位取反,而保持其他位逻辑异或运算常用来将一个数据的某些位取反,而保持其他位不变。不变。【例例B3-10B3-10】将将A A的奇数位取反而偶数位保持不变,可用下面指的奇数位取反而偶数位保持不变,可用下面指令

17、实现。令实现。XRLA,#0AAH;(XRLA,#10101010B)【例例3-113-11】(A A)=90H,=90H,(R3R3)=73H=73H 执行指令:执行指令:XRL A,R3XRL A,R3 结果:结果:(A A)=E3H=E3H 1 0 1 0 1 0 0 1 B)1 1 1 1 0 0 0 0 B 0 1 0 1 1 0 0 1 B 求求 反反 不不 变变第第10页页/共共26页页移位指令操作示意图移位指令操作示意图 D D7 7D D0 0D D7 7D D7 7D D7 7D D0 0D D0 0D D0 0【例例B3-11B3-11】8 8位二进制码算术左移位二进制码

18、算术左移(无符号数乘(无符号数乘2 2):CLR CCLR C;CyCy清清0 0 RLCA RLCA ;左移;左移1 1位位,低位补低位补0 0,原最高位进到,原最高位进到CyCy中中 【例例B3-12B3-12】8 8位二进制码逻辑右移位二进制码逻辑右移(无符号数除(无符号数除2 2):CLR CCLR C;CyCy清清0 0 RRCA RRCA ;右移;右移1 1位位,高位补高位补0 0,原最低位移到,原最低位移到CyCy中中 【思考思考】DPTRDPTR(DPHDPH、DPLDPL)中的)中的1616位二进制码算术左移位二进制码算术左移(乘(乘2 2)【思考思考】DPTRDPTR(DP

19、HDPH、DPLDPL)中的)中的1616位二进制码逻辑右移位二进制码逻辑右移(除(除2 2)第第11页页/共共26页页【思考思考】指出下列非法指令违背了什么样的概念或规则指出下列非法指令违背了什么样的概念或规则?ADD20H,#10HINCR5DECDPTRADDC#30H,ARLCADEC#60HANL4AH,R0ORLR0,#8AH第第12页页/共共26页页作业二作业二 :P.517、8、9、10、15、16补充:请分析下列程序段执行后有关单元的内容。补充:请分析下列程序段执行后有关单元的内容。MOVA,#68HMOVR0,#40HPUSHACCADDA,#50HMOVR0,AMOVA,

20、R0INCR0MOVR0,APOPBORLA,40H答:答:A=,R0=,B=,(40H)=,(41H)=ANL A,R5 ANL A,R5 R3R3单条指令实现单条指令实现第第13页页/共共26页页如:用一个如:用一个8 8位二进制数表示一个有符号数:位二进制数表示一个有符号数:1、机器数和真值、机器数和真值l一个数在机器中的表示形式称为一个数在机器中的表示形式称为机器数机器数。(机器中连同符号位一起代码化了的数)(机器中连同符号位一起代码化了的数)l机器数所表示的数值机器数所表示的数值本身本身,称为,称为真值真值。带符号数在计算机中的表示法带符号数在计算机中的表示法D7D6D5D4D3D2

21、D1D0符号位符号位数值位数值位D D7 7=0 0 正数正数1 1 负数负数机器数机器数真值真值00011011B表示表示+2710011011B表示表示 27【相关知识相关知识】第第14页页/共共26页页D7D6D5D4D3D2D1D0符号位符号位数值位:数的绝对值的二进制码(数值位:数的绝对值的二进制码(7位)位)0正数正数1负数负数+3原码原码=00000011B=03H-3原码原码=10000011B=83H+0原码原码=00000000B=00H0 0的表示不唯一的表示不唯一-0原码原码=10000000B=80H+127原码原码=01111111B=7FH8 8位原码表示范围位原

22、码表示范围 127原码原码=11111111B=FFH-127+1272、原码表示法、原码表示法(以(以n=8位原码为例)位原码为例)0 0(2 2n-1n-1-1)-1)n-1n-1位位最高位最高位n n位位:【相关知识相关知识】第第15页页/共共26页页n n位位二进制二进制原码原码的表数范围的表数范围:-(2n-11)S(2n-1-1)原码中原码中 0 0 有两种表达方式有两种表达方式 (+0+0、-0-0)原码表示方法简单直观,但机器中原码表示方法简单直观,但机器中原码不便于运算!原码不便于运算!真值真值 8 8位原码位原码 真值真值 1616位原码位原码+127011111117FH

23、+327677FFFH+126011111107EH+327667FFEH.+20000001002H+20002H+10000000101H+10001H00000000000H00000H-01000000080H-08000H-11000000181H-18001H-21000001082H-28002H.-12611111110FEH-32766FFFEH-12711111111FFH-32767FFFFH-128-32768-2n-1-1-(2n-1-1)八位原码:八位原码:-127+127十六位原码:十六位原码:-32767+32767【相关知识相关知识】第第16页页/共共26页页

24、3、补码表示法、补码表示法+3原原=00000011B=03H-3原原=10000011B=83H+3补补=00000011B=03H-3补补=11111101B=FDH正数的补码:与其原码相同。正数的补码:与其原码相同。负数的补码:为将其原码的数值位取反加负数的补码:为将其原码的数值位取反加1 1。例例1:-46补码补码=?-46=-0101110B-46原码原码=10101110B11010001B-46补码补码=11010010B=D2H例例2:-0原码原码=100000001111111100000000=+0补码补码0 0 的表示唯一的表示唯一8 8位补码表示范围:位补码表示范围:-

25、128+127原码与补码之间可逆转换,原码与补码之间可逆转换,x补补补补=x原原数值位取反数值位取反末位加一末位加一数值位取反数值位取反末位加一末位加一【相关知识相关知识】第第17页页/共共26页页n n位位二进制二进制补码补码的表数范围:的表数范围:(-2n-1)S(2n-1-1)(-2-2n-1n-1)的的补码补码 100 100000 000 为按等效原则定义的!为按等效原则定义的!(无法从原码转换而来)(无法从原码转换而来)真值真值 8 8位补码位补码 真值真值 1616位补码位补码+127011111117FH+327677FFFH+126011111107EH+327667FFEH

26、.+20000001002H+20002H+10000000101H+10001H00000000000H00000H-0-0-111111111FFH-1FFFFH-211111110FEH-2FFFEH.-1261000001082H-327668002H-1271000000181H-327678001H-1281000000080H-327688000H-2n-12n-1-1八位补码:八位补码:-128+127十六位补码:十六位补码:-32768+32767【相关知识相关知识】第第18页页/共共26页页移码表示法移码表示法以以(X+2n-1)对应的对应的n位二进制数表示带符号数位二进制

27、数表示带符号数X。则则n位移码表达范围为位移码表达范围为-(2n-1)X+(2n-1-1)反之把反之把X移移对应的二进制数对应的二进制数减减2n-1即得真值即得真值移码便于比较大小移码便于比较大小(按无符号数相比较即可)(按无符号数相比较即可)移码例移码例1 1:已知已知 X=X=113 113 求求 X X 移移 =解:解:X+2X+27 7=113+128=15 113+128=15,而而15=0000 1111B15=0000 1111B X X 移移=0000 1111=0000 1111 移码例移码例2:2:已知已知 X X 移移 =10100010 =10100010 求求X=X=

28、解:解:10100010 10100010 B=162 ,B=162 ,而而 162-2162-27 7 =162-128=34=162-128=34 X=X=+34348 8位移码表示范围:位移码表示范围:-128+127八位八位:X=-128:X=-128+127+1270 0 255(00H-FFH)255(00H-FFH)128128【相关知识相关知识】第第19页页/共共26页页 真值真值 8 8位原码位原码+127011111117FH+126011111107EH.+20000001002H+10000000101H00000000000H-01000000080H-1100000

29、0181H-21000001082H.-12611111110FEH-12711111111FFH-128-8 8位补码位补码011111117FH011111107EH.0000001002H0000000101H0000000000H11111111FFH11111110FEH.1000001082H1000000181H1000000080H 8 8位移码位移码11111111FFH11111110FEH.1000001082H1000000181H1000000080H011111117FH011111107EH.0000001002H0000000101H0000000000H原码、

30、补码、移码表示法对比原码、补码、移码表示法对比(以(以8位码为例)位码为例)(八位移码用(八位移码用x+128的二进制码表示)的二进制码表示)【相关知识相关知识】第第20页页/共共26页页补码的数学定义:n n位补码,数值位位补码,数值位n-1n-1位位 X (X0)X补补=2n+X(X0)可用可用符号位为符号位为 1 1,数值位,数值位“求反加一求反加一”实现实现符号位为符号位为 0 0,数值位不变。即与原码相同,数值位不变。即与原码相同例例1:-46补码补码=?-46=-0101110B-46原码原码=10101110B11010001B-46补码补码=11010010B=D2H数值位取反

31、数值位取反末位加一末位加一100000000B=28+-00101110 B=-46-46 11010010B=D2H+1B=+111111111B=28-1+-00101110B=-46-46 11010010B=D2H末位加一末位加一数值位取反数值位取反第第21页页/共共26页页补码的加法和减法运算补码的加法和减法运算加法规则加法规则:X+Y 补码补码 =X补码补码 +Y补码补码减法规则减法规则:X-Y 补码补码 =X补码补码 -Y补码补码=X补码补码 +-Y补码补码补码加补码加/减运算:减运算:不论正负、不论大小不论正负、不论大小 ,连同符号位,连同符号位按二进制进行加按二进制进行加/减

32、运算,得到正确的和减运算,得到正确的和/差的补码。差的补码。u可将减法运算用加法实现可将减法运算用加法实现u-Y补码补码为将为将Y补码补码连同符号位连同符号位全部取反加全部取反加1而得而得u原码与补码之间可逆转换,原码与补码之间可逆转换,x补补补补=x原原u溢出:运算结果超出了允许表示的范围溢出:运算结果超出了允许表示的范围u补码加减运算的溢出可用补码加减运算的溢出可用OFCn-1 Cn-2来来判断判断即最高两位向上进即最高两位向上进/借位不同则表明该运算结果溢出借位不同则表明该运算结果溢出 【相关知识相关知识】第第22页页/共共26页页8 8位补码列式运算例:位补码列式运算例:例例1:设设x

33、=-46,y=+35,求求x+y解:解:x=-46y=+35=-0101110B=+0100011B X原原=10101110Y原原=00100011 X补补=11010010Y补补=00100011X补补=11010010 +Y补补=00100011进位进位:00000010最高两位最高两位均无均无向上进位向上进位无溢出无溢出 X+Y补补=11110101 X+Y原原=10001011 X+Y=-0001011B=-11=-46+35答:答:本运算无溢出,补码运算得本运算无溢出,补码运算得x+y=-11,结果正确。结果正确。例例2 2:设:设 x=+67,y=+86,求求x-y 例例3 3:

34、设:设 x=+67,y=-86,求求x-y 为负!将数值位取反加为负!将数值位取反加1【相关知识相关知识】第第23页页/共共26页页BCDBCD码:码:每一位十进制数用每一位十进制数用4 4位二进制码表示位二进制码表示。如如8421BCD8421BCD码码用用000000001001 1001 表示十进制数码表示十进制数码 0 0 9 9一个字节可表示两位十进制数一个字节可表示两位十进制数。如如 97 97 的的压缩压缩BCDBCD码码:1001 0111 1001 0111 B=97HB=97HBCDBCD码特点:码特点:与十进制间与十进制间转换简便转换简便,计算仅须稍作调,计算仅须稍作调整处理:整处理:BCDBCD数加数加/减运算:减运算:先按二进制运算,再判断先按二进制运算,再判断各四各四位组如果出现位组如果出现A AF F非法码或有向上进非法码或有向上进/借位则该四位借位则该四位组应进行组应进行加加/减减6 6修正修正(也称进行(也称进行BCDBCD码调整)。码调整)。CPUCPU通常设有专门的通常设有专门的BCDBCD码调整指令码调整指令 1.1.BCDBCD码码 (二(二 十进制编码)十进制编码)【相关知识相关知识】第第24页页/共共26页页第第25页页/共共26页页感谢观看!感谢观看!第第26页页/共共26页页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com