版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 3-1汇编语言格式: 操作码:决定(命令)主机作何操作。一般为英语单词的缩写。标号:操作码 操作数1,操作数2,操作数3;注释注释:对指令或程序的解释,可有可无。注释前必须用“;”隔开。操作数:03个中间用“,”隔开。标号:该指令的符号地址,以字母开始 举例:举例:汇编语言:汇编语言:机器语言:机器语言:MOV AMOV A,R0R0E8HE8HMOV R6MOV R6,#32H#32H7E 32H7E 32HMOV 40HMOV 40H,#100H#100H75 40 64H75 40 64H111010000111111000110010011101010100000001100100指
2、令中用到的符号: RnR0R7;当前选定工作寄存器组的R0R7工作寄存器(n=07) RiR0,R1; 用于Ri以工作寄存器R0或R1作间接寻址寄存器(i=0,1), 以间接寻址内部RAM(0255)单元。 Direct8位直接地址;直接寻址方式时,用以表示内部RAM或特殊功能 寄存器的直接地址。 #data8位立即数;指令中出现的8位立即常数。 #data1616位立即数;指令中出现的16位立即常数。 Addr1616位地址;供LCALL或LJMP指令使用,可转向或调用64KB外部程序存储器地址空间的任何单元。 Addrll低11位地址,(与48系列兼容),高5位地址与下一条指令重合;低AC
3、ALL和AJMP指令使用,使程序转向或调用包含下一条指令的第一个字节在内的2K字节范围内程序存储器地址空间。 Bit 8位直接位地址;内部数据存贮器RAM或特殊功能寄存器内的直接寻址位。 间接寻址的前缀。 / 位取反。 (x) x中的内容。 (x)由x寻址的单元的内容;表示间接寻址的内容。 或 表示数据传送方向,左(或右)边的内容被右(或左)边的内容取代。 表示数据交换。 数据形式 二进制数:0、1表示,后带字母B,例:10101100B 十进制数:09组成,后什么都不带或带D 例:37 十六进制数:0F组成,后带字母H,例:2AH 立即数: “#”开头后跟数字,例:23,12H 行标号:对应
4、程序空间的16位地址,汇编时翻 译成相应的数据(地址) 一一. .立即寻址方式立即寻址方式指令中给出实际操作数据指令中给出实际操作数据( (立即数立即数) )。数据前加。数据前加# #举例:举例: 8 8位立即数:位立即数: MOV AMOV A,#40H#40H ;A40HA40H 16 16位立即数:位立即数: MOV DPTRMOV DPTR,#2100H #2100H ;DPTR2100HDPTR2100H二二. .直接寻址方式直接寻址方式指令操作数是存储器单元地址,数据在存储器单元中。指令操作数是存储器单元地址,数据在存储器单元中。 MOV AMOV A,40H40H;A(40H)A
5、(40H)内部内部128 RAM00H-7FH128 RAM00H-7FH与特殊功能寄存器与特殊功能寄存器80H-FFH80H-FFH可可用直接寻址用直接寻址, ,其符号名称也看作是直接地址其符号名称也看作是直接地址41H 78H40H 56H56H 例:例:设存储器两个单元的内容如图所示,设存储器两个单元的内容如图所示,执行指令执行指令 MOV AMOV A,40H40H后后 A = A = ?思考题:思考题:直接寻址方式指令和立即寻址方式指令的形直接寻址方式指令和立即寻址方式指令的形式有什么不同?式有什么不同?设指令执行前设指令执行前 A=20HA=20H,R0=40HR0=40H,执行指
6、令后,执行指令后,A= A= ?,?,R0= R0= ?40H40H常见的常见的R0-R7,DPTR,A,BR0-R7,DPTR,A,B可用可用三三. .寄存器寻址方式寄存器寻址方式指令操作数为寄存器名,数据在寄存器中。指令操作数为寄存器名,数据在寄存器中。例例: :MOV AMOV A,R0R0;AR0AR0例例: : MOV AMOV A,R0R0;A(R0)A(R0) 设指令执行前设指令执行前 A=20HA=20H,R0=40HR0=40H,地址为地址为4040H H存储器单元内容如图所示存储器单元内容如图所示。执行指令后,执行指令后,A= A= ? ,R0 = ,R0 = ? , (4
7、0H)= , (40H)= ? 41H 67H 40H 34H34H40H34HR0四四. .寄存器间接寻址方式寄存器间接寻址方式: :内部内部128128个个RAMRAM可用可用R0,R1R0,R1寻址寻址, ,外部外部RAM256RAM256以内可用以内可用R0,R1,16R0,R1,16位的位的DPTRDPTR可寻址整个外部可寻址整个外部RAMRAM数据在存储器中,指令给出的寄存器中为数据的基地数据在存储器中,指令给出的寄存器中为数据的基地址和偏移量。址和偏移量。A A做变址寄存器做变址寄存器,DPTR,PC,DPTR,PC做基址寄存器做基址寄存器, ,例:例: MOVC AMOVC A
8、,A+DPTRA+DPTR;A(A+DPTR)A(A+DPTR) 设指令执行前设指令执行前 A=09HA=09H,DPTR=2000HDPTR=2000H,存储器单元内容存储器单元内容如图所示。执行指令后,如图所示。执行指令后,A= A= ? DPTR= DPTR= ? 12H2000H2008H 89H2009H 12H五五. .变址寻址方式变址寻址方式数据地址数据地址 = = 基地址基地址 + + 偏移量。偏移量。用于访问程序存储器的数据表格用于访问程序存储器的数据表格六六.位寻址方式位寻址方式(直接寻址的直接寻址的20H-2FH,特殊寄存器中能被特殊寄存器中能被8整除的各位整除的各位)(
9、P37) 指令给出位地址。一位数据在存储器位寻址区。指令给出位地址。一位数据在存储器位寻址区。例:例: MOV C,40H ;Cy(位地址位地址40H) 设指令执行前设指令执行前 Cy=1,执行指令后,执行指令后,Cy= ?1.可以用单元地址加序列号表示如可以用单元地址加序列号表示如:25H.52.用位名称表示用位名称表示,特殊寄存器可位寻址的有位名称如特殊寄存器可位寻址的有位名称如:RS0表示表示PSW中的中的D3,即即D0H.33.对特殊功能寄存器可用寄存器符号加序号如对特殊功能寄存器可用寄存器符号加序号如:PSW.328H 0110001029H 11010111位寻址区0( (位地址位
10、地址40H40H为为28H28H单元的最低位单元的最低位) )指令功能分类:指令功能分类:数据传送、数据操作、布尔处理、程序控制。数据传送、数据操作、布尔处理、程序控制。3-4-13-4-1 数据传送指令数据传送指令实现寄存器、存储器之间的数据传送。实现寄存器、存储器之间的数据传送。一一. . 内部传送指令内部传送指令: 片内数据存储器数据传送。片内数据存储器数据传送。 二二. . 外部传送指令外部传送指令: 片外数据存储器数据传送。片外数据存储器数据传送。三三. . 交换指令交换指令: 片内数据存储器数据传送。片内数据存储器数据传送。 四四. . 堆栈操作指令堆栈操作指令: 片内数据存储器数
11、据传送。片内数据存储器数据传送。 五五. . 查表指令查表指令: 程序存储器数据传送。程序存储器数据传送。( (一一) )内部传送指令内部传送指令:实现片内数据存储器中数据传送。:实现片内数据存储器中数据传送。(P37)(P37)( (指令格式指令格式: MOVMOV 目的目的操作数,操作数,源源操作数操作数寻址方式寻址方式:立即寻址、直接寻址、寄存器寻址、:立即寻址、直接寻址、寄存器寻址、寄存器间址。寄存器间址。1.以累加器A为目的操作数的指令 MOV A,Rn ; (Rn) MOV A,direct ;A(direct) MOV A,Ri ; (Ri)) MOV A, # data ; #
12、data 这组指令的功能是把源操作数内容送A,源地址内容不变。源操作数有寄存器寻址、直接寻址、寄存器间址和立即寻址等寻址方式。 2.以Rn为目的操作数的指令 MOV Rn,A ; (A) MOV Rn,direct ;Rn(direct) MOV Rn,#data ; #data 这组指令的功能是把源操作数内容送入当前工作寄存器区R0R7中某一个寄存器。 注意:没有MOV Rn,Ri 如MOV R3,R0 寄存器间址方式, 也没有MOV Rn,Rn 如MOV R3,R4之间指令。 3.以直接地址为目的操作数 MOV direct , A ; MOV direct , Rn ; MOV dire
13、ct1 , direct2 ; MOV direct , Ri ; MOV direct , #data ; Direct是表示内部RAM表示的128个地址等三种 注意:特殊功能寄存器的代号即为直接地址如DPH,DPL,P0,P1等等。 4.以寄存器间址的单元为目的操作数 MOV Ri A ; A MOV Ri, direct; (Ri)(direct) MOV Ri, #data; #data 源操作数有寄存器寻址,直接寻址,立即寻址方式。 注意:( 1)Ri只能是R0和R1,即i=0或1 寻址范围为片内RAM (2)没有MOV Ri,Rn 5. 16位数据传递指令 MOV DPTR,#da
14、ta16;DPTR#data16 注意:MCS-51系统只有这一条16位数据传递指令。 把外部ROM,RAM的地址送DPTR6.栈操作指令 PUSH(入栈)指令PUSH direct;SP(SP)+1,(SP)(direct) POP(出栈)指令POP direct;direct(SP),SP(SP)-1 注意:direct可为有直接地址的特殊功能寄存器,但无PUSH Rn,POP Rn类指令,因为Rn的直接地址不确定。例:例:设设 A=02A=02,B=56HB=56H,执行下列指令后,执行下列指令后,SP= SP= ?,?,A= A= ? ,B= ?B= ?片内RAM34H33H32H31
15、H30H 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 APUSH A PUSH B PUSH B MOV A MOV A,#0#0 MOV MOV B B,#01#01 POP POP B B POP A POP A例例3-4-13-4-1:顺序执行下列指令序列,求每一步执行结果顺序执行下列指令序列,求每一步执行结果。MOV AMOV A,#30H#30HMOV 4FHMOV 4FH,A
16、AMOV R0MOV R0,#20H#20HMOV R0MOV R0,4FH4FHMOV 21HMOV 21H,20H20H地址内容60H32H32H58H习题习题2 2:用两种寻址方式实现,将片内用两种寻址方式实现,将片内RAM RAM 6060H H单元的数单元的数据传送给累加器据传送给累加器A A。解:解: MOV A,#60HMOV A,#60HMOV R0MOV R0,#60H #60H MOV AMOV A,R0R0;A= 30HA= 30H;(4FH)= 30H(4FH)= 30H;R0= 20HR0= 20H;(20H)= 30H(20H)= 30H;(21H)= 30H(21
17、H)= 30HMOV R0MOV R0,60H 60H MOV AMOV A,R0R0解:解: MOV A,60HMOV A,60H说明:说明: 只有指令表中的指令才有对应指令代码,计算机才只有指令表中的指令才有对应指令代码,计算机才能执行。编程时,不能随意创造发明指令。能执行。编程时,不能随意创造发明指令。1. 一条指令中不能同时出现两个工作寄存器:一条指令中不能同时出现两个工作寄存器:非法非法指令:指令:MOV R1MOV R1,R2R2MOV R2MOV R2,R0R02. 间址寄存器只能使用间址寄存器只能使用 R0R0、R1R1。 非法非法指令:指令:MOV AMOV A,R2R23.
18、 SFRSFR区只能直接寻址,不能用寄存器间接寻址。区只能直接寻址,不能用寄存器间接寻址。非法非法指令:指令:MOV R0MOV R0,#80H#80HMOV AMOV A,R0R04. 指令表:指令表:B B:指令字节数,指令字节数,M M:机器周期数机器周期数 机器周期的估算见(P40) 字节数的估算:见(P40)(二)(二) 外部传送指令外部传送指令(P40) 实现片外数据存储器和实现片外数据存储器和A A累加器之间的数据传送。累加器之间的数据传送。 指令格式:指令格式:MOVXMOVX 目的目的操作数,操作数,源源操作数操作数寻址方式:片外数据存储器用寄存器间址方式。寻址方式:片外数据
19、存储器用寄存器间址方式。1. 1. DPTRDPTR作作1616位数据指针,寻址位数据指针,寻址6464KBKB片外片外RAMRAM空间空间MOVX AMOVX A,DPTRDPTR ;A(DPTR)A(DPTR)MOVX DPTRMOVX DPTR,A A ;(DPTR)A(DPTR)A2. 2. RiRi作作8 8位数据指针,寻址位数据指针,寻址256256B B片外片外RAMRAM空间空间MOVXMOVX A A,RiRi;A(Ri)A(Ri) MOVXMOVX RiRi,A A ;(Ri)A(Ri)A例例3-4-23-4-2:实现片外数据存储器数据传送实现片外数据存储器数据传送(200
20、0(2000H)(2100H)H)(2100H)。MOV DPTRMOV DPTR,#2000H#2000HMOVX AMOVX A,DPTRDPTRMOV DPTRMOV DPTR,#2100H#2100HMOVX DPTRMOVX DPTR,A A片外RAM地址内容2000HXDPTR2100H片外RAM地址内容2000HXDPTR2100HX习题习题3:将片外将片外RAM 0000HRAM 0000H单元的数据传送到片内单元的数据传送到片内RAMRAM的的 60 60H H单元单元。; DPTR= 2000HDPTR= 2000H; A= X A= X; DPTR= 2100H DPTR
21、= 2100H;(2100H)= X(2100H)= X片外数据存储器不能直接片外数据存储器不能直接寻址。下列为寻址。下列为非法非法指令:指令: MOVX AMOVX A,2000H 2000H MOVX 2100H MOVX 2100H,2000H2000H 注意: 该组指令是CPU访问外部数据存贮器或I/O的唯一指令。 用DPTR或Ri间接寻址可指向外部数据RAM相同区域,只是DPTR为16位数据指针,而Ri为8位。实现从程序存储器读取数据到实现从程序存储器读取数据到A A累加器累加器,只能使用变址只能使用变址间接寻址方式间接寻址方式。1 1DPTRDPTR为基址寄存器为基址寄存器MOVC
22、MOVC A A,A+DPTR A+DPTR ;A(A+DPTR) A(A+DPTR) DPTRDPTR可以为可以为1616位的表首地址位的表首地址, ,查表范围为查表范围为 64 64KB KB 程程序存储器任意空间,称为远程查表指令序存储器任意空间,称为远程查表指令 。2 2PCPC为基址寄存器为基址寄存器MOVCMOVC A A,A+PCA+PC;A(A+PC)A(A+PC) PCPC为下条指令的地址为下条指令的地址, ,而不是表首地址而不是表首地址, ,常数表只能常数表只能在查表指令后在查表指令后256256B B范围内。范围内。 ( (三三) ) 程序的查表指程序的查表指令令多用于查
23、常数表程序,可直接取常数表中的函数值。多用于查常数表程序,可直接取常数表中的函数值。例:查表法求例:查表法求Y=XY=X2 2。设设X(0X15)X(0X15)在片内在片内RAMRAM的的2020H H单单元中,要求将查表求元中,要求将查表求Y Y,存入片内存入片内RAMRAM2121H H单元。单元。1 1)ORG 1000HORG 1000HSQU:SQU: MOV DPTRMOV DPTR,#TAB#TAB ;确定表首地址(基地址);确定表首地址(基地址)MOV AMOV A,20H20H;取取X X(偏移量偏移量) )MOVC AMOVC A,A+DPTRA+DPTR;查表求查表求Y=
24、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 HSQU: MOV DPTRSQU: MOV DPTR,#3000H#3000H;确定;确定表首地址表首地址 1002H MOV A 1002H MOV A,20H20H;取取X X 1
25、004H 1004H ADD A ADD A,#3#3 ;修正偏移量修正偏移量 100 1006H6H MOVC AMOVC A,A+PCA+PC ;查表查表求求Y=XY=X2 2 1007H 1007H MOV 21H MOV 21H,A A;存结存结果果 100 1009H9H RET RET ;子程子程序结束序结束 3000H3000H TAB: TAB: DB 00 DB 00,0101,04 04 ;平方平方表表 3 3003H003H DB 09 DB 09,225 225 例:例:查表法求查表法求Y=XY=X2 2。设设X(0X15)X(0X15)在片内在片内RAMRAM的的20
26、20H H单单元中,要求将查表求元中,要求将查表求Y Y,存入片内存入片内RAMRAM2121H H单元。单元。(三)(三) 交换指令交换指令(P42)(P42) 实现片内实现片内RAMRAM区和累加器间的数据双向传送。区和累加器间的数据双向传送。1. 1. 字节交换指令字节交换指令XCH AXCH A,Rn Rn ;A RnA RnXCH AXCH A,RiRi;A (Ri)A (Ri) XCH AXCH A, direct ;A (A (direct) )习题习题4 4:将片内将片内RAMRAM6060H H单元与单元与6161H H单元的数据交换。单元的数据交换。例:例:设设A= 29H
27、A= 29H,执行指令执行指令 XCH AXCH A,2AH2AH后,后,A= A= ?(2AH)= (2AH)= ?38H29HXCH 60HXCH 60H,61H 61H 对吗?对吗?29 H2. 2. 半字节交换指令半字节交换指令XCHD AXCHD A,Ri Ri ;A A0 03 3 (Ri) (Ri)0 03 3SWAP ASWAP A ;A A4 47 7 A A0 03 3R1R0习题:习题:交换片内交换片内RAM RAM 4040H H单元和单元和 41 41H H单元的低半字节。单元的低半字节。习题:习题:找出指令错误并改正:找出指令错误并改正:1 1MOV AMOV A,
28、#1000H#1000H;A1000H A1000H 错错2 2MOVX AMOVX A,1000H1000H;A(1000H)A(1000H)片外片外RAM 错错3 3MOVC AMOVC A,1000H1000H;A(1000H)A(1000H)片外片外ROM 错错4 4MOVX 60HMOVX 60H,A A;片外片外RAM(60H)A RAM(60H)A 错错5.5. XCH R1 XCH R1,R2R2;R1R2 R1R2 错与错与A A交换交换6.6. MOVX DPTR MOVX DPTR,#2000H#2000H;DPTR2000H DPTR2000H 错错7.7. MOVX
29、60H MOVX 60H,DPTRDPTR ;片内片内RAMRAM片外片外RAM RAM 错错与数据传送指令不同,多数算术运算指令会影响与数据传送指令不同,多数算术运算指令会影响标志位的状态,即标志位的状态,即CPUCPU执行算术运算指令后,根据执行算术运算指令后,根据数据操作情况自动设置标志位的状态。数据操作情况自动设置标志位的状态。CyACF0RS1RS0OVPMCS-51 MCS-51 的程序状态字寄存器的程序状态字寄存器 PSW PSW 为标志寄存器。为标志寄存器。其格式如下:其格式如下:1 1标志位标志位( (自动设置状态自动设置状态) )1 1)CyCy:进位标志位:进位标志位保存
30、运算后最高位的进位保存运算后最高位的进位/ /借位状态,当有进位借位状态,当有进位/ /借位,借位,Cy=1Cy=1,否则否则Cy=0Cy=0。2 2)ACAC:辅助进位标志位:辅助进位标志位保存低半字节的进位保存低半字节的进位/ /借位状态,当借位状态,当D D3 3产生进位产生进位/ /借位,借位,AC=1AC=1,否则否则AC=0AC=0。用于十进制调整。用于十进制调整。3 3)OVOV:溢出标志位:溢出标志位OV=CyOV=Cy7 7CyCy6 6,补码运算产生溢出补码运算产生溢出OV=1OV=1,否则否则OV=0OV=0。4 4)P P:奇偶标志位:奇偶标志位反映累加器反映累加器A
31、A中数据的奇偶性。当中数据的奇偶性。当1 1的个数为奇数,的个数为奇数,P=1P=1,否则否则P=0P=0。2 2用户选择位用户选择位( (编程设置状态编程设置状态) )1 1)F0F0:用户自定义标志位。:用户自定义标志位。2 2)RS1RS1、RS0RS0: 工作寄存器区选择位。工作寄存器区选择位。复位时,复位时,PSW=00HPSW=00HRS1 RS0 RS1 RS0 工作寄存器工作寄存器 0 0 0 0 0 0区区 0 1 1 0 1 1区区 1 0 2 1 0 2区区 1 1 3 1 1 3区区例:例:复位后,设置使用工作寄存器复位后,设置使用工作寄存器3 3区,其余标志位不变。区
32、,其余标志位不变。解:解: MOV PSWMOV PSW,# #CyACF0RS1RS0OVP 18 18H H1.加法(不需进位位)指令(P42) Rn ; (Rn) ADD A,direct ;AA+(direct) Ri ; (Ri) #data ; #data 这组加法指令影响标志位。 加法指令的目的操作数都是A3-4-2 3-4-2 算术运算指令算术运算指令完成片内完成片内 RAM RAM 和和 A A 中数据的加减乘除运算中数据的加减乘除运算。 0011 10110011 1011 + + 0011 10110011 1011 0111 01100111 01107676H 0 0
33、 1 1H 0 0 1 1不带进位加法:不带进位加法:ADDADD A A,源源操作数操作数影响影响CyCy、OVOV、ACAC、P P 例例1 1:A=3BHA=3BH,PSW=0PSW=0,执行指令执行指令 ADD AADD A,#3BH#3BH求:求:A= A= ,Cy= Cy= ,OV= OV= ,AC= AC= ,P= P= ,PSW= PSW= ? 01000001= 41HCyACF0RS1RS0OVP2.加法(带进位位)指令 (P43) Rn ; (Rn) ADDC A,direct ;AA+Cy+(direct) Ri ; (Ri) #data ; #data两个源操作数,且
34、使多字节数的加法成为可能 1001 10101001 1010 1110 00111110 0011 + + 0 0 1 1 0111 11010111 1101带进位加法:带进位加法: ADDC AADDC A,源源操作数操作数影响影响CyCy、OVOV、ACAC、P P7 7DH 1 1 0 0DH 1 1 0 0例例2 2:A= 9AHA= 9AH,R2= E3HR2= E3H,PSW= 0PSW= 0,执行指令执行指令ADDC AADDC A,R2R2 后求:后求:A= A= ,Cy= Cy= ,OV= OV= ,AC= AC= ,P= P= ,PSW= PSW= ?10000100
35、= 84HCyACF0RS1RS0OVP3.十进制调整指令(P46) DA A 本指令是对A的BCD码加法结果进行调正,两个压缩型BCD码,按二进制数相加后,必须经本指令调整才能得到压缩型BCD码的和数。十进制加法指令:十进制加法指令:ADD AADD A,源操作数源操作数DA ADA A带进位十进制加法指令:带进位十进制加法指令:ADDC AADDC A,源操作数源操作数DA ADA A习题习题:BCD:BCD码加法编程。码加法编程。(P47)(P47)设设X X、Y Y为为4 4位压缩位压缩BCDBCD码,求码,求 Z=X+YZ=X+Y。 本指令的操作为:若(A30)9(即累加器A的低4位
36、数值大于9)或者(AC)=1(即第3位向第4位产生进位),则A30(A30)+06H(即将A的低4位内容加6调正)以产生低4位正确的BCD码值。如果加6调正后,低4位产生进位,且高4位均为1时,则内部加法将置位Cy,反之,并不清零 Cy标志位。 同时,若(A74)9(即累加器A的高4位数值大于9)或者(Cy)=1(最高进位位=1),则高4位需加6调正,以产生高4位的正确BCD码值,即A74(A74)+6。同样,在加6调正后产生最高进位,则置位Cy,反之,不清零Cy。这时Cy的置位,表示和数BCD码值100。这对多字节十进制加法有用,不影响OV标志。 由此可见,本指令是根据累加器A的原始数值和P
37、SW的状态,对累加器A进行加06H,60H或66H的操作。 例1:(A)=56H,(R5)=67H,已知A,R5中放的均为压缩BCD码数,Cy=1,则执行下列指令: ADDC A,R5; DA A;第一条指令是执行带进位的二进制数加法,相加后(Cy)=0,(AC)=0,然后执行调正指令DA A。因为高4位值为11,大于9,低4位值为14,大于9,所以内部需进行加66H操作,结果得124 BCD码。即: (A)= 01010110 BCD:56 (R5)= 01100111 BCD:67 +) Cy 1 10111110 + 01100110 100100100 1 2 4 BCD:124 BC
38、D码的减1操作可用加99来求得,条件是不计进位值例2设累加器A中原BCD码值为30H,执行下列指令 ADD A,#99H (A)=00110000 DA A, +) 10011001 11001001 调正+) 01100000 1 00101001执行相加后,A中内容为11001001B,高4位值大于9,所以需加60H调正。结果累加器中的积为29BCD码,进位位(Cy)=1,即实际和数为129,若不计进位,则和数为29,它与30-1=29相当。这说明对于十进制数加99,相当于减1,条件是不计进位位内容。 例:例:设双字节数设双字节数 X X 存在片内存在片内RAMRAM 41 41H H、4
39、0H40H单元,单元,Y Y存在存在4242H H、43H43H单元,编程求单元,编程求 Z=X+YZ=X+Y,并存入片内并存入片内RAMRAM单元单元4444H H、45H45H、46H46H。(P47)(P47)片片 内内 RAM地地 址址内内 容容46HZH45HZM44HZL43HYH42HYL41HXH40HXLADDSADDS:MOV AMOV A,40H40HADD AADD A,42H42HMOV 44HMOV 44H,A AMOV AMOV A,41H41HADDC AADDC A,43H43HMOV 45HMOV 45H,A AMOV AMOV A,#0#0ADDC AAD
40、DC A,#0#0MOV 46HMOV 46H,A ARETRET;取被加数低字节取被加数低字节;加上加数低字节;加上加数低字节;保存和的低字节;保存和的低字节;取被加数高字节;取被加数高字节;加上加数高字节;加上加数高字节;保存和的高字节;保存和的高字节;求高字节进位;求高字节进位;子程序结束;子程序结束;低字节相加;低字节相加;高字节相加;高字节相加;计算高字节进位;计算高字节进位;子程序结束;子程序结束5.减法指令 (P44) 减法指令都是带借位的,没有不带借位的减法指令。 Rn ; (Rn) SUBB A, direct ; A(A) (direct)Cy Ri ; (Ri) #dat
41、a ; #data 这组指令是从累加器中减去进位标志Cy和指定的变量,结果在累加器A中。若第七位有借位,则置位Cy,否则Cy清0。若第3位有借位,则置位辅助进位标志AC,否则AC清0 。若第7和第6位中有一位借位,而另一位不借位,则置位溢出标志0V。溢出位0V用于带符号的整数减法,它表示(OV=1)一个正数减负数结果为负数或一个负数减正数结果为正数的错误结果。 00 0 0 0 000 0 0 0 0习题:习题:编程求双字节减法编程求双字节减法。设设X X、Y Y存在片内存在片内 RAM 60HRAM 60H起始单元,计算起始单元,计算 Z=X-Y Z=X-Y 。例:例:A= 5AHA= 5A
42、H,R2= 5AHR2= 5AH,Cy= 0Cy= 0,执行下列指令执行下列指令SUBB ASUBB A,R2R2求:求: A= A= ,Cy= Cy= ,OV= OV= ,P= P= ,AC= AC= ?减量指令 A ; A (A) 影响P DEC Rn ; Rn (Rn)-1 Direct ; direct (direct) Ri ; (Ri) (Ri) 本组指令不影响标志位。 例:(R0)=25H (25H)=2FH DEC R0; (R0)=25H,(25H)=2EH增量指令 A ; A (A);影响P Rn ; Rn (Rn) INC direct ; direct (direct)
43、+1 Ri ;(Ri) (Ri) DPTR ; DPTR (DPTR) 这组加1指令的功能为把源操作数指定的单元内容加1后放回。本组指令不影响标志位。 6.总结总结: 增量、减量指令增量、减量指令(P45)(P45)INCINC 单操作数单操作数如:如: INC R2 INC R2 ;R2R2+1R2R2+1DECDEC 单操作数单操作数 如:如: DEC R2 DEC R2 ;R2R2-1R2R2-1 INC INC DPTRDPTR ;DPTRDPTR+1DPTRDPTR+1 不影响标志位状态不影响标志位状态。注意:注意:没有指令没有指令 DEC DPTR DEC DPTR 可用指令可用指
44、令 DEC DPL DEC DPL 代替代替7.7.乘除指令乘除指令(P45)(P45)MUL ABMUL AB ;BAABAAB B,Cy0Cy0,;当积高字节当积高字节B=0B=0,OV0OV0;B0B0,则则OV1OV1例:例:A= 96(60H), B= 192(C0H)A= 96(60H), B= 192(C0H),执行指令执行指令 MUL AB MUL AB 后,后, 求:求:A= A= ,B= B= ,Cy= Cy= ,OV= OV= ,P= P= ?解:解: 96 96 192 = 18432(4800192 = 18432(4800H)H)乘法乘法P P按按A A中结果中结果
45、1 1的的个数来确定个数来确定0000H 48H 0 1 0H 48H 0 1 0DIV AB DIV AB ;A AB B,AA商,商,BB余数,余数,Cy0Cy0,被除数被除数放放A A中中, ,除数放除数放B B中中;当除数当除数B=0B=0,OV1OV1;B0B0,则则OV0OV0例:例:A= 156(F6H),B= 13(0DH),执执行指令行指令 DIV AB 后后 求:求:A= ,B= ,Cy= ,OV= ,P= ?P按按A中结果中结果1的个数来确定的个数来确定解:解: 156 13 = 18(12H),余数余数= 12(0CH)。1212H 0CH 0 0 0H 0CH 0 0
46、 0一一. .单操作数指令(单操作数指令(A A累加器为操作数)累加器为操作数)1. A A清清0 0指令:指令: CLR A CLR A ;A0A02. A A取反指令:取反指令:CPL A CPL A ;A/AA/A 3. 循环移位指令:循环移位指令:1)8 8位循环指令:位循环指令:RL ARL A ;A A循环左移一位循环左移一位RR ARR A ;A A循环右移一位循环右移一位2)9 9位循环指令:位循环指令:RLC ARLC A;带带CyCy循环左移一位循环左移一位RRC ARRC A;带带CyCy循环右移一位循环右移一位例例3-4-73-4-7:设设 A= 11000101 A=
47、 11000101 ,Cy= 0Cy= 0,分别执行下列单分别执行下列单条指令:条指令:CPL ACPL A 求:求:A= A= ,Cy= Cy= RL ARL ARLC ARLC A 00111010 000111010 001110100 001110100 01 111010001101000 用用9 9位循环指令实现多字节移位位循环指令实现多字节移位例:例:编程将寄存器编程将寄存器 R6R5 R6R5 中的双字节数中的双字节数X X左移一位。左移一位。CLR CMOV A,R5RLC AMOV R5,AMOV A,R6RLC AMOV R6,A0CyR6R5Cy;Cy=0Cy=0, 设
48、设 R6= 55H R6= 55H ,R5= AAHR5= AAH;R6=01010101R6=01010101,R5=10101010R5=10101010,Cy=0Cy=0;R6=01010101R6=01010101,R5=01010100R5=01010100,Cy=1Cy=1;R6=10101011R6=10101011,R5=01010100R5=01010100,Cy=0Cy=0思考题:思考题:如何将寄存器如何将寄存器R6R5R6R5中的双字节数中的双字节数X X右移一位。右移一位。双操作数逻辑操作 逻辑与 Rn ; (Rn) ANL A, direct; A(A)(direct
49、) Ri ; (Ri) #data ; #data ANL direct,A ; (direct)(direct) (A) #data; #data 以A为目的操作数的指令影响P,其余均不影响PSW 逻辑或 Rn ; (Rn) ORL A, direct; A(A) (direct) Ri ; (Ri) #data ; #data ORL direct,A ; (direct)(direct) (A) #data; #data 以A为目的操作数的指令影响P,其余均不影响PSW 逻辑异或 以A为目的操作数的指令影响P,其余均不影响PSW Rn ; (Rn) XRL A,direct; A(A)
50、(direct) Ri ; (Ri) #data ; #data XRL direct,A; (direct)(direct) (A) #data; #data 例:XRL A,P1; P1为引脚,相当为直接寻址 4. 解解 :执行上述指令后,:执行上述指令后,A=100011B。习题习题1 1:如何将累加器如何将累加器A A中的数据高中的数据高4 4位清位清0 0,低位不变?,低位不变?习题习题2 2:如何将寄存器如何将寄存器R2R2中的数据奇数位取反,偶数位中的数据奇数位取反,偶数位不变?不变?例例3-5-8 3-5-8 A=01A=01B B,表示随机状态,表示随机状态,为为1 1或或0
51、 0,执行下述一组指令执行后,执行下述一组指令执行后A A的值如何的值如何? ?1.XRL A1.XRL A,#0C0H#0C0H ;将累加器将累加器A A的内容的内容D7D7、D6D6取反取反2.ORL A2.ORL A,#03H#03H;将累加器将累加器A A的内容的内容D1D1、D0D0置置1 13.ANL A3.ANL A,#0E7H#0E7H ;将累加器将累加器A A的内容的内容D4D4、D3D3清清0 0 转移指令通过改写转移指令通过改写PCPC的当前值,从而改变的当前值,从而改变CPUCPU执执行程序的顺序,使程序发生跳转。行程序的顺序,使程序发生跳转。指令中给出转移条件,执行指
52、令时,先测试指令中给出转移条件,执行指令时,先测试条件,若满足条件,则程序发生转移,否则,条件,若满足条件,则程序发生转移,否则,仍顺序执行程序。仍顺序执行程序。按转移条件分类:按转移条件分类:1)1)无条件转移无条件转移:执行无条件转移指令,程序无条件转移到指定处。执行无条件转移指令,程序无条件转移到指定处。2)2)条件转移条件转移:按转移方式分类:按转移方式分类:1000H SJMP021004H1 1)绝对转移绝对转移:指令给出转移目的的绝对地址:指令给出转移目的的绝对地址 nnnn,执行指令后,执行指令后,PCnnPCnn。2)相对转移相对转移:指令给出转移目的与转移指令的相对偏:指令
53、给出转移目的与转移指令的相对偏移量移量e e,执行指令后,执行指令后,PCPCPCPC + + e e 。 例:例: 地址地址源程序源程序10001000H H LJMP 2000HLJMP 2000H1003H1003H 2000H2000H ;转移目的指令转移目的指令例:例: 地址地址 源程序源程序10001000H SJMP 02 H SJMP 02 1004H1004H ;转移目的指令转移目的指令一一. .无条件转移指令无条件转移指令 1. 1.长转移指令:长转移指令:LJMPLJMP nn nn ;PC nn PC nn 指令转移范围:指令转移范围: nnnn 为为1616位地址位地
54、址, ,所以可转移的所以可转移的范围为范围为64KB64KB 2.2.绝对转移指令:绝对转移指令:AJMPAJMP pnpn;PCPC+2PCPC+2指向下一指令指向下一指令;PCPC10100 0pnpn10100 0;PCPC15151111不变不变指令转移范围:指令转移范围: pnpn 为为1111位地址位地址, ,故可转移的范围为故可转移的范围为2KB2KB转移时要求转移前后保持转移时要求转移前后保持 PCPC15151111不变。见例题不变。见例题3-19(P52)3-19(P52)相对偏移量相对偏移量 e e 的计算式的计算式:e = e = 目的指令地址目的指令地址 -( -(转
55、移指令地址转移指令地址+ +指令字节数指令字节数2) 2) = = 目的地址目的地址 - - PCPC当前值当前值 3.3.短转移指令:短转移指令:(P52) (P52) SJMPSJMP e e ;PCPC+2PCPC+2,PCPC+ePCPC+e相对偏移量相对偏移量 e e为为8 8位补码。位补码。 指令转移范围:指令转移范围:-128-128+127+127字节字节 编程时,用标号代替转移目的地址,转移指令的操作编程时,用标号代替转移目的地址,转移指令的操作数交给汇编程序计算。数交给汇编程序计算。LJMP NEXT LJMP NEXT AJMP NEXTAJMP NEXT SJMP NE
56、XTSJMP NEXT NEXT NEXT: 例例1 1:计算转移指令的相对偏移量计算转移指令的相对偏移量 e e ,并判断是否超并判断是否超出转移范围。出转移范围。例例2 2:求原地踏步指令的指令代码求原地踏步指令的指令代码HEREHERE: SJMP HERE SJMP HERE 求出指令代码为:求出指令代码为:80 80 FE HFE H相对偏移量相对偏移量 = 2150 = 2150H -(2130H+2)= 001EHH -(2130H+2)= 001EH,只取低只取低8 8位:位:e = 1EHe = 1EH 指令机器码:指令机器码:80 180 1E HE H指令地址指令地址源程
57、序源程序21302130H H SJMP NEXT SJMP NEXT 2150 2150H HNEXTNEXT:MOV AMOV A,R2R2 习题:计算程序中转移指令的相对习题:计算程序中转移指令的相对偏移量偏移量 e ,并判断是否超出转移范并判断是否超出转移范围。围。-128-+127才正确才正确 地址地址 源程序源程序2130H LOOP: 21B0H SJMP LOOP 4间接转移指令间接转移指令( (多分支转移指令多分支转移指令) )(P54)(P54) JMP A+DPTR. JMP A+DPTR. ;PCA+DPTRPCA+DPTR指令转移范围指令转移范围6464KBKB。KE
58、Y:KEY: MOV DPTR,#KTAB MOV DPTR,#KTAB MOV A,40H MOV A,40H ADD A,A ADD A,A JMP A+DPTRJMP A+DPTRKTAB:KTAB: AJMP FUNC0 AJMP FUNC0 AJMP FUNC1AJMP FUNC1 FUNC0: FUNC0: FUNC1: FUNC1: 应用:应用:处理功能键。处理功能键。要求不同功能键执行不同程要求不同功能键执行不同程序段。设每个功能键对应一序段。设每个功能键对应一个键值个键值 X(0XFH)X(0XFH)。 设设X X已存入片内已存入片内RAMRAM的的4040H H单元中。单元
59、中。若若X=0X=0,则执行程序段则执行程序段FUNC0FUNC0若若X=1X=1,则执行程序段则执行程序段FUNC1FUNC1。 二条件转移指令二条件转移指令1. 1. 判零转移指令判零转移指令JZ e JZ e ;PCPC+2PCPC+2,;若若A=00HA=00H,PCPC+e(PCPC+e(转移转移) ),;若;若A00HA00H,PCPC不变不变( (不转移不转移) ) 条件转移指令形成程序的分支,赋予计算机判断决策能力条件转移指令形成程序的分支,赋予计算机判断决策能力转移条件:转移条件:1)1)标志位的状态标志位的状态 2) 2)位地址中的状态位地址中的状态(3)(3)转移范转移范
60、围都为围都为-128-+127-128-+127 JNZ eJNZ e ;PCPC+2PCPC+2,若若A00HA00H,;PCPC+ e(PCPC+ e(转移转移) ) ;若;若A=00HA=00H,PCPC不变不变( (不转移不转移) ) 2.2.判判CyCy转移指令转移指令 转移时转移时:PCPC+2:PCPC+2 + +e (P62)e (P62)JC e JC e ;Cy=1Cy=1则转移,则转移,Cy=0Cy=0不转移不转移JNC eJNC e;Cy=0Cy=0则转移,则转移,Cy=1Cy=1不转移不转移3.3.判位转移指令判位转移指令转移时转移时:PCPC+3:PCPC+3 +
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吉林省白城市洮南市第十中学2025届物理高三上期末经典模拟试题含解析
- 山东省示范初中2025届高三物理第一学期期中调研试题含解析
- 山西省忻州市2025届物理高一上期中学业质量监测试题含解析
- 2025届北师大万宁附中物理高一第一学期期中学业质量监测试题含解析
- 江苏省徐州一中2025届物理高二上期末综合测试模拟试题含解析
- 2025届江苏省两校物理高二第一学期期中联考试题含解析
- 2025届四川巫溪县白马中学物理高三上期末质量检测试题含解析
- 深圳市育才中学2025届物理高二上期末综合测试模拟试题含解析
- 广东省广州市第二外国语学校2025届高二物理第一学期期末达标检测模拟试题含解析
- 2025届吉林省吉林市高三物理第一学期期末考试模拟试题含解析
- 2023年网络与信息安全管理员(网络安全管理员)三级理论试题及答案
- 2024-2030年中国板翅式换热器行业竞争战略及发展潜力分析报告
- 植物盆栽课件教学课件
- 《复活》精制课件
- 2023年四川绵阳科技城新区下属国有企业科服公司招聘笔试真题
- 2024年中小学天文知识竞赛初赛试卷
- 2024年10月时政100题(附答案)
- 2024年危险化学品经营单位安全管理人员证考试题库
- JJF(苏) 275-2024 测斜仪校验台校准规范
- 杨柳煤矿“三量”动态变化情况分析报告(3)
- 因式分解经典题型(含详细答案)
评论
0/150
提交评论