首页 单片机与嵌入式系统原理第三章

单片机与嵌入式系统原理第三章

举报
开通vip

单片机与嵌入式系统原理第三章*第三章MCS-51指令系统 3-1指令格式 3-2寻址方式 3-3数据传送指令 3-4算术运算指令 3-5逻辑运算指令 3-6位操作指令 3-7控制转移指令*第三章MCS-51指令系统3-1指令格式一、汇编语言指令格式 [标号:]操作码[操作数1],[操作数2],[操作数3][;注释]例:LOOP:MOVA,#40H;40H->A标号:指令地址的标志符号。以字母开始,后跟1~8个字母或数字或“_”,并以冒号“:”结尾。操作码:指明指令功能。2~5个字母。*第三...

单片机与嵌入式系统原理第三章
*第三章MCS-51指令系统 3-1指令格式 3-2寻址方式 3-3数据传送指令 3-4算术运算指令 3-5逻辑运算指令 3-6位操作指令 3-7控制转移指令*第三章MCS-51指令系统3-1指令格式一、汇编语言指令格式 [标号:]操作码[操作数1],[操作数2],[操作数3][;注释]例:LOOP:MOVA,#40H;40H->A标号:指令地址的标志符号。以字母开始,后跟1~8个字母或数字或“_”,并以冒号“:”结尾。操作码:指明指令功能。2~5个字母。*第三章MCS-51指令系统3-1指令格式一、汇编语言指令格式 [标号:]操作码[操作数1],[操作数2][;注释]例:LOOP:MOVA,#40H;40H->A操作数:指令操作的对象,可以是数据、地址、寄存器名及约定符号。注释行:说明指令在程序中的作用。操作码和操作数是指令主体。*第三章MCS-51指令系统3-1指令格式一、汇编语言指令格式 注意以下一些常用符号:#data立即数direct直接地址@Ri以Ri里面的内容为物理地址的存储单元(i=0、1)Rn工作寄存器(n=0~7))*第三章MCS-51指令系统1.定位伪指令格式:ORGm例3-3ORG0000H START:SJMP MAIN… ORG 0030HMAIN:MOV SP,#30H以START开始的程序汇编为机器码后从0000H存贮单元开始连续存放。3-1指令格式二、伪指令汇编时不产生机器码2.汇编结束伪指令格式:END*第三章MCS-51指令系统3.定义字节伪指令格式:DBX1,X2,…Xn例3-4ORG 7F00H DB 01110010B,16H,45,‘8’,‘A’ 汇编后存贮单元内容为: (7F00H)=72H (7F01H)=16H (7F02H)=2DH(7F03H)=38H (7F04H)=40H4.定义字伪指令格式:DWY1,Y2,…,Yn高高八位放入低地址单元,低八位放入高地址单元!!! 3-1指令格式二、伪指令汇编时不产生机器码*第三章MCS-51指令系统5.定义空间伪指令:DS 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 达式例3-6ORG 0F00H DS 10H DB 20H,40H汇编后,从0F00H开始,保留16个字节的内存单元,然后从0F10H开始,按照下一条DB伪指令给内存单元赋值,得(0F10H)=20H,(0F11H)=40H。 3-1指令格式二、伪指令汇编时不产生机器码DB、DW、DS伪指令都只对ROM起作用!!!*第三章MCS-51指令系统例3-7 ORG 8500H AA EQU R1 A10 EQU 10H DELAYEQU 87E6H MOV R0,A10 ;R0←(10H) MOV A,AA ;A←(R1)LCALLDELAY;调用起始地址为87E6H的子程序END3-1指令格式二、伪指令汇编时不产生机器码6.等值伪指令:EQU 数据或汇编符EQU赋值后,AA为寄存器R1,A10为8位直接地址10H,DELAY为16位地址87E6H。字符名称必须先赋值后使用,通常在源程序的开头赋值!!!*第三章MCS-51指令系统7.数据地址赋值伪指令格式:DATA表达式 3-1指令格式二、伪指令汇编时不产生机器码8.位地址赋值伪指令格式:BIT 位地址*第三章MCS-51指令系统一、立即寻址方式指令中给出实际操作数据(立即数),以指令字节的形式存放在ROM中。一般用于为寄存器或存储器赋常数初值。例:8位立即数:MOVA,#40H ;A¬40H16位立即数:MOVDPTR,#2100H;DPTR¬2100H DPH¬21H DPL¬00H 3-2指令寻址方式(指令如何给出参与运算的操作数)寻找操作数的方法叫寻址方式。*第三章MCS-51指令系统二、直接寻址方式指令操作数是存储器单元地址,数据在存储器单元中。 MOVA,40H ;A¬(40H)例:设存储器两个单元的内容如图所示,执行指令MOVA,40H后(A)=?直接寻址方式对数据操作时,地址是固定值,而地址所指定的单元内容为变量形式。SFR只能采用直接寻址方式访问,可以用物理地址,也可以用寄存器标号(推荐)。例:累加器AE0HACC程序状态字D0HPSW56H *第三章MCS-51指令系统三、寄存器寻址方式指令操作数为寄存器名(Rn),数据在寄存器中。例: MOVA,R0 ;A¬(R0)设指令执行前(A)=20H,(R0)=40H, 执行指令后,(A)=?,(R0)=?40H40H四、寄存器间接寻址方式指令的操作数为寄存器名,寄存器中为数据地址。存放地址的寄存器称为间址寄存器或数据指针。例:MOVA,@R0 ;A¬((R0))设指令执行前(A)=20H,(R0)=40H,地址为40H存储器单元内容如图所示。执行指令后,(A)=?,(R0)=?,(40H)=?34H40H34H*第三章MCS-51指令系统五、变址间接寻址方式数据在存储器中,指令给出的寄存器中为数据的基地址和偏移量。数据地址=基地址+偏移量。例: MOVCA,@A+DPTR ;A¬((A)+(DPTR))设指令执行前(A)=09H,(DPTR)=2000H,存储器单元内容如图所示。执行指令后,(A)=?(DPTR)=?12H2000H*第三章MCS-51指令系统注意:(1)寄存器间址可拓宽单片机寻址范围,如:@Ri可用于对片内RAM寻址(00H-7FH)(MOV指令),也可用于对片外RAM寻址(00H-0FFH)(MOVX指令);@DPTR可寻址片外ROM/RAM的全部64KB区域(MOVC/MOVX指令)。(2)寄存器间址指令不能用于寻址SFR。*第三章MCS-51指令系统六、相对寻址方式以PC的内容作为基地址,加上偏移量,所得结果送PC寄存器作为转移地址。偏移量在-128~+127之间。例:SJMP 81H ;短跳转*第三章MCS-51指令系统指令给出位地址。数据在存储器位寻址区的某一位。例:MOVC,40H ;Cy¬(位地址40H) 设指令执行前(Cy)=1,位地址40H存储器单元如图, 执行指令后,(Cy)=?0七.位寻址方式*第三章MCS-51指令系统MCS-51指令系统中共有111条指令,按功能可分为以下四大类:·数据传送类 ·算术操作类·逻辑操作类·控制转移类3-3指令的类型、字节和周期**第三章MCS-51指令系统指令的字节和周期: 寄存器名可隐含或包含在操作码中; 操作数为直接地址或立即数则必需单独占用一个字节;注意:凡指令码中含有直接地址或立即数的指令,其字节数应在原有基础上分别加1。 执行每条指令所需的机器周期数既取决于指令所含 字节数,也取决于CPU在每个机器周期内最多能进行 两次读操作、每次一个字节的特性。*第三章MCS-51指令系统实现累加器、寄存器、存储器之间的数据传送。1、内部传送指令2、位传送指令3、外部传送指令4、交换指令 5、堆栈操作指令6、查表指令 3-4数据传送指令*第三章MCS-51指令系统1.内部传送指令:实现片内数据存储器中数据传送。指令格式:MOV目的操作数,源操作数寻址方式:立即寻址、直接寻址、寄存器寻址、寄存器间址。MOVA,Rn;A←(Rn),n=0~7MOVA,direct;A←(direct)MOVA,@Ri;A←((Ri)),i=0或1MOVA,#data;A←dataMOVRn,direct;Rn←(direct)MOV@Ri,direct ;(Ri)←(direct)MOVdirect1,direct2;direct1←(direct2)MOVDPTR,#data16;DPTR←data16(唯一的1条16位数据传送指令) *第三章MCS-51指令系统*第三章MCS-51指令系统例:顺序执行下列指令序列,求每一步执行结果。 MOVA,#30H ;MOV4FH,A ;MOVR0,#20H; MOV@R0,4FH; MOV21H,20H;(A)=30H(4FH)=30H(R0)=20H(20H)=30H(21H)=30H*第三章MCS-51指令系统说明:1.一条指令中不能同时出现两个工作寄存器: 非法指令: MOVR1,R2 MOVR2,@R02.间址寄存器只能使用R0、R1。非法指令:MOVA,@R23.SFR区只能直接寻址,不能用寄存器间接寻址。 错误指令:MOVR0,#80H MOVA,@R0该指令是把52子系列单片机片内RAM中80H单元内容送累加器A。4.目的操作数不能采用立即寻址。非法指令:MOV#80H,R2*第三章MCS-51指令系统2.位传送指令:MOVC,bit;C←(bit)MOVbit,C;bit←(C)其中一个操作数必须为位累加器C(即PSW中的Cy)。例:将位地址20H中的内容传送到位地址30H中:MOVC,20H MOV30H,C错:MOV30H,20H;此为字节传送指令0*第三章MCS-51指令系统3.外部传送指令实现片外数据存储器和A累加器之间的数据传送。指令格式:MOVX目的操作数,源操作数寻址方式:片外数据存储器用寄存器间址方式。1).DPTR作16位数据指针,寻址64KB片外RAM空间 MOVXA,@DPTR ;A←((DPTR)) MOVX@DPTR,A ;(DPTR)←(A) 2).Ri作8位数据指针,寻址256B片外RAM空间 MOVX A,@Ri ;A←((Ri)) MOVX @Ri,A ;(Ri)←(A)*第三章MCS-51指令系统例:实现片外数据存储器数据传送(2000H)→(2100H)。MOVDPTR,#2000H MOVXA,@DPTR MOVDPTR,#2100H MOVX@DPTR,A;(DPTR)=2000H;(A)=X ;(DPTR)=2100H;(2100H)=X片外数据存储器不能直接寻址。下列为非法指令:MOVXA,2000HMOVX2100H,2000H*第三章MCS-51指令系统3.查表指令实现从程序存储器读取数据到A累加器,只能使用变址间接寻址方式。多用于查常数表程序,可直接求取常数表中的函数值。1.DPTR为基址寄存器 MOVC A,@A+DPTR;A¬((A+DPTR))查表范围为64KBROM任意空间,称为远程查表指令。2.PC为基址寄存器 MOVC A,@A+PC ;A¬((A)+(PC)+1) 常数表只能在查表指令后256B范围内。(PC内容为下一条指令的起始地址。) *第三章MCS-51指令系统例:查表法求Y=X2。设X(0≤X≤15)在片内RAM的20H单元中,要求通过查表求Y,存入片内RAM21H单元。1) ORG1000H SQU: MOVDPTR,#TAB ;确定表首地址(基地址) MOVA,20H ;取X(偏移量) MOVCA,@A+DPTR ;查表求Y=X2 MOV21H,A ;保存Y RET ;子程序结束 … ;其它程序段 ORG3000H ;常数表格首地址TAB: DB00,01,04,09,…,225 ;平方表 *第三章MCS-51指令系统例:查表法求Y=X2。设X(0≤X≤15)在片内RAM的20H单元中,要求将查表求Y,存入片内RAM的21H单元。2)指令地址 源程序 ORG1000H ;程序起始地址 1000H SQU:MOVA,20H ;取X 1002H ADDA,#3 ;修正偏移量 1004H MOVCA,@A+PC;查表求Y=X2 1005H MOV21H,A ;存结果 1007H RET ;子程序结束 1008H TAB:DB00,01,04 ;平方表 100BH DB09,…,225 *第三章MCS-51指令系统(待修)4.堆栈操作指令入栈指令:PUSHn;SP¬SP+1,(SP)¬(n)出栈指令:POP n;(n)¬(SP),SP¬SP-1例:设A=02,B=56H,执行下列指令后,SP=?,A=?,B=?30H02H56HSBR:MOVSP,#30H;设栈底 PUSHACC PUSHB MOVA,#0 MOVB,#01 … POPB POPACC 只有压栈指令会改变堆栈区中的数据。 × × × ×SP→ × × × ×SP→ 02 × × ×SP→ 56H 02 × × × 56HSP→ 02 ×02HA00H02H00H02H02H × × × ×SP→ ×*第三章MCS-51指令系统5.交换指令(累加器专用交换指令) 实现片内RAM区的数据双向传送。1.字节交换指令XCHA,Rn;(A)«(Rn)XCHA,@Ri;(A)«((Ri))XCHA,direct;(A)«(direct)例:设A=29H,执行指令XCHA,2AH后,A=? (2AH)=?38H29H29H*第三章MCS-51指令系统2.半字节交换指令XCHDA,@Ri;(A)0~3«((Ri))0~3 SWAPA ;(A)4~7«(A)0~3例:将片内RAM2AH和2BH单元中的BCD码转换成压缩式BCD码存入20H单元。MOVA,#0MOVR0,#2AHMOVR1,#2BHXCHDA,@R0SWAPAXCHDA,@R1XCHA,20H*第三章MCS-51指令系统例:已知(10H)=5EH,(2BH)=1DH,(40H)=2BH,(60H)=3CH,执行下列程序段后,写出对应寄存器和地址单元的运行结果。MOV20H,60H MOVR1,20H MOVA,40H XCHA,R1 XCHA,60H XCHA,@R1 MOVR0,#10H XCHDA,@R0 (A)=、(10H)=、(2BH)=、(40H)=、*第三章MCS-51指令系统与数据传送指令不同,多数算术运算指令会影响标志位的状态,即CPU执行算术运算指令后,根据数据操作情况自动设置标志位的状态。 状态标志 MCS-51的程序状态字寄存器PSW为标志寄存器。 其格式如下:3-5 算术运算指令*第三章MCS-51指令系统1.标志位(自动设置状态)1)Cy:进位标志位 保存运算后最高位的进位/借位状态,当有进位/借位,Cy=1,否则Cy=0。2)AC:辅助进位标志位 保存低半字节的进位/借位状态,当D3产生进位/借位,AC=1,否则AC=0。用于十进制调整。3)OV:溢出标志位 OV=Cy7ÅCy6,补码运算产生溢出OV=1,否则OV=0。4)P:奇偶标志位 反映累加器A中数据的奇偶性。当1的个数为奇数,P=1,否则P=0。*第三章MCS-51指令系统2.用户选择位(编程设置状态)1)F0:用户自定义标志位。2)RS1、RS0:工作寄存器区选择位。复位时,PSW=00H例:复位后,设置使用工作寄存器3区,其余标志位不变。解:MOVPSW,#18H*第三章MCS-51指令系统3-5-1加减指令完成源操作数和累加器A中数据的加减运算。 1.加法指令 1)不带进位加法:(ADDA,源操作数) ADDA,Rn ADDA,direct ADDA,@Ri ADDA,#data 影响Cy、OV、AC、P*第三章MCS-51指令系统例:A=3BH,PSW=0,执行指令ADDA,#3BH求:A=?,Cy=?,OV=?,AC=?,P=?,PSW=?01000001=41H00111011+001110110111011076H0110*第三章MCS-51指令系统2)带进位加法: ADDCA,源操作数 ADDCA,Rn ADDCA,direct ADDCA,@Ri ADDCA,#data 影响Cy、OV、AC、P例:A=9AH,R2=E3H,PSW=0,执行指令 ADDCA,R2后求: A=?,Cy=?,OV=?,AC=?,P=?, PSW=?10000100=84H1001101011100011+01011111017DH1100*注意:上例中,若将两个操作数看作是无符号数,则操作结果正确;若将它们看作带符号数,则根据PSW中(OV)=1可知加法运算产生了溢出,累加器A中的结果显然是错误的。因此,采用加法指令编写带符号数的加法运算程序时,要想判断累加器A中获得的结果是否正确就必须检测PSW中标志位OV的状态。*第三章MCS-51指令系统带进位加法指令ADDC用于多字节运算 例:设双字节数X存在片内RAM40H、41H单元,Y存在42H、43H单元,编程求Z=X+Y,并存入片内RAM单元44H、45H、46H。 ADDS:CLRCMOVA,40H ADDA,42H MOV44H,A MOVA,41H ADDCA,43H MOV45H,A MOVA,#0 ADDCA,#0 MOV46H,A RET;取被加数低字节;加上加数低字节;保存和的低字节;取被加数高字节;加上加数高字节;保存和的高字节;求高字节进位;子程序结束*第三章MCS-51指令系统3)BCD码十进制调整指令: DA A ;对A中加法结果进行调整通常紧跟 ;AC=1或A3~0>9,则A=(A)+06H ;Cy=1或A7~4>9,则A=(A)+60H在一条普通加法指令之后,用以实现BCD加法。十进制加法指令: ADDA,源操作数 DAA带进位十进制加法指令: ADDCA,源操作数 DAA *第三章MCS-51指令系统例3-39:编制85+59的BCD加法程序,并对其工作过程进行分析。 解:相应BCD加法程序为: MOVA,#85H ;A←85H ADDA,#59H ;A←85H+59H=0DEH DAA ;A←44,Cy=1 *第三章MCS-51指令系统二进制加法和进制调整过程为: 85 10000101+)59 01011001 144(0)11011110 110 ;低4位>9,加6调整11100100110 ;高4位>9,加60H调整(1)01000100运算结果为(A)=44H,Cy=1即十进制的144。*第三章MCS-51指令系统2.减法指令(只有带Cy的减法) SUBBA,源操作数 ;带借位减法指令SUBBA,Rn;A←(A)-(Rn)-(Cy)SUBBA,directSUBBA,@RiSUBBA,#data影响:Cy、OV、AC、P例:(A)=5AH,(R2)=5AH,(Cy)=0,执行下列指令 SUBBA,R2求: A=0,Cy=0,OV=0,P=0,AC=0.*第三章MCS-51指令系统例3-36设(A)=0C9H,(R0)=60H,(60H)=54H,Cy=1,执行指令:SUBBA,@R0 结果为(A)=74H标志位为 Cy=0,0V=1,AC=0,P=0011101借位11001001(A)01010100((R0))-1Cy01110100*第三章MCS-51指令系统3.增量、减量指令增量指令:INC单操作数 INCAINCRnINCdirectINC@RiINCDPTR除对A操作影响标志位P以外,不影响标志位状态。*第三章MCS-51指令系统减量指令:DEC单操作数DECADECdirectDEC@RiDECRn除对A操作影响标志位P以外,不影响标志位状态。 注意:没有指令DECDPTR 可用指令DECDPL 代替 *第三章MCS-51指令系统3-5-2.乘除指令 MULAB ;BA←A×B,Cy←0,B高字节,A低字节;当积高字节B=0,OV←0;B≠0,则OV←1DIVAB;A÷B,A←商,B←余数,Cy←0, 当除数B=0,OV←1;B≠0,则OV←0。例:(A)=96(60H),(B)=192(0C0H),执行指令MULAB后,求:A=,B=,Cy=,OV=,P=.解:96×192=18432(4800H)例:(A)=158(F6H),(B)=13(0DH),执行指令DIVAB后求:A=,B=,Cy=,OV=,P=解:158÷13=12(0CH),余数=2(02H)。00H48H0100CH02H000*第三章MCS-51指令系统3-6 逻辑运算指令一、单操作数指令(A累加器为操作数) 1.A清0指令:CLRA;A←0 2.A取反指令:CPLA;A←/A3.循环移位指令:1)8位循环指令: RLA;A循环左移一位RRA;A循环右移一位2)9位循环指令: RLCA;带Cy循环左移一位 RRCA;带Cy循环右移一位*第三章MCS-51指令系统例:设A=11000101,Cy=0,分别执行下列单条指令: CPLA ;A=,Cy= RLA;A=,Cy= RLCA ;A=,Cy=001110100100010110100010101*第三章MCS-51指令系统用9位循环指令实现多字节移位例:编程将寄存器R6R5中的双字节数X左移一位。CLR CMOV A,R5RLC AMOV R5,AMOV A,R6RLC AMOV R6,A;Cy=0,设R6=55H,R5=AAH;R6=01010101,R5=10101010,Cy=0;R6=01010101,R5=01010100,Cy=1;R6=10101011,R5=01010100,Cy=0*第三章MCS-51指令系统二、双操作数逻辑运算指令(对位进行逻辑运算):ANL、ORL、XRL(各有6条,以A或direct为目的地址)以ANL指令为例: ANLA, Rn ANLA, direct ANLA, @Ri ANLA, #data ANLdirect, A ANLdirect, #data 逻辑与指令常用于清零字节中的某些位。 逻辑或指令常用于置1字节中的某些位。 逻辑异或指令通常用来对某些位取反。*第三章MCS-51指令系统二、双操作数逻辑运算指令(对位进行逻辑运算):例A=01××××××B,×表示随机状态,为1或0,执行下述一组指令执行后A的值如何? ANLA,#0E7H ; ORLA,#03H ;; XRLA,#0C0H ;解:执行上述指令后,A=10×00×11B。将累加器A的内容D4、D3清0将累加器A的内容D1、D0置1将累加器A的内容D7、D6取反*第三章MCS-51指令系统三、位逻辑操作指令位清0、置1、取反:CLR、SETB、CPL例: CLRC ;Cy¬0, CLR40H ;位地址40H¬0 *第三章MCS-51指令系统三.双位变量逻辑运算:ANL、ORL: ANLC,40H;C←C∧(40H) ANLC,/40H;C←C∧/(40H)例:设(Cy)=0,(位地址40H)=1,执行指令 ANLC,/40H后, Cy=?,(位地址40H)=?位地址表示法: 位地址40H,位寄存器F0,字节加位ACC.0 01*第三章MCS-51指令系统3-7控制转移指令转移指令通过改写PC的当前值,从而改变CPU执行程序的顺序,使程序发生跳转。 按转移条件分类:1)无条件转移: 执行无条件转移指令,程序无条件转移到指定处。2)条件转移: 指令中给出转移条件,执行指令时,先测试条件,若满足条件,则程序发生转移,否则,仍顺序执行程序。*第三章MCS-51指令系统按转移方式分类:1)绝对转移:指令给出转移目的的绝对地址nn,执行指令后,PC¬nn。例: 地址 源程序 1000H LJMP2000H 1003H … … 2000H … ;转移目的指令2)相对转移:指令给出转移目的与转移指令的相对偏移量e,执行指令后,PC¬PC+e。例:地址 源程序1000HSJMP02 … 1004H…;转移目的指令*第三章MCS-51指令系统一.无条件转移指令1.长转移指令: LJMP addr16 ;PC¬addr16指令转移范围:64KB,无条件转移,不影响任何标志位,addr16往往采用标号表示(如LOOP、LOOP1等)2.绝对转移指令: AJMPaddr11 ;PC¬PC+2;PC10~0¬addr11;PC15~11不变指令转移范围:2KB,目标地址必须与下一条指令的存放地址((PC)+2,即AJMP指令取出后的PC中的地址)在同页(2KB)内。转移时要求转移前后保持PC15~11不变。*第三章MCS-51指令系统例:以下是一程序片段,左边为存储器地址,其后一条AJMP指令在汇编时出错: 07FEH AJMP K11 ;转移到K11处,在0800H~0FFFH页内 0800H 。。。 。。。 0E00H K11: 。。。 。。。0F80H K12: 。。。 。。。0FFEH AJMP K12 ;汇编此处时报错 1000H 。。。*第三章MCS-51指令系统3.短转移指令: SJMPe ;PC¬PC+2,PC¬PC+e相对偏移量e为8位补码。指令转移范围:前126~后129字节 相对偏移量e的计算式: e=目的指令地址-(转移指令地址+指令字节数) =目的地址-PC当前值编程时,用标号代替转移目的地址,转移指令的操作数交给汇编程序计算。 LJMPNEXT[AJMPNEXT][SJMPNEXT] …NEXT:*第三章MCS-51指令系统例:计算转移指令的相对偏移量e,并判断是否超出转移范围。指令地址 源程序 2130H SJMPNEXT …2150H NEXT:MOVA,R2相对偏移量=2150H-(2130H+2)=001EH, 只取低8位:e=1EH例:求原地踏步指令的代码码。HERE:SJMPHERE ;或 HERE:SJMP$ 偏移量汇编时自动计算出为0FEH,即-2的补码。*第三章MCS-51指令系统4.散转指令(多分支转移指令) JMP@A+DPTR.;PC¬(A)+(DPTR)指令转移范围64KB。应用:处理功能键。要求不同功能键执行不同程序段。设每个功能键对应一个键值X(0≤X≤FH)。设X已存入片内RAM的40H单元中。若X=0,则执行程序段FUNC0若X=1,则执行程序段FUNC1 …。KEY: MOVDPTR,#KTABMOVA,40HADDA,40HJMP@A+DPTRKTAB: AJMPFUNC0 AJMPFUNC1 …FUNC0:… FUNC1:…*第三章MCS-51指令系统二.条件转移指令条件转移指令形成程序的分支,赋予计算机判断决策能力,转移条件:1)标志位的状态2)位地址中的状态1.判零转移指令 JZe;PC←(PC)+2, ;若(A)=00H,PC←(PC)+e(转移), ;若(A)≠00H,PC不变(不转移)JNZe ;PC←(PC)+2,若A≠00H, ;PC←(PC)+e(转移) ;若(A)=00H,PC不变(不转移)2.判Cy转移指令 JCe;Cy=1则转移,Cy=0不转移 JNCe ;Cy=0则转移,Cy=1不转移 *第三章MCS-51指令系统3.判位转移指令 JBbit,e ;(b)=1转移,否则不转移 JNBbit,e ;(b)=0转移,否则不转移4.判位清0转移指令: JBCbit,e;(b)=1转移,且b¬0,否则不转移5.比较不相等转移指令: CJNE操作数1,操作数2,eCJNEA,n,e;PC←(PC)+3 ;若A≠(n),则PC←(PC)+e ;且当(A)>(n),Cy←0,当(A)<(n),Cy←1 ;若(A)=(n),PC不变,且(Cy)=0。相当于两个操作数相减,仅影响标志状态,不保存结果。相对转移范围:下一条指令始地址的前128~后127。 *第三章MCS-51指令系统 例:以下程序中,执行第一条比较不相等转移指令后,将根据R4的内容大于35H、等于35H、大于35H三种情况作不同的处理:CJNE R4, #35H,NEQ;(R4)≠35H转移EQ:。。。 ;(R4)=35H处理程序。 。NEQ: JC LESS ;(R4)<35H转移LAG: 。。。 ;(R4)>35H处理程序。 。LESS:。。。 ;(R4)<35H处理程序 *第三章MCS-51指令系统6.循环转移指令: DJNZ操作数,e DJNZRn,e;PC←(PC)+2,R2←(R2)-1 ;若(Rn)≠0,PC←PC+e, ;若(Rn)=0,PC不变。例:用于循环结构程序。设要求程序循环执行100次 MOVR2,#100 ;设循环计数器初值LOOP: … ;多次循环程序段 DJNZR2,LOOP ;循环控制 … ;循环结束*第三章MCS-51指令系统例:编制程序,将内部RAM70H字节起始的16个数送外部RAM1000H字节起始的16个单元。 MOV R7, #16 ;数据长度送R7 MOV R0, #70H ;数据块起始地址送R0 MOV DPTR,#1000H;存放地址LOOP:MOV A, @R0 ;从内RAM取数据 MOVX @DPTR,A;数据送外RAM INC R0 ;修改数据地址 INC DPTR ;修改存放地址 DJNZ R7, LOOP;数据未送完,继续送*第三章MCS-51指令系统三.子程序调用和返回指令子程序调用和返回指令也使程序发生转移。子程序调用过程:与转移指令不同,转移时,先用堆栈保存当前地址。1.长调用指令 LCALLnn;PC¬(PC)+3, 指令调用范围:64KB;SP¬(SP)+1,(SP)¬(PCL),;SP¬(SP)+1,(SP)¬(PCH),;PC¬nn nn为子程序起始地址,编程时可用标号代替。 *第三章MCS-51指令系统2.绝对(短)调用指令 ACALLaddr11 ;PC¬(PC)+2 ;SP¬(SP)+1,(SP)¬(PCL) ;SP¬(SP)+1,(SP)¬(PCH) ;PC10~0¬addr11,PC15~11不变 addr11为子程序首地址. 指令调用范围2KB。3.子程序返回指令 RET;PCH¬((SP)),SP¬(SP)-1,;PCL¬((SP)),SP¬(SP)-1RET指令从堆栈弹出保存的PC地址,实现子程序返回*第三章MCS-51指令系统4.中断返回指令 RETI;PCH¬((SP)),SP¬(SP)-1,;PCL¬((SP)),SP¬(SP)-1 RETI指令从堆栈弹出保存的PC地址,实现中断子程序返回。还清除内部相应中断状态寄存器。5.空操作指令 NOP;PC¬(PC)+1调整CPU的时间,做一个机器周期的延时,不影响任何状态。*第三章MCS-51指令系统指令系统 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 1、“MOV”:源操作数和目的操作数都在片内RAM中;“MOVX”:实现外部RAM与内部累加器A的数据传送;“MOVC”:两条专用查表指令,实现外部ROM与A之间的数据传送。2、@Ri中i的范围是0和1。Rn中的n的范围是0~7。每条指令中只能有1个Rn或@Ri。如:MOVR1,@R0×MOVA,@R2×3、以累加器A为目的寄存器的传送指令会影响PSW中的奇偶标志位,其余传送指令对所有标志位均无影响。
本文档为【单片机与嵌入式系统原理第三章】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥39.9 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
孟子73代
暂无简介~
格式:ppt
大小:1MB
软件:PowerPoint
页数:0
分类:工学
上传时间:2019-04-02
浏览量:24