首页 指令

指令

举报
开通vip

指令按指令功能,MCS-51指令系统分为数据传送(29条)、算术运算(24条)、逻辑运算及移位(24条)、控制转移(17条)、位操作(17条)5大类。共111条。 1. 数据传送(29条) MOV A,Rn ;A← (Rn) MOV A,direct ;A←(direct) MOV A,@Ri ;A←((Ri)) MOV A,#data ;A← #data MOV Rn,A ;Rn ← (A) MOV Rn,direct ;Rn ←(direct) M...

指令
按指令功能,MCS-51指令系统分为数据传送(29条)、算术运算(24条)、逻辑运算及移位(24条)、控制转移(17条)、位操作(17条)5大类。共111条。 1. 数据传送(29条) MOV A,Rn ;A← (Rn) MOV A,direct ;A←(direct) MOV A,@Ri ;A←((Ri)) MOV A,#data ;A← #data MOV Rn,A ;Rn ← (A) MOV Rn,direct ;Rn ←(direct) MOV Rn,#data ;Rn ← #data MOV direct ,A ;direct ← (A) MOV direct,Rn ; direct ← (Rn) MOV direct2 ,direct1 ;direct2 ← (direct1) MOV direct,@Ri ; direct ← ((Rn)) MOV direct,#data ; direct ← #data MOV @Ri,A ;(Ri) ← (A) MOV @Ri,direct ;(Ri) ←(direct) MOV @Ri,#data ;(Ri) ← #data MOV DPTR,#data16;DPTR ← #data16 MOVX A,@DPTR;A ← ((DPTR)) MOVX @DPTR,A;(DPTR) ← (A) MOVX A,@Ri ; A ← ((Ri)) MOVX @Ri,A ;(Ri)← (A) MOVC A,@A+DPTR;A← ((A)+(DPTR)) MOVC A,@A+PC ;A ← ((A)+(PC)) XCH A,Rn ;(A)<=> (Rn) XCH A ,direct;(A)<=>(direct) XCH A,@Ri ;(A)<=>((Ri)) XCHD A,@Ri ;(A)0~3<=>((Ri))0~3 SWAP A ;(A)0~3<=>(A)4~7 PUSH direct ;SP ← (SP)+1, (SP) ← (direct) POP direct ; direct ← ((SP)), SP ← (SP)-1 2. 算术运算(24条) ADD A,Rn ;A← (A) + (Rn) ADD A,direct ;A← (A) +(direct) ADD A,@Ri ;A← (A) +((Ri)) ADD A,#data ;A← (A) + #data ADDC A,Rn ;A← (A) + (Rn) + (C ) ADDC A,direct;A← (A) +(direct)+( C) ADDC A,@Ri;A← (A) +((Ri))+( C) ADDC A,#data;A← (A) + #data +( C) SUBB A,Rn ;A← (A) – (Rn) –( C) SUBB A,direct;A← (A) –(direct)-( C) SUBB A,@Ri ;A← (A) –( (Ri)) –( C) SUBB A,#data;A← (A) - #data –( C) MUL AB ;BA← (A)×(B) DIV AB;(A)÷(B)→商在A中,余数在B中 INC A ;A← (A) + 1 INC Rn ;Rn← (Rn) + 1 INC direct;(direct)← (direct)+ 1 INC @Ri ;(Ri)←((Ri))+ 1 INC DPTR ;DPTR← (DPTR) + 1 DEC A ;A← (A) - 1 DEC Rn ;Rn← (Rn) - 1 DEC direct ;direct← (direct)- 1 DEC @Ri ;(Ri)←((Ri))- 1 DA A 3. 逻辑运算及移位(24条) ANL A,Rn ;A ← (A)∧(Rn) ANL A,direct ;A ← (A)∧(direct) ANL A,@Ri ;A ← (A)∧((Ri)) ANL A,#data ;A ← (A)∧#data ANL direct,A ;direct← (A)∧(direct) ANL direct,#data ;direct ← (direct)∧#data ORL A,Rn ;A ← (A)∨(Rn) ORL A,direct ;A ← (A) ∨(direct) ORL A,@Ri ;A ←(A) ∨((Ri)) ORL A,#data ;A ← (A) ∨#data ORL direct, A ;direct← (A) ∨(direct) ORL direct, #data ;direct ← (direct) ∨#data XRL A,Rn ;A ← (A) ⊕(Rn) XRL A,direct ;A ← (A) ⊕(direct) XRL A,@Ri ;A ←(A) ⊕((Ri)) XRL A,#data ;A ← (A) ⊕#data XRL direct,A, ;direct ←(direct) ⊕ (A) XRL direct,#data ;direct ← (direct) ⊕#data CLR A ;对A清零 CPL A ;对A取反 RL A ;An+1←An, A0 ← A7 (循环左移) RR A ;An ← An+1,A7 ← A0 (循环右移) RLC A ;An+1 ← An ,A0 ← C,C ← A7(带进位循环左移) RRC A ;An ← An+1,A7 ← C,C ← A0 (带进位循环右移) 4. 控制转移(17条) LJMP addr16 ;PC ← addr16 (长转移指令) SJMP rel ;PC ← (PC)+2+rel (短转移指令) AJMP addr11 ;PC ←(PC)+2,PC10~0 ← addr11 (绝对转移指令) JMP @ A+DPTR ;PC ← (A)+(DPTR) (变址寻址转移指令) JZ rel ;若(A)= 0,则转移,否则顺序执行。转移目的地址=(PC)+ 2 + rel JNZ rel ;若(A)≠0,则转移,否则顺序执行。转移目的地址=(PC)+2 + rel CJNE A,#data,rel ; 转移目的地址 = (PC)+ 3 + rel CJNE A,direct,rel ; 若第一操作数内容小于第二操作数内容,则(C)= 1, CJNE @Ri,#data,rel ; 否则(C)= 0。 CJNE Rn,#data,rel ; 比较二个字节中的值,若不等,则转移。 DJNZ Rn,rel ;(二字节指令)转移目的地址 = (PC)+ 2 + rel DJNZ direct,rel ;(三字节指令)转移目的地址 = (PC)+ 3 + rel ;第一操作数内容减1后,若差值不为零,则转移;否则顺序执行。 LCALL addr16 ;PC←(PC)+3,SP←(SP)+1,(SP)←(PC)7~0(长调用指令) ;SP←(SP)+1,(SP)←(PC)15~8,PC←addr16 ACALL addr11 ;PC ←(PC)+2,SP←(SP)+1,(SP)←(PC)7~0(绝对调用指令) ;SP←(SP)+1,(SP)← (PC)15~8,PC10~0←addr11 RET ;PC15~8← ((SP)),SP←(SP)-1 (返回指令) ;PC7~0← ((SP)),SP←(SP)-1 RETI ;PC15~8←((SP)),SP←(SP)-1 (返回指令) ;PC7~0 ←((SP)),SP←(SP)-1 NOP ;PC ← (PC)+1 (空操作指令) 5. 位操作(17条) MOV C,bit ;C←(bit) MOV bit,C ;bit←(C ) CLR C ;C←0 CLR bit ;bit←0 SETB C ;C←1 SETB bit ;bit←1 ANL C,bit ;C←(C )∧(bit) ANL C,/bit ;C←(C )∧/(bit) ORL C,bit ;C←(C )∨(bit) ORL C,/bit ;C←(C )∨/(bit) CPL C ;C←/(C ) CPL bit ;bit←/(bit) JC rel ; 若(C )=1,则转移(PC←(PC)+2+rel);否则程序顺序执行 JNC rel ; 若(C )=0,则转移(PC←(PC)+2+rel);否则程序顺序执行 JB bit,rel ; 若(bit)=1,则转移(PC←(PC)+3+rel);否则程序顺序执行 JNB bit,rel ; 若(bit)=0,则转移(PC←(PC)+3+rel);否则程序顺序执行 JBC bit,rel ; 若(bit)=1,则PC←(PC)+3+rel,(bit)←0;否则程序顺序执行 题1:用数据传送指令实现下列要求的数据传送。 (1)R0的内容输出到R1。 (2)内部RAM 20H单元的内容传送到A中。 (3)外部RAM 30H单元的内容送到R0。 (4)外部RAM 30H单元的内容送内部RAM20H单元。 (5)外部RAM 1000H单元的内容送内部RAM 20H单元。 (6)程序存储器ROM 2000H单元的内容送R1。 (7)ROM 2000H单元的内容送内部RAM 20H单元。 (8)ROM 2000H单元的内容送外部RAM 30H 单元。 (9)ROM 2000H单元的内容送外部RAM 1000H单元。 解 (1) MOV  A,R0 MOV  R1,A (2)   MOV  A,20H (3)     MOV  R0,#30H 或 MOV R1,#30H MOVX  A,@R0 或 MOVX A,@R1 MOV  R0,A MOV R0,A (4)    MOV  R0,#30H 或 MOV R1,#30H MOVX  A,@R0 或 MOVX A,@R1 MOV  20H,A MOV 20H,A (5) MOV  DPTR,#1000H MOVX  A,@DPTR MOV  20H,A (6) MOV  DPTR,#2000H CLR A MOVC  A,@A+DPTR MOV  R1,A (7) MOV  DPTR,#2000H CLR A MOVC  A,@A+DPTR MOV  20H,A (8) MOV DPTR,#2000H CLR A MOVC  A,@A+DPTR MOV  R0,#30H MOVX  @R0,A (9) MOV  DPTR,#2000H CLR A MOVC  A,@A+DPTR MOV  DPTR,#1000H MOVX  @DPTR,A 题2:将片内RAM 30H单元与40H单元中的内容互换。 方法1(直接地址传送法): MOV 31H,30H MOV 30H,40H MOV 40H,31H 方法2(间接地址传送法): MOV R0,#40H MOV R1,#30H MOV A,@R0 MOV B,@R1 MOV @R1,A MOV @R0,B 方法3(字节交换传送法): MOV A,30H XCH A,40H MOV 30H,A 方法4(堆栈传送法): PUSH 30H PUSH 40H POP 30H POP 40H 题3:两字节无符号数相加,被加数放在内部RAM30H,31H单元(低位放在前),加数放在内部RAM40H、41H单元。计算两数的和,放在50H~52H单元中。 解: MOV A,30H ADD A,40H ;低字节相加 MOV 50H,A MOV A,31H ADDC A,41H ;高字节相加 MOV 51H,A MOV A, #00H ADDC A,#00H ;取高相加产生的进位 MOV 52H,A 题4:两个双字节数相减,被减数放在30H,31H,减数放在40H,41H中,差放入50H、51H。 解: ADD A,#00H ;将进位位清0 MOV A,30H SUBB A,40H ;低字节相减 MOV 50H,A MOV A,31H     SUBB A,41H ;高字节相减 MOV 51H,A 题5:编程实现下列运算:F=D1×D2+D3/D4 ,其中D1、D2、D3、D4都为非0的8位二进制无符号数。 解: MOV A,#D1   MOV B, #D2 MUL AB ;计算D1×D2 MOV R2,A ;暂存D1×D2的结果 MOV R3, B MOV A,#D3 MOV B,#D4 DIV AB ;计算D3/D4 ADD A,R2 ;乘积的低位与商相加 MOV R2,A ;存F低位 MOV A,R3 ADDC A,#0 ;乘积的高位与低位和的进位相加 MOV R3,A ;存F高位在R3中 题6: 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 下列程序段实现的功能: MOV A, direct RL A MOV R1,A RL A RL A ADD A,R1 MOV direct,A 解:各指令实现的功能依次如程序右边注译,可知该程序实现的功能是将存贮单元的数乘以10。 题7:将外RAM的一个数据块(首地址为DATA1)传送到内部数据RAM(首地址为DATA2),遇到传送的数据为零时停止传送,试编程。 解: MOV R0,#DATA2 ;赋首址  MOV DPTR,#DATA1 LOOP1:MOVX A,@DPTR ;取数 JZ LOOP2 ;判断是否为0 MOV @R0,A ;不为0存数 INC R0 ;准备取下一个数 INC DPTR SJMP LOOP1 ;重复取数过程 LOOP2:RET ;为0结束 题8:找出片内RAM的DATA为首址的数据块中第一个等于100的数,并将其地址存入A中。 解: MOV R0,#DATA LOOP1: CJNE @R0,#64H,LOOP2 SJMP LOOP3 LOOP2: INC R0 SJMP LOOP1 LOOP3: MOV A,R0 题9:将内部RAM的30H~7FH单元清0。 解: (分析:这是一个重复操作过程,可以使用循环指令。30H~7FH共50H个单元 ,循环次数为50H。) 程序如下: MOV R7,#50H MOV R0,#30H NEXT:MOV @R0,#0 INC R0 DJNZ R7,NEXT 题10:将8031内部RAM的40H ~ 4FH单元置初值#A0H ~ #AFH。 解: MOV R0,#40H MOV R2,#10H MOV A,#0A0H LOOP: MOV @R0,A INC R0 INC A DJNZ R2,LOOP 题11:以查表方式求出片内RAM中20H单元数的平方值,存入片内21H单元中。 解法一: 以DPTR为基址寄存器,平方表首址可灵活安排在ROM中适当的位置如2000H,即平方表的内容从2000H单元放起。程序如下: ORG 1800H MOV DPTR ,#2000H MOV A,20H MOVC A,@A+DPTR MOV 21H,A   ORG 2000H DB 00H, 01H ,04H , 09H ,10H, 19H   DB 24H, 31H, 40H , 51H ,64H,…… 解法二:以PC为基址寄存器,此时表格须紧跟程序之后,且要计算好表格首址位置 ORG 1000H 1000  MOV   A,20H    1001 ADD A,#03H     1003 MOVC A,@A+PC   1004 MOV  21H,A   1006 RET   1007 DB 00H, 01H, 04H …… 
本文档为【指令】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_597106
暂无简介~
格式:doc
大小:101KB
软件:Word
页数:9
分类:互联网
上传时间:2010-06-28
浏览量:37