版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 标号标号 :操作码:操作码 操作数操作数11, 操作数操作数22; 注释注释 例:例: LOOPLOOP: MOV A MOV A,#40H #40H ;4040H - AH - A 标号:标号:指令地址的标志符号。以字母开始,后跟指令地址的标志符号。以字母开始,后跟1 18 8个字母或数字或个字母或数字或“_”“_”,并以冒号,并以冒号“:”“:”结尾。结尾。 操作码:操作码:指明指令功能指明指令功能,2,25 5个字母。个字母。例:例: MOV 传送传送 ANL 逻辑与逻辑与 MUL 乘法乘法 RR 循环右移循环右移 SJMP 短跳转短跳转 RET 子程序返回子程序返回 操作数:操作数:
2、指令操作的对象。可以是数据、地指令操作的对象。可以是数据、地址、寄存器名及约定符号等。址、寄存器名及约定符号等。 注释行:注释行:说明指令在程序中的作用。说明指令在程序中的作用。 操作码和操作数操作码和操作数是指令主体。是指令主体。 标号标号 :操作码:操作码 操作数操作数11, 操作数操作数22; 注释注释 例:例: LOOPLOOP: MOV A MOV A,#40H #40H ;4040H - AH - A4注意注意以下一些常用符号:以下一些常用符号:data 立即数立即数 direct 直接地址直接地址 Ri 以以Ri里面的内容为物理地址的里面的内容为物理地址的 存储单元(存储单元(i
3、=0、1) Rn 工作寄存器(工作寄存器(n=07) 1. 1.定位伪指令:定位伪指令: ORG mORG m 例例: : ORG 0000HORG 0000H START START: SJMP SJMP MAIN MAIN ORGORG 0030H 0030H MAIN MAIN:MOVMOVSPSP,#30H #30H 以以STARTSTART开始的程序汇编为机器码后,从开始的程序汇编为机器码后,从00000000H H存贮单元开存贮单元开始连续存放,始连续存放,但但不能超过不能超过0030H0030H存储单元。存储单元。 2.2.结束伪指令:结束伪指令: ENDEND64.4.定义字伪
4、指令:定义字伪指令: DW YDW Y1 1,Y,Y2 2, ,Y,Yn n 汇编后汇编后高八位放入低地址单元,低八位放入高高八位放入低地址单元,低八位放入高地址单元地址单元!(与微机原理中相反!)(与微机原理中相反!)3.3.定义字节伪指令:定义字节伪指令: DB X DB X1 1,X,X2 2, , X Xn n例例: : ORGORG7F00H7F00H DB DB01110010B01110010B,16H16H,4545,88,AA汇编后存储单元内容为:汇编后存储单元内容为:(7 7F00HF00H)=72H=72H (7F01H7F01H)=16H=16H(7F02H7F02H)
5、=2DH =2DH (7F03H7F03H)=38H=38H(7F04H7F04H)=41H =41H 75定义空间伪指令:定义空间伪指令: DS DS 表达式表达式 例例: : ORGORG0F00H0F00H DS DS10H10H DB DB20H20H,40H40H 汇编后,从汇编后,从0 0F00HF00H开始,保留开始,保留1616个字节的个字节的ROMROM单元,单元,然后从然后从0 0F10HF10H开始,按照下一条开始,按照下一条DBDB伪指令给存储单元赋伪指令给存储单元赋值,得(值,得(0 0F10HF10H)=20H=20H,(,(0F11H0F11H)=40H=40H。
6、 DBDB、DWDW、DSDS伪指令都只对伪指令都只对ROMROM起作用!起作用!6等值伪指令等值伪指令:(:(可赋可赋8 8位或位或1616位地址或数据)位地址或数据) 字符名称字符名称 EQUEQU 数据或汇编符数据或汇编符 字符名称字符名称必须必须先赋值后使用先赋值后使用,通常在源程序的开头,通常在源程序的开头赋值!赋值!8例例: ORG 8500H AAEQU R1A10EQU 10HDELAY EQU 87E6H MOV R0,A10 ;R0(10H) MOV A,AA ;A(R1) LCALL DELAY ;调用起始地址为调用起始地址为 ;87E6H的子程序的子程序 END EQU
7、赋值后,赋值后,AA为寄存器为寄存器R1,A10为为8位直接位直接地址地址10H,DELAY为为16位地址位地址87E6H。 97数据地址赋值伪指令:数据地址赋值伪指令: 字符名称字符名称 DATA DATA 表达式表达式 字符名称字符名称没有先定义后使用的限制,没有先定义后使用的限制,DATA赋值指赋值指令可放在源程序的开头或末尾。令可放在源程序的开头或末尾。表达式表达式不可以是汇编符不可以是汇编符号号(如(如R0R7)。)。8位地址赋值伪指令:位地址赋值伪指令: 字符名称字符名称 BITBIT 位地址位地址 寻址方式寻址方式:指令如何给出参与运算的操作数。:指令如何给出参与运算的操作数。一
8、、一、立即寻址方式立即寻址方式 指令中给出实际指令中给出实际操作数操作数( (立即数立即数) ),以指令字节的形,以指令字节的形式存放在式存放在ROMROM中,一般用于为寄存器或存储器赋初值中,一般用于为寄存器或存储器赋初值(常数)。(常数)。例:例: 8 8位立即数:位立即数: MOV AMOV A,#40H#40H ;A40HA40H 16 16位立即数:位立即数: MOV DPTRMOV DPTR,#2100H #2100H ;DPH21HDPH21H ;DPL00HDPL00H 指令中的操作数是存储器单元的地址(指令中的操作数是存储器单元的地址(8 8位位),数),数据存放在存储器单元
9、中。据存放在存储器单元中。 (1)直接寻址方式对数据操作时,直接寻址方式对数据操作时,地址地址是固定值,而是固定值,而地址所指定的地址所指定的单元的内容单元的内容为变量形式。为变量形式。 (2)SFRSFR只能用直接寻址方式访问,两种表示方法:只能用直接寻址方式访问,两种表示方法:物物理地址理地址和和寄存器标号(寄存器标号(推荐使用推荐使用)( (P40 P40 例例3-223-22) )。如:。如: 累加器累加器A E0H ACCA E0H ACC B B寄存器寄存器 F0H BF0H B 程序状态字程序状态字 D0H PSWD0H PSW41H 78H40H 56H 例:例:设存储器两个单
10、元的内容如图所设存储器两个单元的内容如图所示,则执行指令示,则执行指令 MOV AMOV A,40H 40H 后,后,(A A) = = ?56H四、四、寄存器间接寻址方式寄存器间接寻址方式 指令中的操作数为寄存器中存放的地址数据。指令中的操作数为寄存器中存放的地址数据。 存放地址的寄存器称为间址寄存器存放地址的寄存器称为间址寄存器( (RiRi) )或地址指或地址指针针( (DPTRDPTR) )。例例: :MOV AMOV A,R0R0;A(R0)A(R0) 设指令执行前设指令执行前( (A)=20HA)=20H,(R0)=40H(R0)=40H,地址为地址为4040H H的存储单元内容如
11、图所示的存储单元内容如图所示。执执行指令后,行指令后,(A)= (A)= ? ,(R0)= ,(R0)= ? ,(40H)= ,(40H)= ? 41H 67H 40H 34H34H40H34H40H40HR013注意:注意: (1) (1)寄存器间址可拓宽单片机寻址范围,寄存器间址可拓宽单片机寻址范围,如:如: RiRi可用于对可用于对片内片内RAMRAM寻址寻址( (0000H-7FHH-7FH)()(MOVMOV指令指令),),也可用于对也可用于对片外片外RAMRAM寻址寻址( (0000H-0FFHH-0FFH) )( (MOVXMOVX指令指令) ); DPTRDPTR可寻址可寻址片
12、外片外ROM/RAMROM/RAM的全部的全部6464KBKB区域区域( (MOVC/MOVXMOVC/MOVX指令指令) )。 (2) (2)寄存器间址指令寄存器间址指令不能用于寻址不能用于寻址SFRSFR。例:例: A A,A+DPTRA+DPTR;A(A)+(DPTR)A(A)+(DPTR) 设指令执行前设指令执行前( (A)=09H,(DPTR)=2000HA)=09H,(DPTR)=2000H,存储器单存储器单元内容如图所示。则执行指令后,元内容如图所示。则执行指令后,(A)= (A)= ? (DPTR)= (DPTR)= ? 12H2000H2008H 89H2009H 12H15
13、 六、例:例:七七. .位寻址方式位寻址方式 指令给出位地址。数据存放于指令给出位地址。数据存放于RAMRAM可位寻址空间可位寻址空间中的某一位。中的某一位。 例:例: MOV CMOV C,40H40H ;Cy(Cy(4040H H( (位地址位地址) ) ) 设指令执行前设指令执行前( (Cy)=1Cy)=1,RAMRAM地址为地址为2828H H的存储单的存储单元如图,则执行指令后,元如图,则执行指令后,(Cy)= (Cy)= ?28H 0110001029H 11010111位寻址区017指令系统的结构和分类指令系统的结构和分类: MCS-51指令系统共有指令系统共有111条指令,按条
14、指令,按功能可分为四大类:功能可分为四大类: 数据传送类数据传送类 算术运算类算术运算类 逻辑操作和循环转移类逻辑操作和循环转移类 控制转移类控制转移类18MCS-51指令系统结构指令系统结构19指令的字节和周期指令的字节和周期:l寄存器名可隐含或包含在操作码中;寄存器名可隐含或包含在操作码中;l操作数为直接地址或立即数则必需单独占用一个字节;操作数为直接地址或立即数则必需单独占用一个字节;注意:注意: 凡指令码中含有凡指令码中含有直接地址直接地址或或立即数立即数的指令,其字节的指令,其字节数应在原有基础上数应在原有基础上分别分别加加1。 执行每条指令所需的机器周期数既取决于指令所含执行每条指
15、令所需的机器周期数既取决于指令所含字节数,也取决于字节数,也取决于CPU在每个机器周期内最多能进行两在每个机器周期内最多能进行两次读操作、每次一个字节的特性。次读操作、每次一个字节的特性。 实现累加器、寄存器、存储器之间的数据传送。实现累加器、寄存器、存储器之间的数据传送。 一、一般传送指令一、一般传送指令 1 1、内部、内部8 8位数据传送指令位数据传送指令 2 2、位变量传送指令、位变量传送指令 3 3、1616位数据传送指令位数据传送指令 4 4、外部传送指令、外部传送指令 5 5、查表指令、查表指令 6 6、堆栈操作指令、堆栈操作指令 二、累加器专用数据交换指令二、累加器专用数据交换指
16、令 1 1、字节交换指令、字节交换指令 2 2、半字节交换指令、半字节交换指令例:例:MOV AMOV A,Rn Rn ;A(Rn)A(Rn),(n=0(n=07)7) MOV AMOV A,direct direct ;A(direct)A(direct),MOV AMOV A,Ri Ri ;A(Ri)A(Ri),i=0i=0、1 1MOV AMOV A,#data #data ;AdataAdataMOV Rn,direct MOV Rn,direct ;Rn(direct)Rn(direct)MOV Ri,direct MOV Ri,direct ;(Ri)(direct)(Ri)(di
17、rect)MOV direct1MOV direct1,direct2 direct2 ;direct1(direct2) direct1(direct2) 22操作码目的源操作内容字节数执行时间MOVA,#datadirectRiRnAdataA(direct)A(Ri)A(Rn)22111111Rn,#datadirectARndataRn(direct)Rn(A)221111direct ,#dataAdirectRiRndirect datadirect (A)direct (direct)direct (Ri)direct (Rn)3232221221Ri,#datadirectA(
18、Ri)data(Ri)(direct)(Ri)(A)221121一般数据传送指令一般数据传送指令MOV AMOV A,#30H#30HMOV 4FHMOV 4FH,A AMOV R0MOV R0,#20H#20HMOV R0MOV R0,4FH4FHMOV 21HMOV 21H,20H20H;( (A)= 30H A)= 30H ;(4FH)= 30H (4FH)= 30H ;(R0)= 20H (R0)= 20H ;(20H)= 30H (20H)= 30H ;(21H)= 30H(21H)= 30H1. 一条指令中不能同时出现两个工作寄存器:一条指令中不能同时出现两个工作寄存器:非法非法指
19、令:指令:MOV R1MOV R1,R2R2MOV R2MOV R2,R0R02. 间址寄存器只能使用间址寄存器只能使用 R0R0、R1R1。 非法非法指令:指令:MOV AMOV A,R2R23. SFRSFR区区只能直接寻址,不能用寄存器间接寻址。只能直接寻址,不能用寄存器间接寻址。非法非法指令:指令:MOV R0MOV R0,#80H#80HMOV AMOV A,R0R04. 目的操作数不能采用立即寻址目的操作数不能采用立即寻址。 252 2、MOV C, bit ;C(bit)MOV C, bit ;C(bit) MOV bit, C ;bit(C) MOV bit, C ;bit(C
20、) 其中一个操作数必须为其中一个操作数必须为位累加器位累加器C C(即即PSWPSW中的中的CyCy)。)。:将:将位地址位地址2020H H中的内容传送到中的内容传送到位地址位地址3030H H中:中:MOV CMOV C,20H20HMOV 30HMOV 30H,C C263 3、 MOV DPTRMOV DPTR,#data16 #data16 ;DPTRdata16DPTRdata16:MOVXMOVX目的目的操作数操作数源源操作数操作数:片外:片外RAMRAM用寄存器间址方式。用寄存器间址方式。1. 1. DPTRDPTR作作1616位数据指针,寻址位数据指针,寻址6464KBKB片
21、外片外RAMRAM空间空间MOVX AMOVX A,DPTRDPTR ;A(DPTR)A(DPTR)MOVX DPTRMOVX DPTR,A A ;(DPTR)(A)(DPTR)(A)2. 2. RiRi作作8 8位数据指针,寻址位数据指针,寻址256256B B片外片外RAMRAM空间空间MOVXMOVX A A,RiRi;A(Ri)A(Ri)MOVXMOVX RiRi,A A ;(Ri)(A)(Ri)(A)MOV DPTRMOV DPTR,#2000H#2000HMOVX AMOVX A,DPTRDPTRMOV DPTRMOV DPTR,#2100H#2100HMOVX DPTRMOVX
22、DPTR,A A;( (DPTR)= 2000HDPTR)= 2000H;(A)= X(A)= X;(DPTR)= 2100H(DPTR)= 2100H;(2100H)= X(2100H)= X 片外数据存储器片外数据存储器不能不能直接寻址直接寻址。下列为。下列为非法非法指指令:令: MOVX AMOVX A,2000H 2000H MOVX 2100H MOVX 2100H,2000H2000H1 1DPTRDPTR为基址寄存器为基址寄存器 MOVC AMOVC A,A+DPTRA+DPTR ;A(A)+(DPTR) A(A)+(DPTR) 查表范围为查表范围为6464KBKBROMROM的
23、任意空间,称为远程查表指的任意空间,称为远程查表指令。令。A A中内容作为无符号数中内容作为无符号数。2 2PCPC为基址寄存器为基址寄存器 MOVC AMOVC A,A+PCA+PC ;A(A)+A(A)+(PC)+1(PC)+1) ) 查表范围只能在查表指令后查表范围只能在查表指令后256256B B的的ROMROM空间内。空间内。PCPC内容为下一条指令的起始地址。内容为下一条指令的起始地址。A A中内容作为无符号数中内容作为无符号数。1 1)ORG 1000HORG 1000HSQU:SQU: MOV DPTRMOV DPTR,#TAB#TAB ;确定表首地址(基地址);确定表首地址(
24、基地址)MOV AMOV A,20H20H;取取X X(偏移量)偏移量)MOVC AMOVC A,A+DPTRA+DPTR;查表求查表求Y=XY=X2 2MOV 21HMOV 21H,A A;保存保存Y YRETRET;子程序结束子程序结束;其它程序段;其它程序段ORG 3000HORG 3000H;常数表格首地址常数表格首地址TAB:TAB: DB 00DB 00,0101,0404,0909,225225;平方表平方表2 2)指令地址指令地址 源程序源程序 ORG 1000HORG 1000H ;程序起始地址程序起始地址 1000 1000H H SQU: SQU: MOV A MOV A
25、,20H20H;取取X X 1002H 1002H ADD A ADD A,#3#3 ;修正偏移量修正偏移量 1004 1004H H MOVC AMOVC A,A+PCA+PC ;查表查表求求Y=XY=X2 2 100 1005 5H H MOV 21H MOV 21H,A A;存结存结果果 100 1007 7H H RET RET ;子程子程序结束序结束 1008 1008H H TAB: TAB: DB 00 DB 00,0101,04 04 ;平方平方表表 100100BHBH DB 09 DB 09,225 225 例:例:设设( (A)=02A)=02,(B)=56H(B)=56
26、H,执行下列指令后,执行下列指令后,(SP)= (SP)= ? ,(A)= (A)= ? ,(B)= ?(B)= ?片内 RAM 34H 33H 32H 31H 30H SPSP SP 02 SP 56H 02 56H 02HSP SP 56H 02 SP 56H 02 56H SP 02 02HA00H02H00H02H02HSBRSBR: MOV SP MOV SP,#30H #30H ;设栈底;设栈底 PUSH PUSH ACCACC PUSH B PUSH B MOV A MOV A,#0#0 MOV MOV B B,#01#01 POP POP B B POP POP ACCACC
27、只有压栈指令会改变堆栈区中的数据只有压栈指令会改变堆栈区中的数据。0256H30H1. 1. 字节交换指令字节交换指令XCH AXCH A,RnRn ;(A)(Rn)(A)(Rn)XCH AXCH A,RiRi;(A)(Ri)(A)(Ri)XCH AXCH A,directdirect ;(A)(direct)(A)(direct)例:例:设设( (A)= 29HA)= 29H,执行指令执行指令 XCH AXCH A,2AH2AH后,后,( (A)= A)= ?(2AH)= (2AH)= ?38H29H29HXCHD AXCHD A,RiRi ;(A)(A)3 30 0(Ri)(Ri)3 30
28、 ,0 ,各自高四位不变。各自高四位不变。SWAP ASWAP A ;(A)(A)7 74 4(A)(A)3 30 0例:例:将片内将片内RAM RAM 2 2AHAH和和2 2BHBH单元中的单字节单元中的单字节BCDBCD码转换成压缩式码转换成压缩式BCDBCD码存入码存入2020H H单元。单元。MOV A,#0 MOV R0,#2AH MOV R1,#2BHXCHD A,R0SWAP AXCHD A,R1XCH A,20H2AH2BH20H 与数据传送指令不同,多数算术运算指令会影响与数据传送指令不同,多数算术运算指令会影响标志位的状态,即标志位的状态,即CPUCPU执行算术运算指令后
29、会根据数据执行算术运算指令后会根据数据操作情况操作情况自动设置自动设置标志位的状态。标志位的状态。MCS-51 MCS-51 的程序状态字寄存器的程序状态字寄存器PSWPSW为状态标志寄存器为状态标志寄存器。其格式如下:。其格式如下:CyACF0RS1RS0OVP1 1)CyCy:进位标志位:进位标志位保存运算后最高位的进位保存运算后最高位的进位/ /借位状态,有进位借位状态,有进位/ /借位时,借位时,( (Cy)=1Cy)=1,否则否则( (Cy)=0Cy)=0。2 2)ACAC:辅助进位标志位:辅助进位标志位保存低半字节的进位保存低半字节的进位/ /借位状态,借位状态,D D3 3产生进
30、位产生进位/ /借位时借位时,(AC)=1(AC)=1,否则否则( (AC)=0AC)=0。用于十进制调整。用于十进制调整。3 3)OVOV:溢出标志位:溢出标志位加加/ /减法时减法时, ,OV=CP(OV=CP(最高位的进最高位的进/ /借位状态借位状态) )CSCS( (次高位的进次高位的进/ /借位状态借位状态););补码运算产生溢出补码运算产生溢出, ,则则( (OV)=1OV)=1,否则否则( (OV)=0OV)=0。4 4)P P:奇偶标志位:奇偶标志位反映累加器反映累加器A A中中“1”“1”的个数的奇偶性。当的个数的奇偶性。当1 1的个数为奇数,的个数为奇数,( (P)=1P
31、)=1,否则否则( (P)=0P)=0。1 1)F0F0:用户自定义。:用户自定义。2 2)RS1RS1、RS0RS0: 工作寄存器区选择位。工作寄存器区选择位。复位时,复位时,( (PSW)=00HPSW)=00H。例:例:复位后,设置使用工作寄存器复位后,设置使用工作寄存器3 3区,其余标志位不变。区,其余标志位不变。解:解: MOV PSWMOV PSW, # # 1818H HRS1 RS0工作寄存区0 00区0 11区1 02区1 13区CyACF0RS1RS0OVP1.1.不带进位加法:不带进位加法: ADD AADD A,RnRn ADD A ADD A,directdirect
32、 ADD A ADD A,RiRi ADD A ADD A,#data#data 影响标志位影响标志位 CyCy、OVOV、ACAC、P P。 例例: : ( (A)=3BHA)=3BH,(PSW)=0(PSW)=0,执行指令执行指令 ADD AADD A,#3BH#3BH 后,后,问:问:( (A)= ,(Cy)= ,(OV)= ,(AC)= ,(P)= ,A)= ,(Cy)= ,(OV)= ,(AC)= ,(P)= ,(PSW)= (PSW)= ? 0011 10110011 1011 + + 0011 10110011 1011 0111 01100111 011001000001= 4
33、1HCyACF0RS1RS0OVP76H 0 0 1 1 1001 10101001 1010 1110 00111110 0011 + + 0 0 1 1 0111 11010111 1101 2 2. .带带进位进位加法加法: :( (指令执行前指令执行前CyCy的内容的内容) ) ADDC AADDC A,RnRn ADDC A ADDC A,directdirect ADDC A ADDC A,RiRi ADDC A ADDC A,#data#data 影响标志位影响标志位 CyCy、OVOV、ACAC、P P。7 7DH 1 1 0 0DH 1 1 0 0 例:例:( (A)=9AH
34、A)=9AH,(R2)=E3H(R2)=E3H,(PSW)=0(PSW)=0,执行指令执行指令ADDC AADDC A,R2R2 后后, , 问问: (: (A)= ,(Cy)= ,(OV)= ,(AC)= ,(P)= ,A)= ,(Cy)= ,(OV)= ,(AC)= ,(P)= , (PSW)= (PSW)= ?10000100 = 84HCyACF0RS1RS0OVP41例:例:设双字节数设双字节数X X存放在片内存放在片内RAMRAM的的40H40H、4141H H单元,单元,Y Y存放存放在在4242H H、43H43H单元,试编程求单元,试编程求 Z=X+YZ=X+Y,并将结果存入
35、片内并将结果存入片内RAMRAM的的4444H H、45H45H、46H46H单元。单元。片内片内 RAM 片内片内 RAM 地址地址 内容内容 46H ZH 45H ZM 44H ZL 43H YH 42H YL 41H XH 40H XL ADDSADDS:MOV AMOV A,40H40H A A,42H42H MOV 44H MOV 44H,A A MOV A MOV A,41H41H A A,43H43H MOV 45H MOV 45H,A A MOV A MOV A,#0#0 A A,#0#0 MOV 46H MOV 46H,A A RET RET;取被加数低字节取被加数低字节;加
36、上加数低字节;加上加数低字节;保存和的低字节;保存和的低字节;取被加数高字节;取被加数高字节;加上加数高字节;加上加数高字节;保存和的高字节;保存和的高字节;求高字节进位;求高字节进位;子程序结束;子程序结束 SUBB SUBB A A,Rn Rn ;A(A)-(Rn)-(Cy)A(A)-(Rn)-(Cy) SUBB A SUBB A,direct direct SUBB A SUBB A,RiRi SUBB A SUBB A,#data#data 影响标志位影响标志位 CyCy、OVOV、ACAC、P P。 0 0 0 0 0 0 0 0 0 0例:例:( (A)=5AH,(R2)=5AH,
37、(Cy)=0A)=5AH,(R2)=5AH,(Cy)=0,执行下列指令执行下列指令SUBB ASUBB A,R2 R2 后,后,问问: (: (A)= ,(Cy)= ,(OV)= ,(P)= ,(AC)= A)= ,(Cy)= ,(OV)= ,(P)= ,(AC)= 。44例例3-36 设设( (A) )=0C9H,( (R0) )=60H,( (60H) )=54H,( (Cy)=1,执行指令执行指令 SUBB A,R0运算过程为运算过程为 1100 10011100 1001 ( (A)A) 0101 0101 0100 0100 (R0)R0) - 1 - 1 ( (Cy)Cy) 011
38、1 0100 0111 0100结果为结果为 ( (A) )=74H标志位为标志位为(Cy)=0,(0V)=1,(AC)=0,(P)=0 01 0 01 0 借位情况借位情况十进制加法指令:十进制加法指令: ADD AADD A,源操作数源操作数 DA ADA A带进位十进制加法指令:带进位十进制加法指令: ADDC AADDC A,源操作数源操作数 DA ADA A4.4.BCDBCD码十进制调整指令:码十进制调整指令: DA ADA A ;对累加器中加法结果进行调整对累加器中加法结果进行调整 通常紧跟在一条普通加法指令之后,用以实现通常紧跟在一条普通加法指令之后,用以实现BCDBCD加法。
39、加法。46例例3-39 3-39 编制编制8559的的BCD加法程序,并对其工作过程加法程序,并对其工作过程进行分析。进行分析。解:解:相应相应BCD加法程序为:加法程序为: MOV A,#85H ;A85 ADD A,#59H ;A85+59= 0DEH DA A ;A44,(Cy)=147二进制加法及十进制调整过程二进制加法及十进制调整过程: 85 1000 0101 (A) +) 59 0101 1001 data 144 (0)1101 1110 110 ;低低4位位9(或有进位或有进位), ,加加6调整调整 1110 0100 110 ;高高4位位9(或有进位或有进位), ,加加60
40、H调整调整 (1) 0100 0100运算结果运算结果:(:(A) )=44H,(Cy)=1(Cy)=1 ,即十进制的即十进制的144。 5.5.增量指令:增量指令: INC AINC A INC Rn INC Rn INC direct INC direct INC Ri INC Ri INC DPTR INC DPTR 除对除对A A操作可能影响标志位操作可能影响标志位P P以外,其余指令均以外,其余指令均不影响标志位状态不影响标志位状态。 6. 6.减量指令:减量指令: DEC A DEC A DEC Rn DEC Rn DEC direct DEC direct DEC Ri DEC
41、Ri 除对除对A A操作可能影响标志位操作可能影响标志位P P以外,其余指令均不影以外,其余指令均不影响标志位状态响标志位状态。注意:注意:没有指令没有指令 DEC DPTR DEC DPTR 可用指令可用指令 DEC DPL DEC DPL 代替。代替。例例: :( (A)=158(9EH),(B)=13(0DH),A)=158(9EH),(B)=13(0DH),执行指令执行指令 DIV ABDIV AB 后后, ,问问:(:(A)= ,(B)= ,(Cy)= ,(OV)= ,(P)=A)= ,(B)= ,(Cy)= ,(OV)= ,(P)=解:解: 15158 8 13 = 1 13 =
42、12 2( (0 0CH)CH)-2 2( (0 02H)2H)MUL ABMUL AB;BA(A)BA(A)(B)(B),Cy0(Cy0(总是总是) ),;若积超过若积超过255255(B0),(B0),则则OV1,OV1,否则否则,OV0,OV0;例例: :( (A)=96(60H),(B)=192(0C0H),A)=96(60H),(B)=192(0C0H),执行指令执行指令 MUL AB MUL AB 后,后,问问:(:(A)= ,(B)= ,(Cy)= ,(OV)= ,(P)=A)= ,(B)= ,(Cy)= ,(OV)= ,(P)=解:解: 96 96 192 = 18432192
43、 = 18432 (4800(4800H)H)0000H 48H 0 1 0H 48H 0 1 00 0CH 02H 0 0 0CH 02H 0 0 0 DIV ABDIV AB ;A AB,AB,A商商, ,BB余数余数, ,Cy0(Cy0(总是总是) ), ,;若除数为若除数为0,0,则则OV1OV1,否则清零;否则清零;一、单操作数一、单操作数( (累加器累加器A)A)指令指令 1. A A清清0 0指令:指令: CLR ACLR A ;A0A0 2. A A取反指令:取反指令: CPL ACPL A ;AA 3. 循环移位指令:循环移位指令: 1)8 8位循环指令:位循环指令:RL A
44、RL A ;(A)(A)循环左移一位循环左移一位RR ARR A ;(A)(A)循环右移一位循环右移一位 2)9 9位循环指令:位循环指令:RLC ARLC A;带带CyCy循环左移一位循环左移一位RRC ARRC A;带带CyCy循环右移一位循环右移一位 A7 A0 A7 A0A7 A0CyA7 A0 Cy)(A例:例:设设( (A)=11000101BA)=11000101B,(Cy)=0(Cy)=0,分别分别执行下列执行下列单条单条指令:指令: CPL ACPL A ;( (A)= ,(Cy)= A)= ,(Cy)= RL ARL A ;( (A)= ,(Cy)= A)= ,(Cy)=
45、RLC ARLC A ;( (A)= ,(Cy)= A)= ,(Cy)= 0011101000111010B 0B 01000101110001011B 0B 01000101010001010B 1B 1CLR CMOV A,R5RLC AMOV R5,AMOV A,R6RLC AMOV R6,A0CyR6R5CyCy0Cy0,假定假定( (R6)=55H ,(R5)=0AAHR6)=55H ,(R5)=0AAH( (R6)=01010101,(R5)=01010100,(Cy)=1R6)=01010101,(R5)=01010100,(Cy)=1( (R6)=10101011,(R5)=0
46、1010100,(Cy)=0R6)=10101011,(R5)=01010100,(Cy)=0二、双操作数逻辑运算指令二、双操作数逻辑运算指令( (按位进行逻辑运算按位进行逻辑运算) ): ANLANL、ORLORL、XRLXRL (各六条,以各六条,以A或或direct为目的地址为目的地址) 例:例: (A)=01B, 表示随机状态表示随机状态(1或或0),下述指令顺序执行后判断下述指令顺序执行后判断A中的内容:中的内容: ANL A,#0E7H ;将累加器将累加器A中的中的D4、D3 清清0 ORL A,#03H;将累加器将累加器A中的中的D1、D0 置置1XRL A,#0C0H ;将累加
47、器将累加器A中的中的D7、D6 取反取反解:解:执行上述指令后,执行上述指令后,(A)=100011B。三、位清三、位清0 0、位置、位置1 1、位取反:、位取反: CLR CLR 、SETB SETB 、 CPL CPL CLR C CLR C ;Cy0Cy0 CLR 40H CLR 40H ;位地址位地址4040H H00设设( (Cy)=0Cy)=0,( (位地址位地址4040H)=1H)=1,则执行指令则执行指令 ANL CANL C,/40H/40H 后,后,Cy= Cy= ? , ( (位地址位地址4040H)= H)= ? 0 1)40(H 两类概念:两类概念: 1.1.无条件转
48、移、条件转移无条件转移、条件转移 1) 1)无条件转移:无条件转移: 程序执行此类指令后无条件转移到指定处。程序执行此类指令后无条件转移到指定处。 2) 2)条件转移:条件转移: 指令中给出转移条件。执行指令时指令中给出转移条件。执行指令时, ,先测试条件先测试条件, ,若满若满足条件,则程序发生转移,否则程序仍顺序执行。足条件,则程序发生转移,否则程序仍顺序执行。1000H SJMP 02 1004H 1 1)绝对转移:绝对转移:指令给出转移目的的绝对地址指令给出转移目的的绝对地址nnnn,执行执行指令后,指令后,PCnnPCnn。 2)相对转移:相对转移:指令给出转移的相对偏移量指令给出转
49、移的相对偏移量e e,执行执行指令后,指令后,PC(PC)PC(PC)+ +e e。 例:例: 地址地址 源程序源程序10001000H H LJMP 2000HLJMP 2000H1003H1003H 2000H2000H ;转移目的转移目的 例:例:地址地址 源程序源程序 1000 1000H SJMP 02 H SJMP 02 1004H 1004H ;转移目的转移目的 2.2. AJMP addr11AJMP addr11 ;PC(PC)+2PC(PC)+2;PCPC10100 0addr11,PCaddr11,PC15151111不变不变 指令转移范围:指令转移范围:2 2KBKB,
50、目标地址必须与目标地址必须与下一条下一条指令指令的存放地址的存放地址( ( (PC)+2PC)+2,即即AJMPAJMP指令取出后的指令取出后的PCPC中的地址中的地址) )在同一个在同一个2 2KBKB区域内。区域内。相对偏移量相对偏移量e e的计算公式:的计算公式:e = e = 目的地址目的地址 - ( - (转移前指令地址转移前指令地址+ +转移指令字节数转移指令字节数) ) = = 目的地址目的地址 - - PCPC当前值当前值 3.3. SJMP eSJMP e ;PC(PC)+2PC(PC)+2,PC(PC)+ePC(PC)+e相对偏移量相对偏移量e e为为8 8位补码位补码。
51、指令指令相对转移范围相对转移范围:前前126126后后129129。例:例:计算转移指令的相对偏移量计算转移指令的相对偏移量e e,并判断是否超出并判断是否超出转移范围。转移范围。例:例:求求原地踏步指令原地踏步指令( (终止结束指令、停机指令终止结束指令、停机指令) )的的指令代码。指令代码。HEREHERE: SJMP HERE SJMP HERE 或或HEREHERE: SJMP $ SJMP $相对偏移量相对偏移量e e = 2150 = 2150H -(2130H+2)= 001EHH -(2130H+2)= 001EH,取低取低8 8位:位: e = 1EHe = 1EH 指令地址
52、指令地址 源程序源程序21302130H H SJMP NEXT SJMP NEXT 2150 2150H H NEXT NEXT:MOV AMOV A,R2R2 4. ( (多分支转移指令多分支转移指令) ) JMP A+DPTRJMP A+DPTR ;PC(A)+(DPTR)PC(A)+(DPTR) 指令转移范围指令转移范围6464KBKB。程序:程序:KEY:KEY: MOV DPTR,#KTAB MOV DPTR,#KTAB MOV A,40H MOV A,40H ADD A,40H ADD A,40H JMP A+DPTRJMP A+DPTRKTAB:KTAB: AJMP FUNC0
53、 AJMP FUNC0 AJMP FUNC1AJMP FUNC1 FUNC0: FUNC0: FUNC1: FUNC1: 应用:应用:处理功能键。处理功能键。 要求不同功能键执行不要求不同功能键执行不同程序段。设每个功能键对同程序段。设每个功能键对应一个键值应一个键值X(0X0FH)X(0X0FH)。 设设X X已存入片内已存入片内RAMRAM的的4040H H单元中。单元中。若若X=0X=0,则执行程序段则执行程序段FUNC0FUNC0若若X=1X=1,则执行程序段则执行程序段FUNC1FUNC11.1.累加器累加器A A判零转移指令判零转移指令 JZ eJZ e ;PC(PC)+2PC(P
54、C)+2, ;若若( (A)=00HA)=00H,PC(PC)+e (PC(PC)+e (转移转移) ) ;若;若( (A)00HA)00H,则则( (PC)PC)不变不变 ( (不转移不转移) ) JNZ eJNZ e ;PC(PC)+2PC(PC)+2, ;若若A00HA00H,PC(PC)+e (PC(PC)+e (转移转移) ) ;若;若A=00HA=00H,则则( (PC)PC)不变不变 ( (不转移不转移) ) 2.2.CyCy判零转移指令判零转移指令 JC eJC e ;(Cy)=1(Cy)=1则则转移转移,( (Cy)=0Cy)=0不转移不转移 JNC eJNC e ;(Cy)
55、=0(Cy)=0则则转移转移,( (Cy)=1Cy)=1不转移不转移3.3.判位转移指令判位转移指令 JB bitJB bit,e e ;(bit)=1(bit)=1转移转移, ,否则否则不转移不转移, ,( (PC)PC)先加先加3 3 JNB bitJNB bit,e e ;(bit)=0(bit)=0转移转移, ,否则否则不转移不转移4.4.判位清判位清0 0转移指令转移指令 JBC bitJBC bit,e e ;(bit)=1(bit)=1转移转移, ,且且bit0bit0,否则,否则不转移不转移5.5.比较不相等转移指令比较不相等转移指令( (4 4条条) ) CJNE A,n,eCJNE A,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 48284-2026航空航天直线式液压作动筒通用规范
- T/ZLJ 007-2023冷冻蜗牛肉
- T/JMBX 0286-2024江门优品 马冈鹅制品
- T/CNCA 121-2025露天煤矿三维地质建模技术要求
- T/CAWAORG 002-2021中国疼痛科专业团体标准
- T/CSMT-DZ 007-2025 T/HZLED 001-2025室外 Mini/Micro LED显示屏通用技术要求
- GB/T 34630.4-2026搅拌摩擦焊铝及铝合金第4部分:焊接工艺规程及评定
- 2025~2026学年广东省深圳市福田区北师大版六年级上册12月课堂素养练习数学试卷【附答案】
- 2026学年江苏省盐城市四年级语文期末高分快速提分卷(详细参考解析)详细答案和解析
- AI大模型棋牌游戏技巧与攻略
- 2026年模具研发高级技术专家招聘笔试试卷 招录11人考试题库
- 人工智能通识- 课件 第四章 AI赋能工作
- 蛇串疮(带状疱疹)护理查房
- 知识产权法(第二版)张楚课件 第二十八章学习资料
- 2025年广西北部湾国际港务集团有限公司招聘笔试参考题库含答案解析
- 10千伏环网柜(箱)标准化设计方案 (2023 版)
- 经永存左上腔静脉植入CRT-D1例
- 17025实验室管理体系
- 安全文化手册-大唐
- 保密资格评分标准具体操作方法
- 4.1 整式(第1课时 单项式) 课件 七年级数学上册 (人教版2024)
评论
0/150
提交评论