第2章 MCS-51指令系统.ppt_第1页
第2章 MCS-51指令系统.ppt_第2页
第2章 MCS-51指令系统.ppt_第3页
第2章 MCS-51指令系统.ppt_第4页
第2章 MCS-51指令系统.ppt_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

第二章MCS-51指令系统、2.1MCS-51汇编器语言指令的格式、汇编器指令格式标签:操作码目标操作数、源操作数“注释标记”-此指令的符号地址表示指令所在的位置,并且小于8个字符。 可选项。 命令操作码CPU进行操作的助记符。 操作数-操作码的作用对象通常有目标操作数和源操作数,也有只有单个操作数或没有操作数的指令。 注释命令功能的说明。 ; 中与上一条命令不同。MCS-51汇编器语言指令的格式、指令的分类:按指令代码长度:单字节、双字节、三字节。 按功能分类:数据传输类(28条)算术运算类(24条)逻辑运算和移位类(25条)控制传输类(17条)位操作类(17条)。 另外,寻找指令地址方式、操作数地址的方法称为地址方式。 在MCS-51指令系统的地址方式中,即时地址直接地址寄存器地址寄存器间地址基本寄存器和索引寄存器间地址相对地址位地址、即时地址方式、指令的源极操作数为数值例: MOVA、#0FBH; (A)就是数0FBHADDA、#09H; (A)(A )注意到的即时数09 h :“#”指的是最后一个数字,即时数是数字,并且命令中的操作数是以该单元地址的形式通过直接地址给出的。 仅限于RAM空间中地址指定,即内部数据存储器RAM的低128字节单元(00H7FH )和特殊功能寄存器(SFR )。 例如MOVA、31H、寄存器地址、操作数被保存在寄存器中,一发现寄存器就得到操作数。 例如MOVA、R2、寄存器间地址、寄存器的内容不是操作数本身,而是存储操作数的地址、从该地址中搜索操作数。 作为间接地址寄存器,只能使用寄存器R0或R1。 “”符号表示采用间接寻址方式。 例如,MOVA、R0、基地址寄存器和索引寄存器被间接寻址,基地址寄存器(DPTR或PC )和索引寄存器a的内容作为无符号数相加而形成16位的地址,在该地址单元生成所需的操作数与例如MOVCA、A DPTR (命令代码是93H )、相对地址、当前命令的位置(PC值)作为基准点,将给出命令的相对偏移量(rel )相加,得到具有操作数的实际地址。 例如,将JC rel设置为rel=05H,该指令在ROM中包含两个单元,并且在执行该指令之后,在PC=0500H 2=0502H中,目的地=当前PC rel=0502H 05H=0507H的符号“rel”指示“偏移”,并且具有带符号的单字节数, 范围是:-128 127(80H7FH )、在比特地址命令中操作数的直接提供的比特地址表示可比特地址单元,该数据表示仅1比特0或1示例(1) mov ACC.7,07H的比特地址单元07 h的数值(2)清除2)CLRC PSW的第7位CY,2.2数据传输系统命令;1 .一般数据传输命令根据数据传输目的地地址向存储器类型传输、向寄存器类型传输、直接地址类型传输、向寄存器间地址类型传输。 发送到存储器MOVA、# data adata mova、direct; a(直接) mova,Rn; A(Rn)MOVA、Ri; MOVA、#0A9H、MOVA、69H、MOVA、R1、MOVA、R0、寄存器MOVRn、direct; rn movrn,a; Rn(A)MOVRn、#data; Rndata直接转送到地址单元MOVdirect,a的direct(A)MOVdirect,Rn; direct(Rn)MOVdirect、#data; directdataMOVdirect,Ri; direct|ri ) mov direct、direct; 直接、MOVR2、5fh、MOVR2、a、MOVR2、#5FH、MOV5FH、a、MOV5FH、R5、MOV5FH、#FFH、MOV5FH、R0、MOV5FH、30H、以及间接地址单元MOVRi,a; (Ri)(A)MOVRi,direct; (Ri)(direct)MOVRi、#data; (Ri)data只能作为间接地址寄存器使用R0、R1。2 .堆栈操作命令PUSHdirect堆栈命令POPdirect堆栈命令堆栈操作原则:“高级后缀、后缀”,MOVR0,5 FH,MOVR0,a,mov r 0,#5FH,puschbpopbpopacc,3 .数据交换命令字节交换命令XCHA,direct; XCHA、Ri; 半字节交换命令XCHDA、Ri;功能:源操作数与目标操作数单元的数据交换,(A)03与(Ri)03交换,4 .外部数据传送命令16位传送命令MOVDPTR,#data16; DPTR#data16此指令通常用于地址分配,用于外部ROM和RAM的数据传输。 存储器和外部RAM的数据传输命令MOVXA、Ri; movx ri,a; (Ri)(A)MOVXA、DPTR; movx dptr,a; (DPTR)(A )利用下面的256个小区来实现Ri间接地址外部RAM的数据传输,A PC; PCPC 1,A(A) (PC ) )指令的特征,构成索引间地址方式,DPTR、PC是基地址寄存器,a是索引寄存器,两者的和构成有效的地址,一般用于查找表操作,也称为查找表指令。 将DPTR作为基地址寄存器,将能够以外部ROM的64k空间内的任意地址搜索数据的PC作为基本地址寄存器时,搜索的数据和数据表只有在该指令之后才会发生错误。 2.3算术运算指令包括诸如加法、减法、乘法、除法和十进制调节之类的指令。 1 .加法系统命令加法命令ADDA,Rn; (rn ) adda,direct; a、direct、adda、Ri; adda、#data; A(A) data指令的特征:源操作数的操作数和值加入着眼的操作数,目标操作数都是存储器a。 影响标志位AC、Cy、OV、p。 无符号加法:如果C=1,表示存在溢出(其值为255 )。 带符号加法: OV=CPCS=1时,表示有溢出。 加位相加命令ADDCA,Rn; a、rn、addca、direct; a、direct (cy ) addca、Ri; (ri ) (cy ) addca、#data; 加上A(A) data (Cy )加法运算时进位的值。 常用于多字节数的加法。 目的操作数还是存储器a。 影响标志位AC、Cy、OV、p。 溢出的判断与ADD命令相同。 示例1 :已知(A)=3CH、(R1)=0A9H和Cy=1。执行以下命令时,a和Cy的值分别为多少? 参加ADDCA,R1,解:1(a )=3ch 00111100 (r1)=0a9h 1010100110110110110 cy运算的结果,(A)=11100110,Cy=0。 编制计算、例2:23aa9h0ef7h的程序,将结果存储在内部RAM41H和40H单元中,40H是8比特,41H是8比特高。 解:两个16位(双字节)的加法可以分两个阶段完成,第一步骤首先加上低8位,第二步骤加上高8位。 即A9H F7H=A0H、Cy=123H 0EH Cy=32H、Cy=0程序: MOVA、#0A9H; 被加数后8位A9HAADDA、#0F7H; 在相加数较低8位F7H上加上MOV40H、a的下位8位之和40H单元、MOVA、#23H; 被加数前8名AADDCA、#0EH; 加上高位8位和进位的MOV41H、a加上高位8位之和对41H小区加上1命令INCA的INCRn; INCdirect; INCRi; INCDPTR; 的双曲馀弦值。 此类指令是单操作数指令,即使操作数的内容加上1也会返回其中。 例如,(R0)=70H、(70H)=41H、(71H)=56H,执行以下命令的结果是什么? (1)INCR0(2)INCR0INCR0解析:执行后(1)(R0) 1=(70H) 1=41H 1=42H,即(70H)=42H(2)(R0) 1=70H 1=71H,即(R0)=71H(R0) 1=(71H) 1=56H 1=57H,即修正a中的BCD代码加法运算结果。 此命令不适用于减法。 例如,将两个4位的BCD码相加,将相加的数据以压缩的BCD码从上到下存储在存储单元中,将相加的数据存储在RAM的31H、30H、相加的数据存储在38H、39H中,存储在4EH、4FH中,以防止溢出。参考步骤为MOVA、30H。加法运算的BCD代码的后2位为AADDA、39H。加法运算的BCD代码的后2位加上DAA。十进制调整MOV4FH、a; 低位2位和值存在于50H、MOVA、31H,相加后的高位2位是在AADDCA、38H正的高位2位上加上DAA的十进制调整MOV4EH、a; 前2位和值为51H2.减法系统指令中存在减法指令SUBBA,Rn的A(A)-(Rn)-(Cy)SUBBA,direct; a- (direct )-(cy ) subba、Ri; a-(ri ) )-(cy ) subba,#data; A(A)-data-(Cy )其中进位标志Cy是进位的作用。 注意:减法指令中没有不欠位的减法指令,必要时必须将Cy清零。 指令执行结果全部在存储器a中。 减法指令的结果影响程序状态字寄存器PSW的Cy、OV、AC、p标志。 例如,设置2字节无符号数的减法,从上到下依次保存被减数为51H、50H、减数为59H、58H、差为51H、50H。 参考步骤: CLRC归零操作是使Cy=0MOVA、50H位操作命令即下位8位被减数ASUBBA、58H; 下位8位减法运算MOV50H、a; 差异保存在50H、MOVA、51H中前8位被减数ASUBBA、59H; 高度8位减法运算MOV51H、a; 差异存储在51H负1指令DECA中A(A)-1DECRn; rn-1直流; direct(直接)-1 dec ri; (Ri)(Ri)-1减1命令将指定地址或单元格的内容减1,结果将保留在原始单元格中,不影响标志位。 例如,(A)=0FFH、(R0)=50H、(50H)=0AH,下述命令的执行结果是什么(1)DECA(2)DECR0(3)DECR0解:执行结果是(1) (a )=0f hh-1=0f feh (2) (50 h )=0ah-1=09 h (3) (r0)=50 b (高位8比特)、a (低位8比特)(A)(B)4.除法命令DIVAB; b (馀数)、a (整数)(a )、(b )的乘法运算影响OV、Cy、p标志,在b的值为0的情况下,执行结果成为不确定的值,溢出标志OV为1,表示这次的除法运算没有意义。 例如,试制程序完成(1)100d55d,将结果保存在60H (高位8比特)、61H (低位8比特)2)240d55d中,将结果保存在60H (整数)、61H (小数)中。 程序(1)MOVA、#100; 十进制数字由乘数分配给AMOVB,#55。十进制数字由给予BMULAB的两个数字乘以MOV60H,b的乘积的8位高达60HMOV61H,a,其传送RAM; 积的下位8比特传送RAM的61H、程序(2)MOVA、#0F0H; 执行将0F0H(240 )发送到累加器AMOVB、#37H而将37H(55 )发送到寄存器BDIVAB的除法指令MOV60H、a的商的整数进给内部RAM的60H单元MOV61H、b; 馀数进给61H、2.4逻辑运算系统命令、1 .逻辑移位命令环左移位命令RLA; 循环右移位命令RRA,累加器的每一位依序向左移位1位,累加器的每一位依序向右移位1位,且具有进位位循环的左移位命令RLCA; 带进位比特环的右移位命令RRCA; 执行加位循环移位指令前,根据程序的需要清除Cy的位置或零。 如果Cy=0,则RLC命令对应于1、A2,并且RRC命令对应于1、A2。 例如:导出以下命令的执行结果。 (1)CLRCMOVA,#05HRLCA解析: (A)=00001010(2)CLRCMOVA,#80HRRCA解析: (A)=01000000,#2.逻辑运算命令逻辑and命令ANLA,Rn; A(A)(Rn)ANLA、direct; A(A)(direct)ANLA、Ri; A(A)(Ri)ANLA、#data; adataanldirect,a; A(direct)(A)ANLdirect,#data; a(direct)data“and”指令常用于将字节的特定指定位清零,可以保存其他位的值。 例如,ANLA、#0FH清除a的前4位,并保留后4位的值。 逻辑or命令ORLA、Rn; a(rn ) orla,direct; A(A)(direct)ORLA、Ri; A(A)(Ri)ORLA、#data; dataorldirect,a; A(direct)(A)ORLdirect,#data; a(direct)dataor”指令常用于字节的特定指定位置1,可保持其他位的值。 例如,ORLA、#0FH将a的低位4位设为1,保持高位4位的值。逻辑异或命令XRLA、Rn; aaxrla、direct; a、direct xrla、Ri; a、xrla、#data; a、dataxrldirect,a; a(direct)(a)xrlredirect,#data; adata利用异或运算的特征,可将操作数反转而比较两个个数是否相等。 例如,对

温馨提示

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

评论

0/150

提交评论