版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2022-6-181本章内容本章内容寻址方式 指令的分类、格式及符号说明 分类指令 掌握MCS-51指令系统的各种寻址方式掌握每条指令的格式、功能及用法掌握指令的操作过程中操作数的变化情况以及对标志位的影响。学会正确选用指令完成简单的任务学习目的学习目的 MCS-51指令系统共有255种操作代码,用汇编语言表达时,只需熟记42种助记符就能表示33种指令功能共111条指令。 3.1.1 寄存器寻址 以寄存器的内容为操作数的寻址方式。 可进行寄存器寻址的寄存器有:工作寄存器R0R7、A、B、DPTR和进位CY。MOV A , R0 ;A R0R0(35H)A结果结果A=35H 指令码中直接含有所需
2、的操指令码中直接含有所需的操作数,操作数字前加作数,操作数字前加“#”“#”符号为符号为前缀。以区别直接地址。使用时一前缀。以区别直接地址。使用时一定要注意!定要注意! 3.1.2 立即寻址立即寻址 功能:功能:(1 1)将片内将片内RAM中中44H单元单元 的内容送累加器的内容送累加器A,属于直属于直 接寻址;接寻址; (2 2)则是把则是把44H这个数本这个数本 身送到累加器身送到累加器A,属于立即寻址。属于立即寻址。 (1)MOV A,44H ;A (44H) (2)MOV A, #44H ;A 44H 直接寻址指令的指令码中含直接寻址指令的指令码中含有操作数地址。有操作数地址。 3.1
3、.3 直接寻址功能:将片内RAM 56H单元中的内容34H送到累加器A中。如左图3.1MOV A,56H ;A (56H) 机器码:E5 5634H片内RAM 34H累加器A56H 图3.1 指令传递 3.1.4 寄存器间接寻址 指令指定寄存器中的内容为操作数的地址。 工作寄存器R0、R1和专用寄存器DPTR可用于间接寻址,在寄存器前加“”符号作前缀。MOV A,R0 ;A R0MOV A,R0;A (R0)例如:R065H,65H26H如图3.2所示,执行结果A65H,执行结果A26H。注意:是它区别寄存器寻址的标志。26H片内RAMA 65H 图3.2 R065H3.1.5 相对寻址 相对
4、寻址是将程序计数器相对寻址是将程序计数器PCPC中的中的当前内容与指令第二字节所给出的数当前内容与指令第二字节所给出的数相加,其和为跳指令的转移地址。相加,其和为跳指令的转移地址。 程序存储器A图3-3 指令过程 PC 26H0000H2000H2001H 80H 26H 2028H02H 20H A L U2002H3.1.6 变址寻址 以DPTR和PC基址寄存器和累加器A变址寄存器的内容和为地址,寻址该地址单元,读取数据。 (1)MOVCA,APC;A(APC)(2)MOVCA,ADPTR ; A(ADPTR) 执行第一条时先使当前执行第一条时先使当前PC值加值加1,然后把,然后把这个加这
5、个加1后的后的PC值和累加器值和累加器A中的偏移量相加中的偏移量相加,作为操作数地址,从该地址中取出操作数送,作为操作数地址,从该地址中取出操作数送入入A中。第二条过程与第一条指令类似,例如中。第二条过程与第一条指令类似,例如: 已知已知:片外片外ROM的的2006H单元中有一数单元中有一数34H,编写程序用变址寻址方法把这个数送入编写程序用变址寻址方法把这个数送入A中,试进中,试进行分析。行分析。 解:根据题目要求,基址可定为解:根据题目要求,基址可定为2000H,地地址偏移量则为址偏移量则为06H,程序如下:程序如下:MOVDPTR,2000H ;DPTR2000HMOVA,06H ;A0
6、6HMOVCA,ADPTR ;A34H程序存储器A 图3.4 DPTR20 06H0000H34H 2006H 00H A L U 如图如图3.4所示所示,这里这里A具有双重作用,在具有双重作用,在指令执行前用来存放地址偏移量,指令执行指令执行前用来存放地址偏移量,指令执行后为目的操作数。后为目的操作数。 3.1.7 位寻址 3.2.1 指令格式 操作码操作码用用MCS-51单片机所规定的助记符来单片机所规定的助记符来表示,它命令表示,它命令CPU作何种操作。作何种操作。 注释注释是对该指令作用或功能的说明,以便是对该指令作用或功能的说明,以便于阅读,不参与编译于阅读,不参与编译(可有可无,不
7、是必备的可有可无,不是必备的)。注释部分前一定要用分号注释部分前一定要用分号“;”隔开。隔开。操作数操作数分为目的操作数和源操作数,常用符分为目的操作数和源操作数,常用符号号(如寄存器、标号如寄存器、标号)、常量、常量(如立即数、地址值等如立即数、地址值等)来表示。操作码和操作数之间用若干空格分隔,来表示。操作码和操作数之间用若干空格分隔,而目的操作数和源操作数之间用逗号而目的操作数和源操作数之间用逗号“,”分隔。分隔。3.2.2 指令的三种表达形式 通常,指令有二进制,十六制和助记符等三通常,指令有二进制,十六制和助记符等三种表示形式种表示形式 1) 指令的二进制形式指令的二进制形式 具有难
8、读、难写、难记忆和难修改等缺点,因具有难读、难写、难记忆和难修改等缺点,因此人们通常不用它来编写程序。此人们通常不用它来编写程序。2) 指令的十六进制形式指令的十六进制形式 虽然读写方便,但仍不易为人们识别和修改,虽然读写方便,但仍不易为人们识别和修改,通常也不被用来编写程序,通常也不被用来编写程序,3) 指令的助记符形式指令的助记符形式 又称为指令的汇编符或汇编语句形式,是一种又称为指令的汇编符或汇编语句形式,是一种由英文单词或缩写字母形象表征指令功能的形式由英文单词或缩写字母形象表征指令功能的形式。 如果累加器如果累加器A中已有一个加数中已有一个加数20,那么能够完,那么能够完成成206并
9、把结果送入累加器并把结果送入累加器A的加法指令的的加法指令的:二进制形式二进制形式为为: 0011100000000110B;十六进制形式十六进制形式为为: 3806H;助记符形式助记符形式为:为: ADDA,06H ;A A+06H3.2.3 指令的字节数 1 1)无操作数单节指令)无操作数单节指令 这类指令的指令码有操作码字段和专门用来这类指令的指令码有操作码字段和专门用来指示操作数所在寄存器号的字段组成。指示操作数所在寄存器号的字段组成。 例如:八位数传送指令例如:八位数传送指令 MOVA,Rn其中,其中,n的取值范围为的取值范围为07。2 2)含有操作数寄存器号的单字节指令)含有操作数
10、寄存器号的单字节指令 双字节指令含有两个字,操作码字节在前,双字节指令含有两个字,操作码字节在前,操作数字节在后。操作数字节在后。 例如:八位数传送指令例如:八位数传送指令 MOV A , data ;Adata 这条指令的含义是指令码第二字这条指令的含义是指令码第二字节节data取出来存放到累加器取出来存放到累加器A中中 这类指令的指令码的第一字节为操作码,第这类指令的指令码的第一字节为操作码,第 二字节为操作数或操作数地址。二字节为操作数或操作数地址。 故三字节指令共可有如下四类故三字节指令共可有如下四类: :3.2.4 指令的分类及符号说明 MCS-51单片机可以分为五类:单片机可以分为
11、五类:1.指令分类指令分类2)算术运算指令算术运算指令4)位操作指令位操作指令3)逻辑运算指令逻辑运算指令1)数据传送指令数据传送指令5)控制转移指令控制转移指令(1)Rn:表示当前选中的寄存器区的表示当前选中的寄存器区的8个个工作寄存器,工作寄存器,(n=0-7)中的一个。中的一个。(2)Ri:表示寄存器间接寻址,表示寄存器间接寻址,Ri只能只能 是是R0或或R1。 (3)#data:8位直接数据,实际使用时位直接数据,实际使用时 data应是应是00H-0FFH中的一个。中的一个。(4)#data16:表示包含在指令中的表示包含在指令中的16位立位立 即数。即数。(5)direct:表示表
12、示8位内部数据存储器单位内部数据存储器单 元的地址。元的地址。(6)Addr16:表示表示16位的目的地址。位的目的地址。(7)Addr11:表示表示11位的目的地址。位的目的地址。(8)Rel:表示表示8位带符号的偏移量。位带符号的偏移量。(9)DPTR:为数据指针,可用作为数据指针,可用作16位位 的地址寄存器。的地址寄存器。 (10)Bit:表示内部表示内部RAM或专用寄存器中或专用寄存器中 的直接寻址位。的直接寻址位。(11)A:累加器累加器ACC。(12)B:专用寄存器,用于专用寄存器,用于MUL和和DIV指指 令中。令中。(13):为间址寄存器或基址寄存器的前:为间址寄存器或基址寄
13、存器的前 缀。如缀。如Ri, A+PC,A+DPTR。(14)/:位操数的前缀,表示对该位操作位操数的前缀,表示对该位操作 数取反。如数取反。如/bit.(15)$:当前指令的地址。当前指令的地址。内部数据传送指令(内部数据传送指令(15条)条) 这类指令的源操作数和目的操作这类指令的源操作数和目的操作数地址都在单片机内部。数地址都在单片机内部。3.2.5 数据传送指令已知:已知:R030H,试问执行如下指令后试问执行如下指令后累加器累加器A、R3、30H、31H单元中内容各是什么?单元中内容各是什么?MOV A, #20HMOV R3, #45HMOV R0, #46HMOV 31H, #4
14、7H执行后,结果为执行后,结果为: A=20H, R3=45H, (30H)=46H, (31H)= 已知:已知:(30H)=12H、(31H)=13H、R0=30H、R1=31H,试问执行以下指令后试问执行以下指令后A、30H、31H和和32H各是什么?各是什么? MOV A , R0 MOV R1,A MOV R0, #34h MOV 32h , R1执行后,A=12H ,30H=34H ,31H=12H ,32H=12H PUSHdirect ;SP SP+1,(SP) (direct)POP direct ;(SP) direct, SP SP-1 第一条指令称为压栈指令,用于把dir
15、ect为地址的操作数传送到堆栈中去。 第二条指令称为出栈指令。 已知:(20H)=M1,(50H)=M2编程用堆栈指令把20H和50H单元中内容相交换。解:由堆栈所具备的原则,程序为:MOV SP ,#60H;栈底首地址为60HPUSH20H;SPSP1,61HM1PUSH50H;SPSP1,62HM2POP 20H ;20M2,SPSP-1=61H 该类指令是其核心,总共该类指令是其核心,总共49条,分为算术运算指令,逻辑运条,分为算术运算指令,逻辑运算和移位指令等三大类。算和移位指令等三大类。3.2.6 算逻运算和移位指令1、加法指令(13条)(1)不带进位位(Cy)加法(4条)ADD A
16、, Rn ADD A, directADD A, RjADD A, #data 例例 3.10A= 0 1 0 1 1 0 1 0 Bdata= 0 1 1 0 1 0 1 1 B 90107+ ) 1 1 1 0 0 0 1 0 1 B 1CS1970CP 1AC2.带进位位(Cy)加法(4条)ADDC A, RnADDC A, #dataADDC A, directADDC A, Ri3.加1指令(5条) INCA;AA1INCRn;RnRn1INCdirect;(direct)(direct)1INCRi;(Ri)(Ri)1INCDPTR;DPTRDPTR12、减法指令(8条)1)带进位
17、位()带进位位(Cy)减法指令减法指令(4条条)000 0011CyACF0Rs1 Rs0OV1P2 2)减)减1 1指令(指令(4 4条)条)DEC A ;AA-1DEC Rn ;RnRn-1DEC direct ;direct(direct)-1DEC Ri ;(Ri)(Ri)-11. BCD加法加法对对A中两个压缩中两个压缩BCD数相加之和调整为数相加之和调整为2位位BCD码数。码数。1)只能用在对)只能用在对BCD码数进行码数进行ADD或或ADDC操操 作后使用。作后使用。2)影响标志位:有进位时)影响标志位:有进位时 C1。A= 0 1 0 0 0 1 0 0 Bdata=1 0 0
18、 0 0 1 1 0 B 4486+ )0 1 1 0 1 0 0 0 0 B 1 1 0 1 0 0 1 1 0 0 0 0 B 0 1 1 0 0 1 0 1 0 B 130 1 1 0 B 低4位9, 加6调整高4位9,加6调整 MCS51单片机中没有十进制减法调整指令,因此,这里的BCD减法运算必须采用BCD补码运算法则。 例例 3.17 两位BCD数的模100BCD减数加60调整BCD差BCD减数减数的补数 1 0 0 1 1 0 1 0 B0 0 1 0 0 1 0 1 B 1 1 1 1 0 1 0 1 B 1 1 0 1 0 1 0 1 0 1 0 1 B 0 1 1 1 0
19、1 0 1 B 1 0 0 0 0 0 0 0 B +4、乘法和除法指令MULAB ;ABBA ,形成标志 C0积积255 OV1DIVAB ;ABAB,形成标志乘法指令除法指令 C=0除数除数0 OV1除数除数0 OV0 解:求8位无符号单字节乘法,可直接利用乘法指令来实现,程序为: 共共20条,分为与、或、异或、条,分为与、或、异或、A操作指令。操作指令。(一)与指令(一)与指令ANL A,RnANL A,RiANL A,directANL A,#dataANL direct, AANL direct, #data; A A Rn; A A (Ri); A A direct; A A #d
20、ata; direct direct A; direct direct #data(二)或指令(二)或指令 (三)异或指令(三)异或指令例例 3.21(四)累加器清零和取反指令(四)累加器清零和取反指令CPL ACLR A; A A; A 0 解:一个8位带符号二进制机器数的补码可以定义为反码加“1”。为此,相应程序为:ORG 0030HMOV A ,40H ;A34HCPL A ;A/34HINC A ;A34H的补码MOV 40H ,A ;结果送回40H单元SJMP $ ;停止RL A ;RR A ;A7A0ACyA7A0ACyA7A0AA7A0ARLC A ;RRC A ; 解:一个16
21、位二进制数扩大到二倍就等于是把它进行一次算术左移。由于MCS51单元片机的移位指令都是二进制8位的移位指令,因此16位数的移位指令必须用程序来实现。 算法为: M M+1 0 一、控制转移指令一、控制转移指令(17(17条条) )LJMPaddr16 ;Pcaddr16AJMP addr11 ;PcPC+2,PC100arrr11SJMP rel ;PcPC+2,PCPC+relJMP A+DPTR ;PcA+DPTR1、无条件转移指令、无条件转移指令3.2.7控制转移和位操作指令F800HFFFFHF000HF7FFHE800HEFFFHE000HE7FFHD800HDFFFHD000HD7
22、FFHC800HCFFFHC000HC7FFHB800HBFFFHB000HB7FFHA800HAFFFHA000HA7FFH9800H9FFFH9000H97FFH8800H8FFFH8000H87FFH7800H7FFFH7000H77FFH6800H6FFFH6000H67FFH5800H5FFFH5000H57FFH4800H4FFFH4000H47FFH3800H3FFFH3000H37FFH2800H2FFFH2000H27FFH1800H1FFFH1000H17FFH0800H0FFFH0000H07FFH程序存储器程序存储器64K地址空间地址空间MCS-51系列单片机可以在系列
23、单片机可以在64KB地址范围内寻地址范围内寻址,绝对转移指令的转移范围只在址,绝对转移指令的转移范围只在PC当前值当前值所指的所指的2KB地址范围内。地址范围内。一页:一页: 256个地址单元个地址单元一区:一区: 8页,共页,共2KB地址单元;地址高地址单元;地址高5位决定区。位决定区。 64K: 32区,区,256页。页。 长转移指令长转移指令LJMP addr16 ; PC addr16 三字节指令,不影响标志位,可在三字节指令,不影响标志位,可在64KB地址范围内无条件转移。地址范围内无条件转移。 绝对转移指令绝对转移指令二字节指令,可在二字节指令,可在2KB地址范围内转移。地址范围内
24、转移。AJMP addr11 ; PC PC+2,PC10-0 addr11 解:设SZ=4100H,addr11=11010101101B,则根据上述指令码格式可得绝对转移指令的指令码为: addr11 AJMPPCPC+1PC+2ROM2KB 1 1 0 0 0 0 0 1 1 0 1 0 1 1 0 1操作码a9a10a11a7a0PC= 0 1 0 0 0 1 1 0 1 0 1 0 1 1 0 1 B=46ADHPC15 PC11a0 . . 短转移短转移机器码: 80H rel SJMP rel ; PC PC+2+rel . 变址寻址转移指令变址寻址转移指令JMP A+DPTR;
25、 PC A+DPTR机器码:机器码: 73H JZ rel; A=0 PC PC+2+rel A 0 PC PC+2JNZ rel; A0 PC PC+2+rel A=0 PC PC+22、条件转移指令、条件转移指令累加器累加器A判零转移判零转移(2条条) CJNE A, #data, rel ;不相等转移不相等转移;#data=A, PC PC+3, C 0 ;#dataA, PC PC+3+rel, C 1CJNE A, direct,rel;不相等转移不相等转移 ;若若A=(direct) ,则则PCPC+3,C00 ;若若A(direct) ,则则PCPC+3+rel, C00 ;若若Adata ,则则PCPC+3+rel, C00 ;若若Rndata ,则则PCPC+3+rel, C00 ;若若(Ri)data ,则则PCPC+3+rel, C11DJNZ direct, rel ;(direct) (direct)-1 ;若(direct)0,则PCPC+3+rel ;若(direct)=0,则PCPC+3DJNZ Rn, rel;Rn Rn1 ;若Rn=0 则 PC PC+2 ;若Rn0 则PC PC+2+rel减一不为零转移减一不为零转移调用指令调用指令(2条条)ACALL addr11;PC PC+2 ;SP SP+1 ;(SP) PC70 ;S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业电子商务理念
- 八年级英语下学期期中复习(一)
- 会计造假的商业伦理与会计职业道德分析
- 仪器设备技术指标表达成要求设备参数信息表
- 2026届湖北省宜昌市五峰县中考语文猜题卷含解析
- 《道路工程识图与绘图》教学大纲
- 2026 学龄前自闭症入门感统课件
- 鉴赏《日出·印象》
- 《中药学(第2版)》课件16 止血药
- 大棚承包合同
- 人教版五年级语文上册第八单元:《青山处处埋忠骨》教案:通过情境朗读家国情怀引导学生理解担当落实革命文化启蒙培育责任意识与表达素养
- 民法典与医疗法律法规
- 养老社区2025年定位手环协议
- 2026年医学微生物学复习押题宝典通关考试题库附答案详解【突破训练】
- 2026云南楚雄州武定县事业单位选调37人备考题库及答案详解(真题汇编)
- 医疗机构防灾减灾课件
- 高中政治必修+选必核心答题术语(简化版)
- 经典酒店设计案例分析
- (2026春新版)北师大版二年级数学下册全册教学设计
- 三腔二囊管使用课件
- 铁路路基病害
评论
0/150
提交评论