单片机-03-寻址与指令解读.ppt

  1. 1、本文档共114页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
例3-9、(A)=50H, (R1)=10H, (R2)=20H, (R3)=30H, (30H)=4FH 例3-11、(R1)=60H, (A)=20H, (30H)=22H MOV指令的字节数 一字节:指令中不含直接地址,又不含8位立即数 二字节:指令中包含一个直接地址或8位立即数 三字节:指令中包含两个上述类型的操作数 MOV A, @R0 ; 1字节 MOV A, direct ; 2字节 MOV direct, #data ; 3字节 MOV DPTR, #data16 ; 3字节 (1)读取片外RAM或I/O口指令 MOVX A,@DPTR ;A ←((DPTR)) MOVX A,@Ri ;A ←((P2Ri )) 例3-14、在外部ROM中2000H单元开始存放(0-9)的平方值0, 1, 4, 9,…81, 要求根据A中的值(0-9)来查找对应的平方值,并存入60H中。 解1)用DPTR作基址寄存器 MOV DPTR, #2000H MOVC A, @A+DPTR MOV 60H, A 解2) 用PC作基址寄存器,在MOVC前用加法调整 ADD A, #data MOVC A, @A+PC MOV 60H, A RET 2000H: DB 0, 1, 4, 9, 16, 25, 36,…81 如:(A)=44H, (30H)=55H 例3-24、两个无符号16位二进制数,分别存于30H、31H单元和40H、41H单元(低8位先存)。写出两个16位数的加法程序,将和存于50H、51H单元(设和不超过16位)。 例3-25、已知(A)=20H, (30H)=36H, (R7)=58H, (R0)=50H, (50H)=08H, (DPTR)=2000H INC A INC 30H INC R7 INC @R0 INC DPTR 基本用途 例3-34、编程使RAM中30H单元的低2位清零,高2位置1,其余4位取反。 ANL 30H, #0FCH ; 1111 1100 ORL 30H, #0C0H ; 1100 0000 XRL 30H, #3CH ; 0011 1100 实现按照一定条件决定转移的方向,分三类: 判零转移指令 比较转移指令 循环转移指令 比较转移指令特点 具有比较和判断双重功能,比较的本质是做减法运算,用第一操作数内容减去第二操作数内容,但差值不回存。 转移目的地址 = (PC)+ 3 + rel 若第一操作数内容小于第二操作数内容,则(C)= 1,否则(C)= 0。 DJNZ Rn, rel ; Rn← Rn–1, 若Rn?0,则转移 (PC←PC+2+rel), 若Rn=0,程序顺序执行 DJNZ direct, rel ;(direct)←(direct)-1, 若(direct) ?0,则转移 (PC←PC+3+rel), 若(direct)=0,程序顺序执行 循环转移指令 例:1~100逐个累加程序: MOV R0,#64H CLR A MOV 30H,A MOV 31H,A LOOP: MOV A,30H ADD A,R0 MOV 30H,A MOV A,31H ADDC A,#00H MOV 31H,A DJNZ R0,LOOP SJMP $ CJNE A , direct , rel ;若A?(direct),则转移(PC←PC+3+rel), 否则程序顺序执行 CJNE A , #data, rel

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档