《精编》MCS-51指令系统概述

上传人:tang****xu5 文档编号:133883340 上传时间:2020-05-31 格式:PPT 页数:49 大小:265KB
返回 下载 相关 举报
《精编》MCS-51指令系统概述_第1页
第1页 / 共49页
《精编》MCS-51指令系统概述_第2页
第2页 / 共49页
《精编》MCS-51指令系统概述_第3页
第3页 / 共49页
《精编》MCS-51指令系统概述_第4页
第4页 / 共49页
《精编》MCS-51指令系统概述_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《《精编》MCS-51指令系统概述》由会员分享,可在线阅读,更多相关《《精编》MCS-51指令系统概述(49页珍藏版)》请在金锄头文库上搜索。

1、第三章MCS 51指令系统 第一节指令系统概述 一 指令类型MCS 51指令系统 数据传送指令算术运算指令逻辑运算指令位操作指令控制转移指令 二 指令格式操作码 操作数1 操作数2 操作数3 操作码 表示指令进行何种操作 操作数 指出了参加操作的数据或数据存放的地址 操作数和操作码之间用一个或几个空格隔开 操作数之间以逗号 分开 三 伪指令不产生机器语言指令 仅提供汇编控制信息 1 定位伪指令ORGmm 代表16位地址 功能 指出汇编语言程序通过编译 得到的机器语言程序的起始地址 2 定义字节伪指令DBX1 X2 XnXi 单字节数据 它为十进制或十六进制数 也可以为一个表达式 Xi也可以为由

2、两个单引号 所括起来的一个字符串 每一个字符为一个ASCII码 功能 X1 X2 Xn送目标程序存储器 通常用于定义一个常数表 3 字定义伪指令DWY1 Y2 YnYi 双字节数据 它可以为十进制或十六进制的数 也可以为一个表达式 功能 Y1 Y2 Yn送目标程序存储器 经常用于定义一个地址表 4 汇编结束伪指令END功能 汇编结束标志 5 标号和注释标号 操作码 操作数1 操作数2 操作数3 注释标号 加在指令之前 必须以字母开始 后跟1 8个字母或数字 并以冒号 结尾 标号的值是它后面的指令存储地址 注释 对某一条指令或某一段程序的功能说明 它必须以分号 开始 四 常用的缩写符号A累加器A

3、CC AB累加器ACC和寄存器B组成的寄存器对 C进位标志位CY 也是位操作指令中的位累加器 Rn表示当前选中的通用寄存器R0 R7 n 0 7 Ri表示通用寄存器中可用作8位地址指针的R0和R1 i 0 1 direct直接地址 取值为0 0FFH data立即数 表示一个常数 间接寻址 addr表示外部数据存储器的地址 bit表示内部RAM或特殊功能寄存器中的直接位地址 寄存器 寄存器内容 由X寄存器寻址的存储器单元内容 寄存器的内容取反 rrr指令编码中rrr三位值由工作寄存器Rn确定 R0 R7对应rrr为000 111 指本条指令起始地址 rel相对偏移量 其值为 128 127 第

4、二节寻址方式 寻址方式 指令给出参与运算的数据的方式 一 寄存器寻址指令指出某一个寄存器的内容作为操作数 寻址空间 R0 R7A B C AB DPTR二 直接寻址在指令中含有操作数的直接地址 该地址指出了参与运算或传送的数据所在的字节单元或位的地址 直接寻址方式访问以下三种存储空间 特殊功能寄存器 特殊功能寄存器只能用直接寻址方式访问 内部数据存储器的低128字节 位地址空间 三 寄存器间接寻址指令指出某一个寄存器的内容作为操作数的地址 寻址空间 内部RAM R0 R1 SP 外部数据存储器 R0 R1 DPTR 四 立即寻址立即寻址方式中操作数包含在指令字节中 即操作数以指令字节的形式存放

5、于程序存储器中 五 基寄存器加变址寄存器间接寻址以16位的程序计数器PC或数据指针DPTR作为基寄存器 以8位的累加器A作为变址寄存器 基寄存器和变址寄存器的内容相加形成16位的地址 该地址即为操作数的地址 寻址空间 程序存储器 A PC A DPTR 六 相对寻址相对寻址方式是为实现程序的相对转移而设计的 为相对转移指令所采用 目的地址 PC值 转移指令字节数 relPC值 执行完该转移指令后的PC值 rel 带符号的8位二进制补码数 所能表示的数的范围是 128 127 第三节数据传送指令 MOV 数据传送指令是指把源操作数传送到目的操作数 指令执行后 源操作数的值不改变 目的操作数的值改

6、为源操作数赋给的相应值 除以累加器A为目的操作数寄存器指令会对奇偶标志位P有影响外 其余指令执行时均不会影响任何PSW的标志位 一 内部数据传送指令1 以累加器A为目的操作数的指令MOVA Rn n 0 7MOVA directMOVA Ri i 0 1MOVA data功能 把源操作数的内容送入累加器A 2 以Rn为目的操作数的指令MOVRn A n 0 7MOVRn directMOVRn data功能 把源操作数的内容送入当前工作寄存器区的R0 R7中的某一个寄存器 3 以直接寻址的单元为目的操作数指令MOVdirect AMOVdirect Rn n 0 7MOVdirect dire

7、ctMOVdirect Ri i 0 1MOVdirect data功能 把源操作数送入由直接地址指出的存储单元 4 以寄存器间接寻址的单元为目的操作数指令MOV Ri A i 0 1MOV Ri directMOV Ri data功能 把源操作数内容送入R0或R1指出的内部RAM存贮单元中 5 16位数据传送指令MOVDPTR datal6功能 把16位常数送入DPTR 6 堆栈操作指令内部RAM中可以设定一个后进先出 LIFO 的堆栈 1 进栈指令PUSHdirect功能 首先将堆栈指针SP加1 然后把直接地址指出的内容传送到堆栈指针SP寻址的内部RAM单元中 2 退栈指令POPdirec

8、t功能 堆栈指针SP寻址的内部RAM单元内容送入直接地址指出的字节单元中 堆栈指针SP减1 7 字节交换指令XCHA Rn n 0 7XCHA directXCHA Ri i 0 1功能 将累加器A的内容和源操作数内容相互交换 8 半字节交换指令XCHDA Ri i 0 1功能 将A的低4位和R0或R1指出的RAM单元低4位相互交换 各自的高4位保持不变 二 累加器A与外部数据存储器传送指令MOVXA DPTRMOVXA Ri i 0 1MOVX DPTR AMOVX Ri A功能 将累加器A和外部扩展的RAM IO口的数据传送 三 查表指令1 MOVCA A PC功能 以PC作为基址寄存器

9、A的内容作为无符号数和PC内容 下一条指令的始地址 相加后得到一个16位的地址 由该地址指出的程序存储器单元内容送到累加器A 2 MOVCA A十DPTR功能 以DPTR作为基址寄存器 A的内容作为无符号数和DPTR的内容相加得到一个16位的地址 由该地址指出的程序存储器单元的内容送到累加器A 第四节算术运算指令 算术运算指令有加 减 乘 除法指令 增量和减量指令 一 加法指令1 不带进位的加法指令ADDA Rn n 0 7ADDA directADDA Ri i 0 1ADDA data功能 把所指出的第二操作数和累加器A的内容相加 其结果放在累加器中 指令执行后 影响PSW标志位 2 带进

10、位加法指令ADDCA Rn n 0 7ADDCA directADDCA Ri i 0 1ADDCA data功能 同时把所指出的第二操作数 进位标志与累加器A内容相加 结果放在累加器中 指令执行后 影响PSW标志位 3 增量指令INCAINCRn n 0 7INCdirectINC Ri i 0 1INCDPTR功能 把指令所指出的操作数加1 除对A作影响P外不影响任何PSW标志 4 十进制调整指令DAA功能 对累加器A中由上一条加法指令 加数和被加数均为压缩的BCD码 所获得8位结果进行调整 使它调整为压缩BCD码的数 二 减法指令1 带进位减法指令SUBBA Rn n 0 7SUBBA

11、directSUBBA Ri i 0 1SUBBA data功能 从累加器中减去第二操作数和进位标志 结果在累加器中 指令执行后 影响PSW标志位 2 减1指令DECADECRn n 0 7DECdirectDEC Ri i 0 1功能 将指定的操作数减1 除对A作影响P外不影响任何PSW标志 三 乘法指令MULAB功能 把累加器A和寄存器B中的8位无符号整数相乘 其16位积的低位字节在累加器A中 高位字节在B中 如果积大于255 0FFH 则置位溢出标志OV 否则清 0 OV 进位标志CY总是清 0 四 除法指令DIVAB功能 把累加器A中的8位无符号整数除以寄存器B中的8位无符号整数 所得

12、商的整数部分存放在累加器A中 余数在寄存器B中 如果原来B中的内容为0 即除数为0 则结果A和B中内容不定 并置位溢出标志OV 在任何情况下 都清 0 CY 第五节逻辑运算指令 一 累加器A的逻辑操作指令1 CLRA功能 将累加器A清 0 不影响CY AC OV等标志 2 CPLA功能 将累加器ACC的每一位逻辑取反 不影响标志 3 左环移指令RLA4 带进位左环移指令RLCA 5 右环移指令RRA6 带进位右环移指令RRCA7 累加器ACC半字节交换指令SWAPA功能 将累加器ACC的高半字节 ACC 7 ACC 4 和低半字节 ACC 3 ACC 0 互换 二 两个操作数的逻辑操作指令1

13、逻辑与指令ANLA Rn n 0 7ANLA directANLA Ri i 0 1ANLA dataANLdirect AANLdirect data功能 操作数之间执行按位的逻辑与操作 结果存放在目的操作数中 2 逻辑或指令ORLA Rn n 0 7ORLA directORLA Ri i 0 1ORLA dataORLdirect AORLdirect data功能 操作数之间执行按位的逻辑或操作 结果存到目的操作数中去 3 逻辑异或指令XRLA Rn n 0 7XRLA directXRLA Ri i 0 1XRLA dataXRLdirect AXRLdirect data功能 操作

14、数之间执行按位的逻辑异或操作 结果存放到目的操作数中去 第六节位操作指令 进位位CY 程序状态字PSW 7 作为累加器C 以RAM和SFR内的位寻址区的位单元作为操作数 进行位变量的传送 修改和逻辑等操作 一 位变量传送指令MOVC bitMOVbit C二 位变量修改指令CLRCCLRbitCPLCCPLbitSETBCSETBbit 三 位变量逻辑操作指令1 位变量逻辑与指令ANLC bitANLC bit功能 如果源位的布尔值是逻辑0 则进位标志清 0 否则进位标志保持不变 操作数前斜线 表示用寻址位的逻辑非作源值 但不影响源位本身值 不影响别的标志 2 位变量逻辑或指令ORLC bit

15、ORLC bit功能 如果源位的布尔值为1 则置位进位标志 否则进位标志CY保持原来状态 同样 斜线 表示逻辑非 第七节控制转移指令 一 无条件转移指令1 短跳转指令AJMPaddr11指令编码 a10a9a800001a7a6a5a4a3a2a1a0功能 2KB字节范围内的无条件转跳指令 程序转移到指定的地址 该指令在运行时先将PC 2 然后通过把PC的高5位和指令第一字节高3位以及指令第二字节相连 PC15PC14PC13PC12PC11a10a9a8a7a6a5a4a3a2a1a0 而得到转跳目的地址送入PC 2 相对转移指令SJMPrel功能 无条件转跳指令 执行时在PC加2后 把指令

16、的有符号的偏移量rel加到PC上 并计算出转向地址 因此 转向的目标地址可以在这条指令前128字节到后127字节之间 3 长跳转指令LJMPaddrl6功能 把指令提供的16位目标地址送入PC 无条件地转向指定地址 转移的目标地址可以在64K字节程序存储器地址空间的任何地方 不影响任何标志 4 基寄存器加变址寄存器间接转移指令 散转指令 JMP A DPTR功能 把累加器A中8位无符号数与数据指针DPTR中的16位数相加 模216 结果作为下条指令地址送入PC 不改变累加器和数据指针内容 也不影响标志 实现程序的散转 二 条件转移指令条件满足才转移 相当于执行一条相对转移指令 条件不满足时则顺序执行下面的指令 转移目的地址 下一条指令的第一个字节地址PC 相对偏移量rel1 测试条件符合转移指令JZrel A 0JNZrel A 0JCrel CY 1JNCrel CY 0JBbit rel bit 1JNBbit rel bit 0JBCbit rel bit 1 转移后清洗直接寻址位 2 比较不相等转移指令CJNEA direct relCJNEA data relCJNERn d

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号