第三章 MCS-51单片机指令系统
第三章 MCS-51单片机指令系统
3.1MCS-51单片机指令格式 条汇编语言指令中最多包含4个区段,如下所示: 标号:操作码目的操作数,源操作数;注释 标号与操作码之间“:隔开; 操作码与操作数之间用“空格”隔开: 目的操作数和源源操作数之间有“,”分隔; 操作数与注释之间用“;”隔开
3.1 MCS-51单片机指令格式 一条汇编语言指令中最多包含4个区段,如下所示: • 标号:操作码 目的操作数,源操作数 ;注释 • 标号与操作码之间“:”隔开; • 操作码与操作数之间用“空格”隔开; • 目的操作数和源源操作数之间有“ , ”分隔; • 操作数与注释之间用“ ; ”隔开
1MCS-51单片机指令格式 标号是由用户定义的符号组成,必须用英文大写字母 开始。标号可有可无,若一条指令中有标号,标号代表该 指令所存放的第一个字节存储单元的地址,故标号又称为 符号地址,在汇编时,把该地址赋值给标号。 操作码是指令的功能部分,不能缺省。MCS51指令系统 中共有42种助记符,代表了33种不同的功能。例如MOV是 数据传送的助记符。 操作数是指令要操作的数据信息。根据指令的不同功 能,操作数的个数有3、2、1或没有操作数。例如MOVA, #2OH,包含了两个操作数A和#20H,它们之间用“,”隔 开。注释可有可无,加入注释主要为了便于阅读,程序设 计者对指令或程序段作简要的功能说明,在阅读程序或调 试程序时将会带来很多方便
3.1 MCS-51单片机指令格式 标号是由用户定义的符号组成,必须用英文大写字母 开始。标号可有可无,若一条指令中有标号,标号代表该 指令所存放的第一个字节存储单元的地址,故标号又称为 符号地址,在汇编时,把该地址赋值给标号。 操作码是指令的功能部分,不能缺省。MCS—51指令系统 中共有42种助记符,代表了33种不同的功能。例如MOV是 数据传送的助记符。 操作数是指令要操作的数据信息。根据指令的不同功 能,操作数的个数有3、2、1或没有操作数。例如MOV A, #20H,包含了两个操作数A和#20H,它们之间用“ , ”隔 开。注释可有可无,加入注释主要为了便于阅读,程序设 计者对指令或程序段作简要的功能说明,在阅读程序或调 试程序时将会带来很多方便
寻址方式 所谓寻址方式,通常是指某一个CP指令系统中规 定的寻找操作数所在地址的方式,或者说通过什么的 方式找到操作数。寻址方式的方便与快捷是衡量CPU性 能的一个重要方面,MCS51单片机有七种寻找方式
3.2 寻址方式 所谓寻址方式,通常是指某一个CPU指令系统中规 定的寻找操作数所在地址的方式,或者说通过什么的 方式找到操作数。寻址方式的方便与快捷是衡量CPU性 能的一个重要方面,MCS—51单片机有七种寻找方式
3.2.1立即数寻址 立即寻址方式是操作数包括在指令字节中,指令 操作码后面字节的内容就是操作数本身,其数值由程 序员在编制程序时指定,以指令字节的形式存放在程 序存储器中。立即数只能作为源操作数,不能当作目 的操作数 例如:MOVA,#52H ;A<-52H MOV DPTR, #5678H: DPTR<-5678H 立即寻址示意图如3.1所示
3.2.1 立即数寻址 立即寻址方式是操作数包括在指令字节中,指令 操作码后面字节的内容就是操作数本身,其数值由程 序员在编制程序时指定,以指令字节的形式存放在程 序存储器中。立即数只能作为源操作数,不能当作目 的操作数。 例如: MOV A,#52H ;A52H MOV DPTR,#5678H ;DPTR5678H 立即寻址示意图如3.1所示
程序存储器 程序存储器 SFR PC[01100d操作码 PC10010码 PC+10101001d立即数 PC+1[01010110高位立即数 56HDPH PC+210110数78H」DL 52H 累加器A (a) MOV A,#52H (b) MOV DPTR,#5678H 图3.1立即寻址示意图
• 图3.1 立即寻址示意图
2直接寻址 在指令中含有操作数的直接地址,该地址指出了参与 操作的数据所在的字节地址或位地址 例如: MOVA,52H;把片内RAM字节地址52H单元的内 容送累加器A中。 MOV52H,A;把A的内容传送给片内RAM的52H 单元中。 MOV50H,60H;把片内RAM字节地址60H单元的内 容送到50H单元中。 MOV IE,#40H;把立即数40H送到中断允许寄存器 IE。I为专用功能寄存器,其字节 地址为0A8H。该指令等价于MOV 0A8H,#40H。 INC 6OH ;将地址60H单元中的内容自加1
3.2.2 直接寻址 在指令中含有操作数的直接地址,该地址指出了参与 操作的数据所在的字节地址或位地址。 例如: MOV A,52H ;把片内RAM字节地址52H单元的内 容送累加器A中。 MOV 52H,A ;把A的内容传送给片内RAM的52H 单元中。 MOV 50H,60H ;把片内RAM字节地址60H单元的内 容送到50H单元中。 MOV IE,#40H ;把立即数40H送到中断允许寄存器 IE。IE为专用功能寄存器,其字节 地址为0A8H。该指令等价于MOV 0A8H,#40H。 INC 60H ;将地址60H单元中的内容自加1
程序存储器 内部RAM PC|11100101操作码 PC+10100直接地址一cLx EOH XXH累加器A MOV A, 52H 图3.2直接寻址方式示意图
图3.2直接寻址方式示意图
3.2.3寄存器寻址 由指令指出某一个寄存器中的内容作为操作数, 这种寻址方式称为寄存器寻址。寄存器一般指累加器A 和工作寄存器R0R7。例如: MOVA,Ran;A<(Rn)其中n为07之一, Rn是工作寄存器 MOV Rn, A Rnt(A) MOV B, A ;B<(A)
3.2.3 寄存器寻址 由指令指出某一个寄存器中的内容作为操作数, 这种寻址方式称为寄存器寻址。寄存器一般指累加器A 和工作寄存器R0~R7。例如: MOV A,Rn ;A(Rn) 其中n为0~7之一, Rn是工作寄存器。 MOV Rn,A ;Rn(A) MOV B,A ;B(A)
3.2.4寄存器间接寻址方式 由指令指出某一个寄存器的内容作为操作数,这种 寻址方式称为寄存器间接寻址。寄存器间接寻址只能使 用寄存器Ro或R1作为地址指针,来寻址内部RAM(OOH FF)中的数据。寄存器间接寻址也适用于访问外部RAM, 可使用R0,R或DPTR作为地址指针。寄存器间接寻址用 符号“@”表示 例如: MOV RO, #60H: R0<-60H MOV A, @RO ((RO) MOV A, @RI AA ((R1) 例如: MOV DPTR,#3456H;DPTR←3456H MOVX A,@DPTR;A←((DPTR))是把 DPTR寄存器所指的那个外部数据存储器(RAM)的内容传 送给A,假设(3456H)=99H,指令运行后(A)=99H
3.2.4 寄存器间接寻址方式 由指令指出某一个寄存器的内容作为操作数,这种 寻址方式称为寄存器间接寻址。寄存器间接寻址只能使 用寄存器Ro或Rl作为地址指针,来寻址内部RAM(00H~ FFH)中的数据。寄存器间接寻址也适用于访问外部RAM, 可使用R0,Rl或DPTR作为地址指针。寄存器间接寻址用 符号“@”表示。 例如: MOV R0,#60H ;R060H MOV A, @R0 ;A ((R0)) MOV A ,@R1 ;A ((R1)) 例如:MOV DPTR,#3456H ;DPTR3456H MOVX A,@DPTR ;A ((DPTR))是把 DPTR寄存器所指的那个外部数据存储器(RAM)的内容传 送给A,假设(3456H)=99H,指令运行后(A)=99H