版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、二进制形式16进制形式汇编形式01110100 0000101000100100 0000010010000000 11111110740AH2404H80FEH MOV A,#0AH ADD A,#04H SJMP $51系列单片机指令集含有111条指令按指令所占字节数分类:单字节(49条);双字节(46条);3字节(16条)按指令执行时间分类:单周期(64条);双周期(45条);4周期(2条)按指令的功能分类:数据传送类(29条);算术运算类(24条);逻辑运算及移位类(24);控制转移类(17条);位操作类(17条)方括符方括符 表示可选项表示可选项标号标号代表指令所在地址,代表指令所在
2、地址,1-81-8个字母个字母/ /数字,数字,“: :”结尾结尾操作码操作码就是指令功能助记符,指令实体就是指令功能助记符,指令实体目的操作数目的操作数源操作数源操作数注释注释,以,以 “ ; ; ” 开头开头LOOP: MOV A, R0 ;将将R0R0的内容送的内容送A A 标号标号: : 操作码操作码 目的操作数目的操作数, ,源操作数源操作数; ;注释注释 Rn 表示当前选定寄存器组的工作寄存器表示当前选定寄存器组的工作寄存器R0R0R7R7Ri 当前选中的寄存器区中可作间接寻址寄存器的当前选中的寄存器区中可作间接寻址寄存器的2 2 个寄个寄存器存器R0R0、R1(i=0,1)R1(
3、i=0,1)#data 表示表示8 8位立即数,即位立即数,即00H00HFFHFFH#data16 表示表示1616位立即数,即位立即数,即0000H0000HFFFFHFFFFHdirect 8 8位直接地址,可以是内部位直接地址,可以是内部RAMRAM区的某一单元或某一区的某一单元或某一专用功能寄存器的地址专用功能寄存器的地址Ri表示作为间接寻址的地址指针表示作为间接寻址的地址指针R0R0R1R1DPTR 数据指针,可用作数据指针,可用作1616位的地址寄存器位的地址寄存器DPTR 可按可按DPTRDPTR中地址对存储器寻址中地址对存储器寻址bit 位寻址区的直接寻址位位寻址区的直接寻址
4、位addr11 表示表示1111位地址,用于位地址,用于2K2K范围内寻址范围内寻址addr16 表示表示1616位地址,用于位地址,用于64K64K范围内寻址范围内寻址rel带符号的带符号的8 8位偏移量(位偏移量(-128-128+127+127)C或Cy 进位标志位或位处理机中的累加器进位标志位或位处理机中的累加器$ 当前指令的地址当前指令的地址 间接寻址寄存器前缀,如间接寻址寄存器前缀,如RiRi,A+DPTRA+DPTR(X) X X中的内容。中的内容。(X) 由由X X寻址的单元中的内容。寻址的单元中的内容。 箭头右边的内容被箭头左边的内容所取代。箭头右边的内容被箭头左边的内容所取
5、代。寻址方式:用何种方式寻找参与运算的操作数或操作数的真实地址。MCS-51单片机有七种寻址方式: 立即寻址 直接寻址 寄存器寻址 寄存器间接寻址 变址寻址(基址寄存器+变址寄存器间接寻址) 相对寻址位寻址 指令直接给出一个操作数,它紧跟在操作码后,通常称它为立即数(8位或16位)。 指令直接给出操作数所在存储单元的地址,它紧跟在操作码后。此方式是访问专用寄存器的唯一方式(80H FFH)也可访问内部RAM的低128(8052的256)字节 指令选定的寄存器内容就是实际操作数,寄存器可为:R0R7(由RS1、RS2两位的值选定工作寄存器区、A、B、CY(位),DPTR 指令所选中的寄存器内容是
6、实际操作数地址(而不是操作数)寻址范围内部RAM(00H7FH/FFH)使用寄存器R0,R1,SP外部数据存储器(0000HFFFFH) 操作数所指定的寄存器中存放的不是操作数本身,而是操作数 此种寻址方式以DPTR或PC作基址寄存器,A作变址寄存器(存放8位无符号数),两者相加形成16位程序存储器地址作操作数地址。 此指令用于查表此指令用于查表 E0A程序存储区2040H 9320E0H 472041H DPH 20DPL 00ALU如:MOVC A,A+DPTR设DPTR=2000H,A=E0H20E0H47指令代码此种寻址方式以程序计数器PC的内容为基地址,加上指令中给出的偏移量rel,
7、所得结果为转移目标地址,用于转移指令。偏移量rel是一8位有符号补码数,范围128+127。所以转移范围应在当前PC指针的128+127之间某一程序存储器地址中。 程序存储区ALU如:JC 23H ;若Cy为1则转移1025H1000H 401025H 451001H 23 1024H 471002H 3023H1002H指令代码当前PC以访问触发器的方式对内部RAM、特殊功能寄存器SFR中的位地址空间进行访问称之为位寻址。可被寻址的位:片内RAM的20H2FH单元,位地址00H 7FH;SFR中12个能被8整除的字节地址,位地址80H以上。方式方式利用的变量利用的变量使用的空间使用的空间寄存
8、器寄存器R0R0R7R7,A A,B B,CYCY,DPTRDPTR片片 内内直接寻址直接寻址directdirect片内片内RAMRAM低低128128字节字节特殊功能寄存器特殊功能寄存器SFRSFR寄存器间址寄存器间址R0R0,R1R1,SPSPR0R0,R1R1,DPTRDPTR片内片内RAMRAM片外片外RAMRAM与与I/OI/O口口立即数立即数#data#data程序存储器程序存储器基址加变址基址加变址A+PC A+DPTRA+PC A+DPTR程序存储器程序存储器相对寻址相对寻址PC+relPC+rel程序存储器程序存储器位寻址位寻址bitbit片内片内RAMRAM的的20H20
9、H2FH2FH部分部分SFRSFR总结总结 数据传送类指令: (29条) 算术运算类指令: (24条) 逻辑运算及移位类指令: (24条) 控制转移类指令: (17条) 位操作(布尔操作)类指令:(17条) 内部存储器间传送: (MOV 16条) 外部数据存储器与累加器间传送: (MOVX 4条) 程序存储器向累加器传送: (MOVC 2条) 数据交换: (XCH,XCHD,SWAP 5条) 堆栈操作: (PUSH,POP 2条)特点:特点:源操作数在内部,目的操作数也在源操作数在内部,目的操作数也在 内部。内部。分分四类四类介绍如下介绍如下以以累加器累加器A A为目的字节为目的字节的传送指令
10、(的传送指令(4 4条)条)以以RnRn为目的字节为目的字节的传送指令(的传送指令(3 3条)条)以以直接地址为目的字节直接地址为目的字节的传送指令(的传送指令(5 5条)条)以以间接地址为目的字节间接地址为目的字节的传送指令(的传送指令(4 4条)条)(1)立即数送累加器 MOV A,#data;A #data(2)寄存器内容送累加器 MOV A,Rn ;A (Rn) (n=07)(3)内部RAM或SFR内容送累加器 MOV A,direct ; A (direct)(4)内部RAM内容送累加器 MOV A,Ri ;A (Ri) (i=0,1) (5)立即数送寄存器 MOV Rn,#data
11、; (Rn) #data (n=07) (6)累加器内容送寄存器 MOV Rn,A ;Rn (A) (n=07)(7)内部RAM或SFR内容送寄存器 MOV Rn,direct ;Rn (direct) (n=07)(8)立即数送内部RAM或SFR MOV direct,#data ; direct #data(9)累加器内容送内部RAM或SFR MOV direct ,A ; direct (A)(10)寄存器内容送内部RAM或SFR MOV direct ,Rn ; direct (Rn) (n=07)(11)内部RAM或SFR之间直接传送 MOV direct1,direct2 ; di
12、rect1 (direct2)(12)内部RAM内容送内部RAM或SFR MOV direct,Ri; direct (Ri) (i=0,1) (13)立即数送内部RAM MOV Ri ,#data; (Ri) #data (i=0,1) (14)累加器内容送内部RAM MOV Ri ,A; (Ri) (A) (i=0,1) (15)内部RAM或SFR内容送内部RAM MOV Ri ,direct; (Ri) (direct) (i=0,1) (16)16位立即数传送指令 MOV DPTR ,#data16 ; DPTR #data16; DPH #dataH ; DPL #dataL例例 M
13、OV AMOV A,R6 R6 ;(;(R6R6)A A MOV A MOV A,R0 R0 ; (R0)A(R0)A MOV A MOV A,20H 20H ;(;(20H20H)A A MOV 20H MOV 20H ,A A ; (A)20H (A)20H 只有指令表中的指令才有对应指令代码,计算机才能只有指令表中的指令才有对应指令代码,计算机才能执行。编程时,不能随意创造发明指令。执行。编程时,不能随意创造发明指令。1、一条指令中不能同时出现两个工作寄存器。一条指令中不能同时出现两个工作寄存器。非法非法指令:指令:MOV R1MOV R1,R2R2MOV R2MOV R2,R0R02、
14、间址寄存器只能使用间址寄存器只能使用 R0R0、R1R1。 非法非法指令:指令: MOV AMOV A,R2R23、 SFRSFR区只能区只能直接寻址直接寻址,不能用寄存器间接寻址。,不能用寄存器间接寻址。非法指令:非法指令: MOV R0MOV R0,#80H#80H MOV A MOV A,R0R04、指令表、指令表(P61):关注表中:关注表中指令字节数和机器周期数指令字节数和机器周期数MOV A,#30HMOV 4FH,AMOV R0,#20HMOV R0,4FHMOV 21H,20H练习题:用两种寻址方式实现,将片内练习题:用两种寻址方式实现,将片内RAMRAM 60H 60H单元的
15、数据传送给累加器单元的数据传送给累加器A A。解:解: MOV A,#60H()MOV R0,#60H() MOV A,R0;A=30HA=30H;(4FH)=30H(4FH)=30H;R0=20HR0=20H;(20H)=30H(20H)=30H;(21H)=30H(21H)=30HMOV R0,60H MOV A,R0 () 解:解: MOV A,60H () 结果结果A=32H顺序执行下列指令序列,求每一步执行结果。顺序执行下列指令序列,求每一步执行结果。地址地址内容内容32H58H60H32H 在MCS-51系统中只能通过累加器A与片外数据存储器进行数据传送,访问时,只能通过Ri和DP
16、TR以间接寻址方式进行。注意:注意:RDRD* *或或WRWR* *信号有效。信号有效。格式:MOVX A,DPTR;A (DPTR) MOVX DPTR,A ; (DPTR) (A) MOVX A,Ri ; A (Ri) (i=0,1) MOVX Ri , A ; A (Ri) (i=0,1) 其中前两条指令通过DPTR间接寻址,可以对整个64KB片外数据存储器访问。后两条指令通过Ri间接寻址,只能对片外数据存储器的低端的256字节访问,访问时将低8位地址放于Ri中。特点:单字节指令第1、2条指令可以在外部RAM 64K范围寻址;第3、4条指令可以对外部RAM的第0页寻址;寻址范围是0000
17、H00FFH。片外数据存储器不能直接寻址。片外数据存储器不能直接寻址。下列为下列为非法非法指令:指令: MOVX AMOVX A,2000H 2000H MOVX 2100H MOVX 2100H,2000H2000HMOV DPTRMOV DPTR,#2000H#2000HMOVX AMOVX A,DPTRDPTRMOV DPTRMOV DPTR,#2100H#2100HMOVX DPTRMOVX DPTR,A A;DPTR=2000HDPTR=2000H;A=XA=X;DPTR=2100HDPTR=2100H;(2100H)=X(2100H)=X 程序存储器传送指令只有两条,一条用DPTR
18、基址变址寻址。一条用PC基址变址寻址。这两条指令通常用于访问表格数据,因此以称为查表指令。格式:远程查表指令:MOVC A,A+DPTR ; A (A)+(DPTR) 近程查表指令:MOVC A,A+PC ; PC (PC)+1 ; A (A)+(PC) 第一条指令可访问整个ROM的64KB空间,表格可放在ROM的任何位置,与MOVC指令无必然的关系。 第二条指令优点:不改变PC的状态,根据A的内容取表格常数。缺点:(1)表格只能存放在查表指令以下的256个单元内。 (2)当表格首地址与本指令间有其它指令时,须用调整偏移量,调整 量为下 一条指令的起始地址到表格首址之间的字节数。例如例如: (
19、A)=30H,: (A)=30H,执行地址执行地址1000H1000H处的指令处的指令 1000H: MOVC A,A+PC1000H: MOVC A,A+PC 本指令占用一个字节,执行结果将程序存本指令占用一个字节,执行结果将程序存储器中储器中1031H1031H的内容送入的内容送入A A。例如例如 (DPTR)=8100H (A)=40H (DPTR)=8100H (A)=40H 执行指令执行指令 MOVC A,A+DPTRMOVC A,A+DPTR 本指令占用一个字节,执行结果将程序存本指令占用一个字节,执行结果将程序存储器中储器中8140H8140H的内容送入的内容送入A A。例如:查
20、表指令例如:查表指令MOVC AMOVC A,A+PCA+PC所在的地址为所在的地址为2000H2000H,表格的起始单元,表格的起始单元地址为地址为2035H2035H,表格的第,表格的第4 4个元素(位移量为个元素(位移量为03H03H)的内容为)的内容为45H45H,则查表指,则查表指令的处理过程如下:令的处理过程如下:MOV AMOV A,#03H#03H;表格元素相对于表首的位移量送累加器;表格元素相对于表首的位移量送累加器A AADD AADD A,#34H#34H;当前程序计数器;当前程序计数器PCPC相对于表首的差值加到累加器相对于表首的差值加到累加器A A中中MOVC AMO
21、VC A,A+PCA+PC;查表,查得第;查表,查得第4 4个元素内容个元素内容45H45H送累加器送累加器A A注意:查表指令的长度为注意:查表指令的长度为1 1个字节,当前程序计数器个字节,当前程序计数器PCPC的值应为查表指的值应为查表指令的地址加令的地址加1 1。地地 址址内内 容容2000HMOVC2001H2035H表格表格2036H2038H45HPCPC 给出每条指令执行后的结果给出每条指令执行后的结果 MOV 23H,#30HMOV 12H,#34HMOV R0,#23HMOV R7,12HMOV R1,#12HMOV A,R0MOV 34H,R1MOV 45H,34HMOV
22、 DPTR,#6712HMOV 12H,DPHMOV R0,DPLMOV A,R0;(23H)=30H;(12H)=34H;R0=23H;R7=34H;R1=12H;A=30H;(34H)=34H;(45H)=34H;DPTR=6712H;(12H)=6767H;R0=1212H;A=6767HMOV P1, #0FEH ; 11111110B可以使可以使P1.0上的发光二极管点亮上的发光二极管点亮MOV P1, #0F0H ; 11110000B可以使可以使P1口上的上面口上的上面4个发光二个发光二极管点亮,极管点亮,8051的输入的输入/输出口输出口都是漏极开路输出,其中都是漏极开路输出,
23、其中P1、P2和和P3口内部有口内部有30K欧的上拉电欧的上拉电阻,属于电压输出型。但是从阻,属于电压输出型。但是从外部流入外部流入1020mA的电流是可的电流是可以的。以的。P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 5vP1.0 aP1.1 bP1.2 cP1.3 dP1.4 eP1.5 fP1.6 gP1.7 dp5vMOV P1, #00H ; 显示显示 8.MOV P1, #0F8H ; 显示显示 7MOV P1, #88H ; 显示显示 A单片机的一个引脚输出的高低电平,可以通过单片机的一个引脚输出的高低电平,可以通过“光电光电耦合器耦合器”控制
24、继电器,从而以控制继电器,从而以“弱电弱电”控制控制“强电强电”。写出完成下列功能的程序段。写出完成下列功能的程序段。(1 1)将)将R0R0的内容送的内容送R6R6中程序为:中程序为:(2 2)将片内)将片内RAM 30HRAM 30H单元的内容送片外单元的内容送片外60H60H单元中程序为:单元中程序为:(3 3)将片外)将片外RAM 1000HRAM 1000H单元的内容送片内单元的内容送片内20H20H单元中程序为:单元中程序为:(4 4)将)将ROM 2000HROM 2000H单元的内容送片内单元的内容送片内RAMRAM的的30H30H单元中程序为:单元中程序为:MOV AMOV
25、A,R0R0MOV R6MOV R6,A AMOV AMOV A,30H30HMOV R0MOV R0,#60H#60HMOVX R0MOVX R0,A AMOV DPTRMOV DPTR,#1000H#1000HMOVX AMOVX A,DPTRDPTRMOV 20HMOV 20H,A AMOV AMOV A,#00H#00HMOV DPTRMOV DPTR,#2000H#2000HMOVC AMOVC A,A+DPTRA+DPTRMOV 30HMOV 30H,A A格式:XCH A,Rn ; (A)(Rn) (n=07) XCH A,direct ; (A) (direct) XCH A,
26、Ri; (A) (Ri) (i=0,1) XCHD A,Ri ; (A30) (Ri)30) (i=0,1) SWAP A ; (A30) (A74) 普通传送指令实现将源操作数的数据传送到目的操作数,指令执行后源操作数不变,数据传送是单向的。数据交换指令数据作双向传送,传送后,前一个操作数原来的内容传送到后一个操作数中,后一个操作数原来的内容传送到前一个操作数中。特点:1. 数据交换指令要求第一个操作数须为累加器A。2. 前三条指令执行后会影响PSW中的P标志。3. 在使用XCHD指令前应预先给Ri中置地址。例例1 1: (A)=80H(A)=80H,(R7)=08H(R7)=08H,(40
27、H)=F0H(40H)=F0H (R0)=30H (R0)=30H,(30H)=OFH(30H)=OFH执行下列指令:执行下列指令: XCH A,R7 ;(A)XCH A,R7 ;(A)与与(R7)(R7)互换互换 XCH A,40H ;(A)XCH A,40H ;(A)与与(40H)(40H)互换互换 XCH A,R0 ;(A)XCH A,R0 ;(A)与与(R0)(R0)互换互换 结果:结果:(A)=0FH,(R7)=80H,(40H)=08H,(30H)=F0H(A)=0FH,(R7)=80H,(40H)=08H,(30H)=F0H例例2 2: (R0)=60H,(60H)=3EH,(A
28、)=59H(R0)=60H,(60H)=3EH,(A)=59H执行指令:执行指令: XCHD A,RO XCHD A,RO 结果:结果:(A)=5EH,(60H)=39H(A)=5EH,(60H)=39H。例例3 3: (A A)=0C5H=0C5H执行指令:执行指令: SWAP ASWAP A 结果:(结果:(A A)=5CH=5CH若若R0R0的内容为的内容为30H30H,片内,片内RAM 30HRAM 30H单元的内容为单元的内容为23H23H,累加器累加器A A的内容为的内容为45H45H,则执行,则执行XCH AXCH A,R0R0 指令后片内指令后片内RAM 30HRAM 30H单
29、元的内容为单元的内容为45H45H,累加器,累加器A A中的内容为中的内容为23H23H。 若执行若执行SWAP ASWAP A指令,则累加器指令,则累加器A A的内容为的内容为54H54H。例:设例:设A=29H,执行指令,执行指令 XCH A,2AH后,后, A= ? ,(2AH)= ?38H29HXCH 60H,61H; 对吗?对吗?不对!不对!29H29H 堆栈是在片内RAM中按“先进后出,后进先出”原则设置的专用存储区。数据的进栈和出栈由指针SP统一管理。在MCS-51系统中,堆栈操作指令有两条:格式:PUSH direct ; SP (SP)+1 ;(SP) (direct) PO
30、P direct ; direct (SP) ;SP (SP)1 其中PUSH指令入栈,POP指令出栈。操作时以字节为单位。入栈时SP指针先加1,再入栈。出栈时内容先出栈,SP指针再减1。用堆栈保存数据时,先入栈的内容后出栈;后入栈的内容先出栈。特点:Rn和A不能直接用在本指令中,A必须用ACC(或E0H),Rn也要用它的物理地址。 例:设 A=02H,B=56H,执行下列指令后, SP= ? ,A= ? ,B= ? 。SBR:MOV SP,#30H ;设栈底;设栈底 PUSH AccPUSH BMOV A,#00HMOV B,#01H POPBPOP AccSP SPB02H 02H 56H
31、ASPB02H 56H02H 56HASPB00H 56H02H 01HASPB00H 56H02H 56HASPB02H 56H02H 56HA02H56H30HB02H56HA 说明程序执行过程中,SP的内容及堆栈中内 容的改变过程。 程序如下: MOV SP,#30H MOV A,#20H MOV B,#30H PUSH Acc PUSH B POP B POP Acc1MOV A,#1000H2MOVX A,1000H3MOVC A,1000H4MOVX 60H,A5MOV R0,60H MOV 61H,R06. XCH R1,R2 7. MOVX DPTR,#2000H 8. MOV
32、X 60H,DPTR不带进位加:(ADD 4条)带进位加:(ADDC 4条)增量指令:(INC 5条)十进制调整指令: (DA 1条)减法指令: (SUBB 4条)减量指令: (DEC 4条)乘法指令: (MUL 1条)除法指令: (DIV 1条)格式:ADD A,#data ; A (A)+#data ADD A,Rn; A (A)+(Rn) (n=07) ADD A,Ri ; A (A)+(Ri) (i=0,1) ADD A,direct ; A (A)+(direct) 特点:1. 两个操作数均为8位,其中之一是累加器A;2. 加法操作在ALU中完成,结果送回累加器A,运 算时产生的标志
33、位在PSW中;要注意累加器A中的运算结果对各个标志位的影响3. 不论两操作数是否为带符号数,机器均按带符号数运算。PSWPSW(1 1)如果位)如果位7 7有进位,则置有进位,则置“1”“1”进位标志进位标志CyCy,否则清,否则清“0”Cy“0”Cy(2 2)如果位)如果位3 3有进位,置有进位,置“1”“1”辅助进位标志辅助进位标志AcAc,否则清,否则清“0”Ac“0”Ac(AcAc为为PSWPSW寄存器中的一位)寄存器中的一位)(3 3)如果位)如果位6 6有进位,而位有进位,而位7 7没有进位,或者位没有进位,或者位7 7有进位,而位有进位,而位6 6没有,则溢出标志位没有,则溢出标
34、志位OVOV置置“1”“1”,否则清,否则清“0”OV“0”OV。A A 总结:总结:溢出标志位溢出标志位OVOV的状态,只有在带符号数加法运算的状态,只有在带符号数加法运算时才有意义。当两个带符号数相加时,时才有意义。当两个带符号数相加时,OV=1OV=1,表示加法,表示加法运算超出了累加器运算超出了累加器A A所能表示的带符号数的有效范围所能表示的带符号数的有效范围 例:请分析如下指令执行后累加器A和PSW中内容是什么?MOV A,#5AHADD A,#6BH求解: A=0 1 0 1 1 0 1 0B + data= 0 1 1 0 1 0 1 1BCy 1 1 0 0 0 1 0 1B
35、PSW:CyACF0RS1RS0OV-P01000100例例1 (A)=53H1 (A)=53H,(R0)=FCH(R0)=FCH,执行指令,执行指令 ADD A,R0ADD A,R0例例2 (A)= 85H,(R0)=20H,2 (A)= 85H,(R0)=20H,(20H20H)=AFH=AFH,执行指令:,执行指令: ADD A,R0ADD A,R0例例1 1结果为结果为: (A)=4FH: (A)=4FH,Cy=1Cy=1,Ac=0Ac=0,OV=0OV=0,P=1P=1注意:上面的运算中,由于位注意:上面的运算中,由于位6 6和位和位7 7同时有进位,同时有进位,所以标志位所以标志位
36、OV=0OV=0。例例2 2结果为结果为: :(A A)=34H=34H,Cy=1Cy=1,Ac=1Ac=1,OV=1OV=1,P=1P=1注意:由于位注意:由于位7 7有进位,而位有进位,而位6 6无进位,所以标志无进位,所以标志位位OV=1 OV=1 格式:ADDC A,#data ; A (A)+#data+Cy ADDC A,Rn; A (A)+(Rn)+Cy (n=07) ADDC A,Ri ; A (A)+(Ri)+Cy (i=0,1) ADDC A,direct ; A (A)+(direct)+Cy特点:注释中的Cy中内容为指令执行前Cy内容,指令执行后形成新的Cy保留在PSW
37、中,其余和不带Cy的加法指令相同;本类指令用于多字节加法程序中。 例:(例:(A A)=85H,=85H,(20H20H)=FFH,Cy=1=FFH,Cy=1,执行指令:,执行指令: ADDC A,20HADDC A,20H结果为结果为: :(A A)=85H=85H,Cy=1Cy=1,Ac=1Ac=1,OV=0OV=0,P=1 P=1 (A A中中1 1的位数的位数为奇数)为奇数)测验:试把存放在R1R2和R3R4中的两个16位数相加,结果存于R5R6中。R1 R2R3 R4R5 R6C+ADDADDCC处理时,R2和R4用一般的加法指令ADD,结果放于R6中,R1和R3用带进位的加法指令A
38、DDC,结果放于R5中,程序如下:MOV A,R2ADD A,R4MOV R6,AMOV A,R1ADDC A,R3MOV R5,A格式:INC A; A (A)+1INC Rn; Rn (Rn)+1 (n=07) INC direct ; direct (direct)+1INC Ri ; (Rn) (Rn)+1 (n=0,1) INC DPTR; DPTR (DPTR)+1 特点:1. 本指令仅第一条对PSW中P标志有影响。 2. 第5条指令INC DPTR,是16位数增1指令。指令首先对低8位指针DPL的内容执行加1的操作,当产生溢出时,就对DPH的内容进行加1操作,并不影响标志Cy的状
39、态。 3. 思考INC A ;(A)=FFH格式:DA A 操作:若累加器低4位大于9或BCD码加时有半进位AC=1,则A (A)+06H 。若累加器高4位大于9或BCD码加时有全进位CY=1,则A (A)+60H。特点:1. 用于对BCD码十进制数加法运算结果的内容修正。2. 紧跟加法指令ADD和ADDC后,对加法结果调整;用于BCD加、BCD减运算。 3. 具体过程是DA A 指令自动实现。ALUALU只能进行二进制加法(即低只能进行二进制加法(即低4 4位向高位向高4 4位逢位逢1616进进1 1)原则并不原则并不能适用于十进制数的加法运算,有时会产生错误结果。能适用于十进制数的加法运算
40、,有时会产生错误结果。例如:例如:(a a)3+6=9 0011+0101=1001 3+6=9 0011+0101=1001 运算结果正确运算结果正确(b b)7+8=15 0111+1000=1111 7+8=15 0111+1000=1111 运算结果不正确运算结果不正确(c c)9+8=17 1001+1000=0001 C=1 9+8=17 1001+1000=0001 C=1 结果不正确结果不正确出错原因:出错原因: BCDBCD码只用了了其中的码只用了了其中的1010个,个,6 6个没用到的编码。个没用到的编码。(10101010,10111011,11001100,110111
41、01,11101110,11111111)为无效码)为无效码 凡结果进入或者跳过无效码编码区时,其结果就是错误的。凡结果进入或者跳过无效码编码区时,其结果就是错误的。例:写出85+59=144BCD加法程序,并对加法过程和BCD调整进行分析。求解:ORG1000HMOV A,#85H; A #85HADDA,#59H; A (A)+#59HDAA; A #44H,Cy=1上例加法操作及BCD调整过程:例例 (A A)=56H,=56H,(R5R5)=67H=67H,把它们看作为两个压缩的,把它们看作为两个压缩的BCDBCD数,进行数,进行BCDBCD数的加法。执行指令:数的加法。执行指令: A
42、DD A,R5ADD A,R5 DA A DA A 由于高、低由于高、低4 4位分别大于位分别大于9 9,所以要分别加,所以要分别加6 6进行十进制进行十进制调整对结果进行修正。调整对结果进行修正。结果为:结果为: (A A)=23H=23H,Cy=1Cy=1 可见,可见,56+67=12356+67=123,结果是正确的。,结果是正确的。大家考虑一下:大家考虑一下:99+199+1和和99+099+0的加法过程的加法过程对于高位一定是低四位操作完成后(包括进位)再看高四位对于高位一定是低四位操作完成后(包括进位)再看高四位是否大于是否大于9 9测验:在测验:在R3中有十进制数中有十进制数67
43、,在,在R2中有十进制数中有十进制数85,用十,用十进制运算,运算的结果放于进制运算,运算的结果放于R5中。写出程序和计算过程。中。写出程序和计算过程。(R3)=67=0110 0111 B(R2)=85=1000 0101 B + (A)=1110 1100 B=ECH 52H=(A)1=(C)ECH=1110 1100B 0110 0110B + 1 0101 0010B程序为:程序为:MOV A,R3 ;(;(R3)=67ADD A,R2 ;(;(R2)=85,(A)=0ECHDA A;(;(A) =52HMOV R5,A ;(;(R5)=52H 程序中程序中DA指令对指令对ADD指令运
44、算出来的放于指令运算出来的放于累加器累加器A中的结果进行调整,调整后,累加器中的结果进行调整,调整后,累加器A中的内容为中的内容为52H,CY为为1,则结果为,则结果为152,最后,最后放于放于R5中的内容为中的内容为52H(十进制数(十进制数52)。)。 在MCS-51单片机中,只提供了一种带借位的减法指令,没有提供一般的减法指令,一般的减法操作可以通过先对CY标志清零,然后再执行带借位的减法来实现。格式:SUBB A,#data ; A (A)#dataCy SUBB A,Rn ; A (A)(Rn)Cy (n=07) SUBB A,direct ; A (A) (direct) Cy S
45、UBB A, Ri ; A (A)(Ri)Cy (n=0,1) 特点:1. SUBB指令在执行时要影响指令在执行时要影响CY、AC、OV和和P标志位标志位;2. 本指令用于单字节、多字节减法程序;本指令用于单字节、多字节减法程序;3. 机器按带符号数运算,并产生机器按带符号数运算,并产生PSW中标志;中标志;4. 形成形成OV标志的规则为:标志的规则为: (1)如果位)如果位7需借位则置需借位则置“1” Cy,否则清,否则清“0”Cy; (2)如果位)如果位3需借位则置需借位则置“1”Ac,否则清,否则清“0”Ac; (3)如果位)如果位6需借位而位需借位而位7不需要借位,或者位不需要借位,或
46、者位7需借位,位需借位,位6不需借位,不需借位,则置则置“1溢出标志位溢出标志位OV,否则清,否则清“0”OV。例例1 1 (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借位)借位)例例2 2 求求R3R2 - R1R3R2 - R1。程序为:程序为:MOV MOV A A,R2R2CLR CLR C CSUBB ASUBB A,R1R1MOV MOV R3 R3,A
47、 A格式:DEC A; A (A)1 DEC Rn ; Rn (Rn)1 (n=07) DEC direct ; direct (direct) 1 DEC Ri ; (Ri) (Ri)1 (n=0,1) 特点:DEC A指对PSW中P标志有影响。 注意:DEC A (A)=00H?格式:MUL AB; B A (A)(B) ; Cy0 DIV A B ; A (A)/(B)的商;; B (A)/(B)的余数;; Cy 0,OV 0MUL AB指令执行时将对存放于累加器指令执行时将对存放于累加器A中的无符号被乘数和放于中的无符号被乘数和放于B寄存器中寄存器中的无符号乘数相乘,积的高字节存于的无
48、符号乘数相乘,积的高字节存于B寄存器中,低字节存于累加器寄存器中,低字节存于累加器A中。中。DIV A B指令执行时将用存放在累加器指令执行时将用存放在累加器A中的无符号被除数与存放在中的无符号被除数与存放在B寄存器寄存器中的无符号除数相除,除得的结果,商的存于累加器中的无符号除数相除,除得的结果,商的存于累加器A中,余数存于中,余数存于B寄寄存器中。存器中。特点:1. 单字节指令,执行时间为单字节指令,执行时间为48T(4机器周期);机器周期);2. 操作数均为操作数均为8位无符号数;位无符号数; 3. 乘法指令,积大于乘法指令,积大于255,置,置1溢出标志位溢出标志位OV,否则清,否则清
49、0OV位位 4. 除法指令,除法指令,B的内容(除数)不为的内容(除数)不为0,计算后,清,计算后,清0Cy和溢出标志位和溢出标志位OV;如除数(;如除数(B的内容)为的内容)为0,则存放结果的,则存放结果的A、B的内容不定,并置的内容不定,并置1溢出标志位溢出标志位OV。 DA A指令只能用在加法指令后,对二进制加法结果进行调整。BCD减法可以采用以下方法:1、求减数的补码;2、进行被减数+减数补数运算;3、对所得两数之和进行BCD调整。例:写出91-34=57的BCD减法程序。求解: ORG1000HCLRC; C 0MOVA,#9AH ; A #9AHSUBBA,#34H; 求-34补A
50、DDA,#91H ;求91+-34补DAA; BCD调整SJMP$END上例减法操作及BCD调整过程:逻辑与指令:(ANL 6条)逻辑或指令:(ORL 6条)逻辑异或指令: (XRL 6条)累加器清除与求反指令: (CLR、CPL 2条)移位指令: ( RL、RLC、RR、RRC 4条)格式:ANL A,#data ; A (A)#data ANL A,Rn ; A (A)(Rn) (n=07) ANL A,direct ; A (A)(direct) ANL A, Ri ; A(A)(Ri) (n=0,1) ANL direct,A; direct (direct)(A) ANL direc
51、t,#data; direct (direct)#data 特点:前四条指令执行后会对PSW中P标志产生影响。用途:可从某字节中取出某几位。格式:ORL A,#data ; A (A) #data ORL A,Rn ; A (A) (Rn) (n=07) ORL A,direct ; A (A) (direct) ORL A, Ri ; A(A) (Ri) (n=0,1) ORL direct,A; direct (direct) (A) ORL direct,#data; direct (direct) #data 特点:前四条指令执行后会对PSW中P标志产生影响。用途:给某字节中某几位置1
52、。格式:XRL A,#data ; A (A) #data XRL A,Rn ; A (A) (Rn) (n=07) XRL A,direct ; A (A) (direct) XRL A, Ri ; A (A) (Ri) (n=0,1) XRL direct,A; direct (direct) (A) XRL direct,#data; direct (direct) #data 特点:前四条指令执行后会对PSW中P标志产生影响。用途:令某字节中某几位置取反,其余位不变。+BABA BABA BABA 例例1 1 (A A)=07H,=07H,(R0R0)=0FDH,=0FDH,执行指令:
53、执行指令: ANL A,R0ANL A,R0 结果:(结果:(A A)=05H=05H例例2 2 (P1P1)=05H,=05H,(A A)=33H=33H,执行指令,执行指令 ORL P1,AORL P1,A结果:(结果:(P1P1)=37H =37H 例例3 3 (A A)=90H,=90H,(R3R3)=73H =73H 执行指令:执行指令: XRL A,R3XRL A,R3结果:(结果:(A A)=E3H =E3H 思考题:写出完成下列功能的指令段。思考题:写出完成下列功能的指令段。1 1对累加器对累加器A A中的中的1 1、3 3、5 5位清位清0 0,其余位不变,其余位不变2 2对
54、累加器对累加器A A中的中的2 2、4 4、6 6位置位置1 1,其余位不变,其余位不变3 3对累加器对累加器A A中的中的0 0、1 1位取反,其余位不变位取反,其余位不变ANL AANL A,#11010101B#11010101BORL AORL A,#01010100B#01010100BXRL AXRL A,#00000011B#00000011B格式:CLR A ; A 0 CPL A ; A 特点:影响P标志,不影响Cy、Ac、OV标志位。用途:CLR用于是累加器清零;CPL可用于求某数的补码。)(A 循环移位指令(4 4条)条)RL ARR ARLC ARRC AA.7 A.0
55、A.7 A.0A.7 A.0CYCYA.7 A.0后两条指令,影响后两条指令,影响P P标志和标志和CYCY。 MCS-51系统有四条对累加器系统有四条对累加器A的循环移位指令,前两条只的循环移位指令,前两条只在累加器在累加器A中进行循环移位,后两条还要带进位标志中进行循环移位,后两条还要带进位标志CY进行循进行循环移位。每一次移一位。环移位。每一次移一位。例:若若A=5CHA=5CH,CY=1CY=1,执行,执行RLC ARLC A后,后,v 对对RLCRLC、RRCRRC指令,在指令,在CY=0CY=0时时 RLCRLC相当于相当于乘乘以以2 2 RRCRRC相当于相当于除除以以2 2结果
56、:结果:A=B9HA=B9H,CY=0CY=0,P=1P=10101 11000101 11001 11011 10011011 10010 0用途:用途:对某数扩大或缩小对某数扩大或缩小1 1倍。倍。无条件转移指令:(LJMP、AJMP、SJMP、JMP 4条)条件转移指令:(JZ、JNZ、CJNE、DJNZ 8条)子程序调用及返回指令: (LCALL、ACALL、RET、RETI 4条)空操作指令: (NOP 1条)格式:LJMP addr16 ; PC addr16 AJMP addr11 ; PC(PC)+2; PC100 指令中的A100 SJMP rel ; PC (PC)+2;
57、PC (PC)+rel JMP A+DPTR ; PC (A)+(DPTR)特点:这类指令执行时不会影响PSW中各标志位;指令的操作对象是PC中地址;第2、3条指令是相对转移指令,汇编时能产生浮动代码,在子程序中很有用。本指令是2KB范围内的绝对转移指令:AJMP addr11 ; PC(PC)+2(形成页面地址PC15-11); PC100 addr11 (形成页面地址)说明:本指令是双字节指令。指令码为:a10 a9 a8 0 0 0 0 1 a7 a6 a0 操作码其中a10a0为低11位目标地址。编程时addr11常用符号地址,汇编时翻译成机器码。0000H1 区0 区31 区AJMPPC15 PC14 PC13 PC12 PC11
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大学物联网(物联网工程设计)试题及答案
- 2026年中职第一学年(计算机网络技术)网络搭建与维护阶段测试题及答案
- 2025年中职第二学年(电工技术)技能竞赛复赛测试卷
- 第2部分 第11章 课时2 交通运输对区域发展的影响
- 2025年 胸心外科护士长1季度考核样卷及答案
- 深度解析(2026)《GBT 17960-2000信息技术 数据交换用90 mm改进调频制记录的位密度为31 831磁通翻转弧度、每面80磁道的软磁盘 GB 303型》
- 高空作业安全防护规范
- 模块间通信稳定性改进方案
- 中央司法警官学院《机械制图基础》2025-2026学年第一学期期末试卷
- 青岛滨海学院《工程估价实训》2025-2026学年第一学期期末试卷
- 经济新常态下企业管理的创新路径研究
- IPO融资分析师融资报告模板
- 2025 高级经济师 工商管理 试题
- 驾校土地租赁合同范本
- 公司生产主管述职报告
- 搏击裁判员培训课件
- 医疗器械质量记录管理制度
- 2024年北京广播电视台招聘真题
- 2025存储行业报告
- 危险废物安全措施课件
- 形势与政策(吉林大学)单元测试(第11-25章)
评论
0/150
提交评论