指令系统及程序设计.doc_第1页
指令系统及程序设计.doc_第2页
指令系统及程序设计.doc_第3页
指令系统及程序设计.doc_第4页
指令系统及程序设计.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、用数据传送指令完成如下功能:(1)工作寄存器R2的内容送给R3; MOV A,R2 MOV R3,A;两个工作寄存器之间不能直接进行数据传送(2)内部RAM20H单元的内容送给内部RAM30H单元; MOV 30H,20H;两个直接地址之间可以直接进行数据传送(3)内部RAM20H单元的内容送给外部RAM20H单元; MOV R1,#20H MOV A,R1 MOVX R1,A;内部RAM中的数据必须要先送到累加器A再由A送出到外部RAM去(4)外部RAM20H单元的内容送给外部RAM2000H单元; MOV RI,#20H MOV DPTR,#2000H MOVX A,R1 MOVX DPTR,A;两个外部RAM单元也不能直接进行数据传递,必须要先将外部RAM一个单元数据送给A再由A到另一个外部RAM单元中去(5)ROM30H单元的内容送给内部RAM30H单元; MOV DPTR,#0030H MOV A,#00H MOVC A,A+DPTR MOV 30H,A要先将ROM指定单元数据送给A再由A到内部RAM指定单元中(6)ROM3000H单元的内容送给外部RAM2000H单元;MOV DPTR,#3000H MOV A,#00H MOVC A,A+DPTR MOV DPTR,#2000H MOVX DPTR,A要先将ROM指定单元数据送给A再由A到外部RAM指定单元中去小结:1、 注意数据传送类指令有三种:MOV(内部数据传送)、MOVC(从程序存储器中取数)、MOVX(累加器A与外部数据存储器间进行数据传递),要注意区分三种指令,不要混淆;2、 外部数据存储器(外部RAM)只能用寄存器间接寻址方式访问,且只能与累加器A进行数据传送;3、 外部数据存储器(外部RAM)使用寄存器间接寻址的地址指针选取原则:地址在8位以内(00H-FFH)可以使用R0、R1,也可以使用DPTR;地址超过8位,只能使用DPTR;4、 内部数据存储器(内部RAM)低128B可以用直接寻址方式也可以寄存器间接寻址方式访问;内部数据存储器高128B(仅52子系列有)只能用寄存器间接寻址方式访问,地址指针选取R0或R1;5、 程序存储器(ROM)是只读的,从ROM中读取数据用MOVC指令,对应变址寻址方式,要预先在A和DPTR(MOVC A,A+DPTR)或A(MOVC A,A+PC)中设好相应的值;2、外部RAM20H单元的内容和外部RAM21H单元的内容相乘,结果低八位送外部RAM22H单元,高八位送外部RAM23H单元 MOV R1,#20H MOVX A,R1 MOV B,A INC R1 MOVX A,R1 MUL AB INC R1 MOVX R1,A INC R1 MOV A,B MOVX R1,A外部数据存储器(外部RAM)只能用寄存器间接寻址方式访问,且只能与累加器A进行数据传送;如MOVX B,DPTR是非法指令。3、完成两个三字节二进制数的加法:第一个数存在内部RAM的30H、31H、32H(32H为最低字节)单元,第二个数存在内部RAM的40H、41H、42H(42H为最低字节)单元,结果存入内部RAM的 30H、31H、32H(32H为最低字节)单元。 ORG 0000H SJMP MAIN ORG 0030HMAIN: CLR C MOV R2,#3LOOP: MOV R0,#32H MOV R1,#42H MOV A,R0 ADDC A,R1 MOV R0,A DEC R0 DEC R1 DJNZ R2,LOOP SJMP $注意三字节数加法,高字节做加法时要考虑到低字节所产生的进位,所以用ADDC指令。4、用逻辑运算指令完成如下功能: (1)内部RAM20H单元数的低三位清零,其余位保持不变; ANL 20H,#0F8H;(2)内部RAM20H单元数的高两位置1 ,其余位保持不变; ORL 20H,#0C0H(3)内部RAM20H单元数的高两位取反,其余位保持不变; XRL 20H,#0C0H(4)内部RAM20H单元数的所有位取反; XRL 20H,#0FFH说明:1、逻辑与通常用来将累加器A或内部RAM某单元的某几位清0;2、逻辑或通常用来将累加器A或内部RAM某单元的某几位置1;3、逻辑异或通常用来将累加器A或内部RAM某单元的某几位取反;4、注意根据要求选取的立即数5. MOV R0,#30H ; (R0)=30H MOV A,R0 ; (A)=(30H)=64H MOV DPTR,#1000H ; (DPTR)=1000H MOVX DPTR,A ; (1000H)=(A)=64H MOV A,50H ; (A)=(50H)=04H MOV DPTR,#TAB ; (DPTR)=(TAB)=2000H MOVC A,A+DPTR ; (A)=(A)+(DPTR)=(2004H)=00H MOV P1,A ; (P1)=(A)=00H6.(SP)=6AH (R0)=35H, (R1)=45H,(6AH)=(34H),(69H)=(33H),(68H)=(32H),(67H)=(31H),(66H)=(30H)(40H)=(30H),(41H)=(31H),(42H)=(32H),(43H)=(33H),(44H)=(34H)本程序段的功能为:把40H之后5个字节单元的内容存入堆栈,而把30H之后的5个字节单元的内容送到40H之后的5个字节单元里7、试编写一个程序,其功能为将内部RAM中30H32H的内容左移一位7. ORG 0000H SJMP MAIN ORG 1000H MAIN: MOV R7,#3 MOV R0,#30H MOV A,32H MOV C,ACC.7 LOOP: MOV A,R0 RLC A MOV R0,A INC R0 DJNZ R7,LOOP SJMP $8、试编程将连续存放在外部RAM中1000H开始的100个单元的内容送到2000H开始的地址单元中? ORG 0000H LJMP MAIN ORG 0030HMAIN: MOV SP,#6FH MOV R7,#100 MOV DPL,#00HLOOP: MOV DPH,#10H MOVX A,DPTR MOV DPH,#20H MOVX DPTR,A INC DPL DJNZ R7,LOOP SJMP $说明:1、此题目的外部RAM两个区域地址都超过了8位,所以不能使用R0或R1作为地址指针,只能使用DPTR2、DPTR是16位的特殊功能寄存器,其高八位为DPH、低八位为DPL,DPH和DPL可单独使用;3、此题目外部RAM的两个区域高八位地址不同,低八位一致,可以通过改变DPH的内容,选择不同的存储区域;9、统计从片内RAM 30H到39H的连续10个单元中的正数、负数和零的个数? ORG 0000H SJMP START ORG 1000H START: MOV R7,#10 MOV R0,#30H MOV R1,#00H ;正数计数 MOV R2,#00H ;零计数 MOV R3,#00H ;负数计数LOOP: MOV A,R0 JZ ZERO JB ACC.7 NEG INC R1 AJMP OUT NEG: INC R3 AJMP OUT EUZ: INC R2 OUT: INC R0 DJNZ R7,LOOP SJMP $八位有符号数最高位是符号位,符号位为0代表零或正数;符号位为1代表负数。10、试编程计算2+4+6+8+.+100的值 ORG 0000H SJMP START ORG 0030HSTART: MOV SP,#6FH MOV 41H,#00H;结果高字节单元清零 MOV 40H,#00H;结果低字节单元清零 MOV 30H, #2;第一个加

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论