单片机汇编语言

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
20112011-9-25 14
以直接地址为目的操作数的指令( 3.3.3 以直接地址为目的操作数的指令(5条) direct, MOV direct,A direct, MOV direct,Rn direct1, MOV direct1,direct2 direct, MOV direct,@Ri direct, MOV direct,#data 这组指令功能是把源操作数指定 源操作数指定的内容送入由直接 这组指令功能是把源操作数指定的内容送入由直接 地址指出的片内存储单元。 地址指出的片内存储单元。 例: MOV 20H,A
20112011-9-25
DPH, MOV DPH,#35H DPL,#12H。 MOV DPL,#12H。 DPTR,#3512H。 MOV DPTR,#3512H。
17
累加器A与片外RAM之间的数据传递类指令(4 RAM之间的数据传递类指令(4条 3.3.6 累加器A与片外RAM之间的数据传递类指令(4条) MOVX MOVX MOVX MOVX A,@Ri @Ri,A A,@DPTR @DPTR,A
20112011-9-25 18
2.要读或写外部的RAM,当然也必须要知道RAM的地址, 2.要读或写外部的RAM,当然也必须要知道RAM的地址, 要读或写外部的RAM RAM的地址 在后两条指令中,地址是被直接放在DPTR中的。 DPTR中的 在后两条指令中,地址是被直接放在DPTR中的。而前两条 指令,由于Ri Ri( R0或R1)只是8位的寄存器, 指令,由于Ri(即R0或R1)只是8位的寄存器,所以只提 供低8位地址。 位地址由P2 来提供。 P2口 供低8位地址。高8位地址由P2口来提供。 3.使用时应先将要读或写的地址送入DPTR或Ri中 使用时应先将要读或写的地址送入DPTR 3.使用时应先将要读或写的地址送入DPTR或Ri中,然后 再用读写命令。 再用读写命令。 将外部RAM 100H单元中的内容送入外部RAM中 RAM中 单元中的内容送入外部RAM 例:将外部RAM中100H单元中的内容送入外部RAM中200H 单元中。 单元中。 DPTR, MOV DPTR,#0100H A, MOVX A,@DPTR DPTR, MOV DPTR,#0200H @DPTR, MOVX @DPTR,A
6
如:MOVC A,@A+DPTR 设DPTR=2000H,A=E0H
程序存储区 2040H 2041H 指令代码 … 20E0H 93 … … ALU 47 20E0H A 47 E0 DPH DPL 20 00
20112011-9-25
7
如:MOVC A,@A+PC 设A=E0H
程序存储区 2040H 2041H 83 … … 47 45 ALU 2121H
操作数就包含在指令代码中,在操作码之后, 操作数就包含在指令代码中,在操作码之后,称为 立即数,用“#”表示。 立即数, 表示。 MCSMCS-51 如:MOV P1, #80H MOV R7, #0F5H MOV DPTR,#1245H DPTR,
20112011-9-25 3
3.2. 2
寄存器寻址
ADDC A,
DJNZ R1, LOOP ;相对转移 SJMP NEXT MOV R0, #03H NEXT: DEC R0 SJMP $ END ;HERE: ; 结束标记
003B 80FE SJMP HERE
§3.2 寻址方式 3.2.1 立即寻址
操作数存在程 序存储器中
Immediate Addressing
20112011-9-25
16
十六位数的传递指令(1条) 3.3.5 十六位数的传递指令 MOV DPTR, DPTR,#data16 8051是一种8位机,这是唯一的一条16位 8051是一种8位机,这是唯一的一条16位立即数传递指 是一种 16 功能:将一个16位的立即数送入DPTR中去。 16位的立即数送入DPTR中去 令。功能:将一个16位的立即数送入DPTR中去。其中 位送入DPH DPH, 位送入DPL DPL。 高8位送入DPH,低8位送入DPL。 DPTR, 例:MOV DPTR,#1234H 执行完了之后DPH中的值为12H,DPL中的值为34H。 执行完了之后DPH中的值为12H,DPL中的值为34H。 DPH中的值为12H 中的值为34H 如果我们分别向DPH,DPL送数,则结果也一样。 如果我们分别向DPH,DPL送数,则结果也一样。 DPH 送数 如下面两条指令: 如下面两条指令: 则就相当于执行了
20112011-9-25
4
寄存器间接寻址 Register Indirect Addressing 3.2.4Βιβλιοθήκη Baidu
把地址放在另外一个寄存器中, 把地址放在另外一个寄存器中,根据这个寄存器中的数值 决定该到哪个单元中取数据。 决定该到哪个单元中取数据。 R0,R1----8位地址,片内低128字节或片外 R0,R1----8位地址,片内低128字节或片外 字节或 DPTR----16位 片外64KB ----16 DPTR----16位,片外64KB MCSMCS-51
以DPTR或PC为基址寄存器,累加器A为变址寄存器。把两 DPTR或PC为基址寄存器,累加器A为变址寄存器。 为基址寄存器 者内容相加,结果作为操作数的地址。 者内容相加,结果作为操作数的地址。 常用于查表操作。 常用于查表操作。 操作数在程 序存储器中 MCSMCS-51 MOVC A, @A+DPTR ;(A+DPTR) →A →PC, MOVC A, @A+PC ; PC+1 →PC,(A+PC)→A
3.3.2 以寄存器Rn为目的操作数的指令 (3条) 以寄存器Rn为目的操作数的指令 Rn Rn, MOV Rn,A Rn, MOV Rn,direct MOV Rn,#data Rn,
这组指令功能是把源操作数指定的内容送入当前工作寄存器, 这组指令功能是把源操作数指定的内容送入当前工作寄存器, 源操作数指定的内容送入当前工作寄存器 源操作数不变。 源操作数不变。
MOV MOV MOV MOV MOV
20112011-9-25
20H,R1 20H,30H 20H,@R1 0A0H,#34H P2,#34H
15
3.3.4 以间接地址为目的操作数的指令(3条) Ri, ;A →(Ri) MOV @Ri,A Ri, ;(direct) →(Ri) MOV @Ri,direct Ri, ; data →(Ri) MOV @Ri,#data 功能:把源操作数指定的内容送入以R0 R1为地址 R0或 功能:把源操作数指定的内容送入以R0或R1为地址 指针的片内存储单元中。 指针的片内存储单元中。 @R0, 例: MOV @R0,A @R1, MOV @R1,20H MOV @R0,#34H @R0,
说明: 1.在51中,与外部存储器RAM打交道的只可以是A累加器。所有 需要送入外部RAM的数据必需要通过A送去,而所有要读入的外部 RAM中的数据也必需通过A读入。 在此我们可以看出内外部RAM的区别了,内部RAM间可以直接进 行数据的传递,而外部则不行。 比如,要将外部RAM中某一单元(设为0100H单元的数据)送入 另一个单元(设为0200H单元),也必须先将0100H单元中的内容读 入A,然后再送到0200H单元中去。
片内RAM:@R0,@R1,SP 片内RAM:@R0,@R1,SP 寄存器间接寻址 片外RAM:@R0 片外RAM:@R0 ,@R1,@DPTR 程序存储器:@A+PC,@A+DPTR 程序存储器:@A+PC,@A+DPTR 变址寻址 相对寻址 位寻址
20112011-9-25
程序存储器256字节范围内:PC+ 程序存储器256字节范围内:PC+偏移量 256字节范围内:PC+偏移量 片内RAM的位寻址区(20H 2FH字节地址 RAM的位寻址区(20H~ 字节地址) 片内RAM的位寻址区(20H~2FH字节地址) 某些可位寻址的SFR 某些可位寻址的SFR
Register Addressing 对选定的工作寄存器R0~R7、累加器A 通用寄存器B 对选定的工作寄存器R0~R7、累加器A、通用寄存器B、 R0 地址寄存器DPTR中的数进行操作。 DPTR中的数进行操作 地址寄存器DPTR中的数进行操作。 A,R0; R0工作寄存器中的数据送到累加器 中去。 工作寄存器中的数据送到累加器A 例:MOV A,R0;将R0工作寄存器中的数据送到累加器A中去。
操作数在片内 RAM位地址区或 SFR某些位中
20112011-9-25
11
寻址方式涉及的存储器空间
寻址方式 立即寻址 直接寻址 寄存器寻址 寻址空间(操作数存放空间) 寻址空间(操作数存放空间) 程序存储器 片内RAM 128字节、 片内RAM低128字节、SFR RAM低 字节 工作寄存器R0 工作寄存器R0~R7,A,B,DPTR R0~
12
§3.3
29条 数据传送类指令(29条)
Data Transfer Instruction MCS助记符: MCS-51 助记符: 助记符: 助记符: MOV、MOVX、 MOV、MOVX、MOVC XCH、XCHD、 XCH、XCHD、SWAP PUSH、 PUSH、POP
除了目的操作数为ACC的指令影响奇偶标志P 除了目的操作数为ACC的指令影响奇偶标志P外,一般不影响 ACC的指令影响奇偶标志 标志位。 标志位。
20112011-9-25
13
以累加器为目的操作数的指令( 3.3.1 以累加器为目的操作数的指令(4条) MOV MOV MOV MOV
;Rn→A ;(direct)→A ;(Ri)→A ;data→A 源操作数指定内容送到 送到A 将源操作数指定内容送到A中。
A, A,Rn A, A,direct A, A,@Ri A, A,#data
1
汇编语言格式: 汇编语言格式:
地址 始地址 0000 地址 0030 标号 0031 0032 0033 0034 0036 0038 003A C3 E6 37 08 DA FB 80 78 18 03 03 MAIN: CLR C LOOP: MOV INC A , @R0 @R1 R0 ; MAIN为程序 为程序 20 00 30 LJMP MAIN ORG 0030H ; 跳向主程序 ; 主程序起始 机器码 源程序 ORG 0000H 注释 ; 整个程序起
8
指令代码
A 45 E0
当前PC …
2120H 2121H
20112011-9-25
改变PC
3.2.6 相对寻址
Relative Addressing
将PC中的当前内容与指令第二字节给出的数相加,结 PC中的当前内容与指令第二字节给出的数相加, 中的当前内容与指令第二字节给出的数相加 果作为跳转指令的转移地址(转移目的地址)。 果作为跳转指令的转移地址(转移目的地址)。 PC中的当前内容称为基地址(本指令后的字节地址) 中的当前内容称为基地址 PC中的当前内容称为基地址(本指令后的字节地址) 指令第二字节给出的数据称为偏移量 偏移量, 字节带符号数. 指令第二字节给出的数据称为偏移量,1字节带符号数. 常用于跳转指令。 常用于跳转指令。 如: JC 23H C=0,不跳转; C=1,跳转. 若C=0,不跳转; C=1,跳转.
第三章 MCS-51指令系统 Instruction Set
§3.1 概述
51单片机汇编指令有数据传送指令,算术运算 单片机汇编指令有数据传送指令 算术运算 单片机汇编指令有数据传送指令 指令,条件转移指令及子程序调用指令 条件转移指令及子程序调用指令等 指令 条件转移指令及子程序调用指令等。
20112011-9-25
操作数在 片内RAM中 操作数在 片外RAM中 操作数在 片外RAM中
A, 如: MOV A,@R0 A, MOVX A,@R0 MOVX A,@DPTR A,
20112011-9-25
5
3.2.5
变址寻址(基址+变址) 变址寻址(基址+变址)
Base-Register-plus-Index-Register-Indirect Addressing
20112011-9-25
9
如:JC
23
指令代码
程序存储区 1000H 1001H 1002H 40 23 30 … 47 45
当前PC
… 1024H 1025H
23H
1002H ALU 1025H
20112011-9-25
10
3.2.7 位寻址 Bit Addressing
对片内RAM的位寻址区和某些可位寻址的特殊功 对片内RAM的位寻址区和某些可位寻址的特殊功 RAM 和某些可位寻址 能寄存器进行位操作时的寻址方式。 能寄存器进行位操作时的寻址方式。 如: SETB CLR 27H.5位置 位置1 3DH; 将27H.5位置1 C ;Cy位清0 Cy位清0 位清
相关文档
最新文档