

已阅读5页,还剩98页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章 mcs-51指令系统 数据传送 3.3 寻址方式 3.2 程序状态字 3.1 算术指令 3.4 跳转指令 3.7 mcs-51指令集小结 3.8 布尔指令 3.6 逻辑指令 3.5 3.1 程序状态字 程序状态字(program status word ,psw)包含反映当前cpu状态的若干状 态位。 图3-1 在mcs-51设备中的psw(程序状态字) 3.2 寻 址 方 式 3.2.1 立即寻址 某些指令用包含在指令中的数据作为源 操作数,这些操作数称为立即操作数(简 称立即数)。常数的值能跟在程序存储器 的操作码后,例如: mova,#100 指令:mov dptr,#data16 mov dptr,#1234h 图3-2 立即寻址示意图 3.2.2 寄存器寻址 指令: mov a,rn 操作码: 11101rrr 图3-3 寄存器寻址示意图 3.2.3 直接寻址 mov a,50h 区别: mov a,#50h 图3-4 直接寻址示意图 3.2.4 隐含寻址 3.2.5 间接寻址 在间接寻址中,指令规定包含操 作数地址的寄存器。内部ram与外部 ram都能间接寻址。 8位地址使用r0,r1作间接寻址寄存器 16位地址使用dptr作间接寻址寄存器 对于8位地址,地址寄存器可以是所选 择的寄存器体的r0或r1或堆栈指针。对于 16位地址,其地址寄存器只能是“数据指针 ”寄存器dptr。例如指令: mova,ri 片外ram寻址用 movx a,ri movx a,dptr 图3-5 间接寻址示意图 3.2.6 变址寻址 只有程序存储器能用变址寻址方式访问 且只能用于读。此寻址方式用于在程序存 储器中查找表项。一16位基寄存器(dptr 或程序计数器pc)指向表的基地址,而累 加器作为表的入口偏移。在程序存储器中 的表项的地址由累加器数据加至基指针形 成。 这种寻址方式的指令只有两条: movc a,a+pc movc a,a+dptr 变址寻址示意图如图3-6所示。 图3-6 变址寻址示意图 表3-1 寻址方式小结 分 类 寻 址 方 式 采用的寄存 器变量 寻 址 空 间 与 字 节 数 据 有 关 立即寻址 程序存储器(rom)的全部空间(最 大64kb) 直接寻址片内128 ram空间和sfr空间 隐含寻址 a、ab、 dptr 4个sfr的字节地址:80h、f0h、 82h、83h 分 类 寻 址 方 式 采用的寄存器 变量 寻 址 空 间 与 字 节 数 据 有 关 寄存器寻 址 r7r0片内ram低32b空间(00h31h) 间接寻址r1、r0片内ram的128b空间(8052系列可为 256b) r1、r0限于片外ram的任何一项(256b)空间 dptr片外ram的全部空间(最大64kb) 变址寻址 a+dptr、 a+pc 程序存储器(rom)的全部空间(最大 64kb) 续表 分 类寻 址 方 式采用的寄存器变量寻 址 空 间 与跳 转地 址有 关 相对跳转寻址pc+rel 限于程序存储器(rom) 的256b范围 绝对跳转寻址 程序存储器(rom)的全 部空间(最大64kb) 变址跳转寻址a+dptr 程序存储器(rom)的全 部空间(最大64kb) 与位 数据 有关 隐含位寻址ccy(位地址:d7h) 直接位寻址 片内ram区内的20h 2fh字节和sfr区内的 实有的83个可寻址位 3.3 数 据 传 送 3.3.1 指令中的常用符号 rn- 当前选择的寄存器体的寄存 器r7r0。 direct- 8位内部的数器单元的地址 。只能是一内部ram的数据单元(0127 )或一sfr(即i/o端口、控制寄存器、状 态寄存器等(128255)。 ri - 通过寄存器r1或r0间接寻 址的8位内部ram单元(0255)。 #data- 包含在指令中的8位常 数。 #data16 - 包含在指令中的16位常数 。 addr16 - 16位目的地址。由lcall 与ljmp使用。能分支至64kb程序存储器 地址空间内的任一处。 addr11 - 11位目的地址。由lcall 与ljmp使用。分支在程序存储器的同一 2kb页内作为下一条指令的第一字节。 rel - 带符号的8位偏移字节。由 sjmp与所有条件跳转指令使用。范围是相 对于下一条指令的第一个字节的128 +127。 bit- 在内部ram或特殊功能寄 存器中的直接地址位。 - 表示数据传送方向。 - 代表算术“加法”运算符。 - 代表算术“减法”运算符。 - 代表算术“乘法”运算符。 - 代表算术“除法”运算符。 - 代表逻辑“与”运算符。 - 代表逻辑“或”运算符。 - 代表逻辑“异或”运算符。 - 出现在位地址前面时,表示 将对应位操作数取反。 - 出现在特定寄存器前面时, 表示被用作间接寻址寄存器。 #- 用在指令中的操作数前面时 ,表示该操作数为一个立即数,即常数。 3.3.2 内部ram 表3-2 访问内部ram的mcs-51数据传送指令清单 助 记 符操 作寻 址 方 式 执行时间 (s) 直接间接寄存器立即 mov a,a=1 mov ,a=a1 mov , =2 续表 助 记 符操 作寻 址 方 式执行时间 (s)直接间接寄存器立即 mov dptr, #data16 dptr=16位立 即常数 2 push inc sp:mov“ esp”, 2 续表 助 记 符操 作寻 址 方 式执行时间 (s) 直接间接寄存器立即 pop mov , “esp”: dec sp 2 助 记 符操 作 寻 址 方 式 执行时间 (s) 直接间接寄存器立即 xch a, 累加器与 交换数据 1 xchd a, ri 累加器与ri交 换低半字节 1 续表 图3-7 把bcd数向右移两个数字 图3-8 向右移bcd数一个数字 3.3.3 外部ram 地 址 宽 度 助 记 符 操 作 执行 时间 (s ) 8位 movx a, ri 读外部 ra m ri 2 8位 movx ri, a 写外部 ra m ri 2 16位 movx a, dpt r 读外部 ra m dpt r 2 16位 movx d ptr, a 写外部 ra m dpt r 2 表3-3 访问外部ram空间的mcs-51数据传送指令清单 3.3.4 查找表 助 记 符操 作 执行时间 (s) movc a,a+dptr在(a + dptr)读程序存储器 2 movc a,a+pc在(a + pc)读程序存储器 2 表3-4 mcs-51读查找表指令 3.4 算 术 指 令 表3-5 元mcs-51算术指今清单 助 记 符操 作寻址方式执行时间 (s)直接间接寄存器立即数 add a,字节a=a + 字 节 1 addc a,a=a + + c 1 续表 助 记 符操 作寻址方式执行时间 (s)直接间接寄存器立即数 subb a, a=a c 1 inc aa=a + 1只适用于累加器1 inc = + 1 1 续表 助 记 符操 作寻址方式执行时间 (s)直接间接寄存器立即数 inc dptrdptr=dptr + 1 只适用于dptr2 dec aa=a 1只适用于累加器1 dec 11 续表 助 记 符操 作 寻址方式 执行时间 (s) 直接间接寄存器立即数 mul abb:a=ba只适用于累加器与b4 div ab a=inta/b b=moda/b 只适用于累加器与b4 da a十进制调整只适用于累加器1 若在50h、51h与60h、61h存放着两 个16位数(地址高的为高字节),求它们 的和放至在自70h单元开始的存储单元中。 mov a,50h;取第一个数的低字节至累加器a add a,60h;与第二个数的低字节相加,若有进位 保留在标志c中 mov 70h,a;把相加的和送至ram mov a,51h;取第一个数的第二个字节 addc a,61h;与第二个数的第二个字节以及进位位 一起相加 mov 71h,a;和写至ram mov a,#00h;清零累加器a addc a,#00h;两位16位数相加,可能产生进位,与 进位位相加 mov 72h,a;存进位位 3.5 逻 辑 指 令 表3-6 mcs-51逻辑指令清单 助 记 符操 作寻 址 方 式执行时间 (s)直接间接寄存器立即 anl a,a=a“与” 1 anl ,a=“与”a 1 anl , #data =“与 ”#data 2 续表 助 记 符操 作寻 址 方 式执行时间 (s)直接间接寄存器立即 orl a, a=a“或” 1 orl ,a= “或”a 1 orl , #data =“或” #data 2 xrl a, a=a“异或” 1 续表 助 记 符操 作寻 址 方 式执行时间 (s)直接间接寄存器立即 xrl ,a = “异或”a 1 xrl , #data = “异或 ”#data 2 续表 助 记 符操 作寻 址 方 式执行时间 (s) 直接间接寄存器立即 crl aa=0只用于累加器1 cpl aa=“非”a只用于累加器1 rl a累加器左旋转1位只用于累加器1 rlc a带进位位左旋转只用于累加器1 rr a累加器右旋转1位只用于累加器1 rrc a带进位位右旋转只用于累加器1 swap a在a中半字节交换只用于累加器1 anl a,指令能取以下形式的任一种 : anl a,7fh(直接寻址) anl a,r1(间接寻址) anl a,r6(寄存器寻址) anl a,#53h(立即常数) 1逻辑“与”指令 2逻辑“或”指令 mov a,51h;把第二个单元的00000111取入累加器a swap a;使a中的高4位与低4位交换,变为01110000 orl a,50h;与50h单元的00000100相“或”,变为 01110100 mov 60h,a;结果存至60h单元 3逻辑“异或”指令 4旋转指令(rl a、rlc a等) 图3-9 旋转指令 5swap a指令 mov b,#10 div ab swap a add a,b 3.6 布 尔 指 令 助 记 符操 作 执行时间 (s) anl c,bitc=c“与”bit2 anl c,/bitc=c“与”“非”bit2 or c,bitc=c“或”bit2 or c,/bitc=c“或”“非”bit2 mov c,bit c=bit1 mov bit,c bit=c1 clr cc=01 clr bitbit=01 表3-7mcs-51布尔指令清单 续表 助 记 符操 作 执行时间 (s) setb cc=11 setb bitbit=11 cpl cc=“非”c1 cpl bitbit=“非”bit1 jc rel若c=1跳转2 jnc rel若c=0跳转2 jb bit,rel若bit=1跳转2 jnb bit,rel若bit=0跳转2 jbc bit,rel若bit=1跳转,清除bit2 隐含寻址方式直接寻址方式 clrc clr cy setb c setb cy cplc cpl cy jc rel jb cy,rel jncrel jnbcy,rel 3.7 跳 转 指 令 助 记 符操 作 执行时间 (s) jmp addr跳转至addr2 jmp a+dptr跳转至a+dptr2 call addr在addr调用子例程2 ret从子例程返回2 reti从中断返回2 nop无操作1 表3-8mcs-51设备中的无条件跳转指令 1相对短跳转sjmp sjmp是一相对跳转指令,指令为2字 节,指令第二字节是一8位符号数的相对于 指令指针的偏移量。 2绝对近跳转ajmp ajmp指令是2字节长,由操作码,在 它的高3位中包全地址的高3位,a10a8和 指令码中的另一地址字节a7a0形成了11 位目标地址。当指令执行时,这11位简单 地替换在pc中的低11位,高5位保持。 因此,目的地址在ajmp指令的下一条 指令的相同的2kb块内。此指令既继承了 sjmp指令编码短的优点,又扩展了跳转的 范围。 3绝对远跳转ljmp ljmp指令是一条3字节指令,指令的 第2、第3字节形成了16位目的地址。把这 16位地址送至pc,程序能跳转至64kb程 序存储器空间的任一处。 4绝对变址跳转 jmp a + dptr指令,采用变址寻 址方式,支持情况(case)跳转,目的地 址在执行时计算,用dptr 16位寄存器与 累加器之和作为目的地址。 3.7.2 子程序调用与返回指令 1近调用acall pc pc + 2, sp sp + 1,(sp) pcl, sp sp + 1,(sp) pch, pc10 0 addr11 2远调用lcall pc pc + 3, sp sp + 1,(sp) pcl, sp sp + 1,(sp) pch, pc addr16 3返回指令 pch (sp),sp sp - 1, pcl (sp),sp sp - 1 3.7.3 条件跳转指令 助 记 符操 作寻 址 方 式执行时间 (s) 直接间接寄存器立即 jz rel若a=0跳转只适用于累加器2 jnz rel若a 0跳转只适用于累加器2 表3-9 在mcs-51设备中的条件跳转指令 续表 助 记 符操 作寻 址 方 式执行时间 (s) 直接间接寄存器立即 djne ,rel 减量,若 不为0 跳转 2 cjne a, ,rel 若a 跳 转 2 cjne ,#data,rel 若 #data 跳转 2 1判0跳转 指令jz rel,判断累加器a,若其内容 为0,则跳转。指令jnz rel,也判断累加 器a,若其内容不为0,则跳转。 2减1不为0跳转 djnz指令有两种,一种为:djnz rn,rel rn rn 1,若rn 0,则pc pc + 2 + rel 这是寄存器寻址方式,先使寄存器减1 ,若其不等于0,则满足条件,跳转。 另一种指令为:djnz direct,rel direct (direct) 1,若(direct) 0 ,则pc pc + 2 + rel movcounter, #10 loop:(开始循环) (终止循环) djnzcounter,loop (继续) 3.8 mcs-51指令集小结 3.8.1 指令对标志位的影响 指 令标 志 covac add addc subb mul0 div0 da 表3-10影响标志设置的指令 续表 指 令标 志 covac rrc rlc setb1 clr c0 cpl c anl c,bit 续表 指 令标 志 covac anl c,/bit orl c,bit orl c,/bit mov c,bit cjne 助 记 符描 述 字 节 振荡 器 频率 ( m h z ) 算术运算 add a,rn加寄存器至累加器112 add a,direct 加直接地址字节单元内 容至累加器 212 add a,ri 加间接寻址的ram内容 至累加器 112 add a,#data 加立即数至累加器212 表3-11mcs-51指令集 续表 助 记 符描 述字 节 振荡器 频率 (mhz ) addc a,rn加寄存器至累加器,带进位位112 addc a,direct加直接地址字节单元内容至累加器, 带进位 212 addc a,ri 加间接寻址的ram内容至累加器,带 进位 112 addc a,#data加立即数至累加器,带进位212 sebb a,rn从累加器减寄存器,带借位112 subb a,direct从累加器减直接寻址字节单元内容, 带借位 212 助 记 符描 述字 节 振荡器 频率 (mhz ) subb a,ri从累加器减间接寻址字节单元内容, 带借位 112 subb a,#data从累加器减立即数,带借位212 inc a增量累加器内容112 inc rn增量寄存器中的内容112 inc direct增量直接寻址的内存单元内容212 inc ri增量间接寻址的内存单元内容112 dec a减量累加器内容112 dec rn减量寄存器中的内容112 dec direct减量直接寻址的内存单元内容212 续表 续表 助 记 符描 述字 节 振荡器 频率 (mhz) dec ri减量间接寻址的内存单元内容112 inc dptr增量数据指针寻址的内存单元内容124 mul ab乘a与b148 div aba被b除148 da a对累加器进行十进制调整112 续表 助 记 符描 述字 节 振荡器 频率 (mhz) 逻辑运算 anl a,rn累加器与寄存器做逻辑“与”运算112 anl a,direct累加器与直接寻址内存单元内容 做逻辑“与”运算 212 anl a,ri累加器与间接寻址内存单元内容 做逻辑“与”运算 112 anl a,#data累加器与立即数做逻辑“与”运算212 anl direct,a直接寻址内存单元的内容与累加 器做逻辑“与”运算 212 续表 助 记 符描 述字 节 振荡器 频率 (mhz) anl direct,#data直接寻址内存单元的内容与立 即数做逻辑“与”运算 324 orl a,rn累加器与寄存器做逻辑“或”运 算 112 orl a,direct累加器与直接寻址内存单元的 内容做逻辑“或”运算 212 orl a,ri累加器与间接寻址内存单元的 内容做逻辑“或”运算 112 orl a,#data累加器与立即数做逻辑“或”运 算 212 orl direct,a直接寻址内存单元的内容与累 加器做逻辑“或”运算 212 续表 助 记 符描 述字 节 振荡器 频率 (mhz) orl direct,#data直接寻址内存单元的内容与立 即数做逻辑“或”运算 324 xrl a,rn累加器与寄存器做“异或”运算112 xrl a,direct累加器与直接寻址内存单元的 内容做“异或”运算 212 xrl a,ri累加器与间接寻址内存单元的 内容做“异或”运算 112 xrl a,#data累加器与立即数做“异或”运算212 续表 助 记 符描 述字 节 振荡器 频率 (mhz) xrl direct,a 直接寻址内存单元的内容 与累加器做“异或”运算 212 xrl direct,#data 直接寻址内存单元的内容 与立即数做“异或”运算 324 clr a清除累加器112 cpl a对累加器求补112 rl a累加器左循环移位112 续表 助 记 符描 述字 节 振荡器 频率 (mhz) rlc a累加器带进位位左循环移位112 rr a累加器右循环移位112 rrc a累加器带进位位右循环移位112 swap a累加器内半字节对换112 续表 助 记 符描 述字 节 振荡器 频率 (mhz) 数据传送 mov a,rn寄存器传送至累加器112 mov a,direct直接寻址内存单元的内容传 送至累加器 212 mov a,ri间接寻址内存单元的内容传 送至累加器 112 mov a,#data立即数传送至累加器212 续表 助 记 符描 述字 节 振荡器 频率 (mhz) 数据传送 mov rn,a累加器传送至寄存器112 mov rn,direct直接寻址内存单元的内容传 送至寄存器 212 mov rn,#data立即数传送至寄存器212 mov direct,a累加器传送至直接寻址内存 单元 212 mov direct,rn寄存器传送至直接寻址内存 单元 224 续表 助 记 符描 述字 节 振荡器 频率 (mhz) 数据传送 mov direct,direct 直接寻址内存单元的内存传送 至直接寻址的内存单元 324 mov direct,ri 间接寻址内存单元的内存传送 至直接寻址的内存单元 224 mov direct,#data立即数传送至直接寻址内存单 元 324 mov ri,a传送累加器至间接寻址的内存 单元 112 续表 助 记 符描 述字 节 振荡器 频率 (mhz) mov ri,direct传送直接寻址内存单元的内容 至间接寻址的内存单元 224 mov ri,#data传送立即数至间接寻址的内存 单元 212 mov dptr,#data16 传送16位立即数至数据指针324 movc a,a+dptr 传送相对于dptr的代码字节 至累加器 124 movc a,a+pc传送相对于pc的代码字节至 累加器 124 续表 助 记 符描 述字 节 振荡器 频率 (mhz) movx a,ri传送外部ram(8位地址 )的内容至累加器 124 movx a,dptr 传送外部ram(16位地 址)的内容至累加器 124 movx ri,a传送累加器至外部ram (8位地址)单元 124 movx dptr,a 传送累加器至外部ram (16位地址)单元 124 push direct把直接寻址内存单元的内 容推入堆栈 224 续表 助 记 符描 述字 节 振荡器 频率 (mhz) pop direct把堆栈的内容弹出至直接 寻址内存单元 224 xch a,rn累加器与寄存器内容交换112 xch a,direct累加器与直接寻址内存单 元的内容交换 212 xch a,ri累加器与间接寻址内存单 元的内容交换 112 xchd a,ri累加器与间接寻址内存单 元的内容交换低序数 112 续表 助 记 符描 述字 节 振荡器 频率 (mhz) 布尔变量操作 clr c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年房长助理职位招聘模拟题及答案解析
- 2025注册验船师资格考试(B级船舶检验法律法规)全真冲刺试题及答案一
- 2025年劳动法考试题库(附答案)
- 2025年行政事业单位内部控制能力提升考试题集及解答指南
- 2025年导游证考试高级模拟题及答案详解与攻略
- 公务员四川面试题及答案
- 公务员面试题型及答案
- 2025年建筑装饰工程师招聘面试题与经验
- 安徽省淮南市第二中学2026届化学高二第一学期期中质量跟踪监视模拟试题含解析
- 公务员励志面试题及答案
- DB43-T 2629-2023回转窑挥发富集次氧化锌技术规范地方标准
- 中铝矿业有限公司巩义市张家沟大发铝土矿矿山土地复垦与地质环境保护治理方案
- 班级管理常规优质课件
- IT运维服务方案信息运维服务方案
- ZSL1000、ZSL750塔吊外挂架施工方案
- 文化自信作文800字议论文
- GB/T 28287-2012足部防护鞋防滑性测试方法
- GB/T 27677-2017铝中间合金
- 芜湖宜盛置业发展有限公司招聘3名编外工作人员(必考题)模拟卷
- 混凝土结构设计原理教学教案
- 齿轨卡轨车课件
评论
0/150
提交评论