寻址方式与数据传送
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
存储器(@R0,@R1,@DPTR)。
指令选定的寄存器内容就是实际操作数地址(而不是 操作数),这种寻址方式称为寄存器间接寻址。当用R0, R1寄存器间接寻址之前,同样需要有一个确定的工作寄存 器区;并且上述各寄存器中均是有值(操作数地址)的。 有三种指令形式。
操作码
操作码 立即数
操作码 直接地址
例如:MOV @R0,A 这是一条累加器传送指令,在寻址前R0是有值的(有定义的),
DPH DPL
PC
90H
PC+1
80H
PC+2
00H
操作码 OP
指令图2M-O2 V指令DMPOTRV,D#P8T0R0,0H#的80执0行0H过的程执行过程
2.2.2 直接寻址 寻址空间:内部RAM的低128字节和特殊功能寄存器SFR (直接寻址是访问SFR的唯一方式)。
操作码后面的一个字节是实际操作数地址。这种直接在
2.1.2 布尔处理机 为了充分地满足工业控制的需要,MCS-51的设计
者在单片机内部设置了功能很强的位处理机,即布尔 处理机。布尔处理机硬件主要由以下几部分支持: 1.布尔运算器ALU 2.布尔累加器CY(PSW.7) 3.布尔RAM区 4.布尔I/O口 P0~P3口的每位都可独立地进行输入/输出操作,构成 布尔I/O口。 5.布尔指令集 由17条布尔指令组成,可对各种布尔变量进行处理, 如置位、清零、求反、跳转、传送和逻辑运算等。
2.1.3 指令中使用的符号说明 见书上46页
2.2 MCS-51系列单片机寻址方式
2.2.1 立即寻址 立即寻址是指指令中直接给出操作数的寻址方式。指令中
的操作数称为立即数,立即数前面加ຫໍສະໝຸດ Baidu#”以区别直接寻址。8位 的立即数#data,如#30H;16位的立即数#data,如#3000H。要注 意立即寻址与直接寻址区别。
指令中给出操作数真实地址的方式称为直接寻址。指令有三 种形式:
操作码
操作码
操作码
操作数地址
源操作数地址
操作数地址
立即数
目的操作数地址
例如:MOV A,30H
;A←(30H)
这是数据传送指令,30H是内部RAM地址,功能是把
30H单元内容读入A中。注意:立即数字址与直接寻址的区
别,立即数字址是在指令中直接给出操作数直接寻址是在指
注意:偏移量rel是一8位有符号数补码,范围-128~+127。 所以转移范围应在当前PC指针的-128~+127之间某一程序存 储器地址中。
相对寻址一般为双字节或三字节指令。
有三种指令形式。
操作码
操作码
操作码
rel
直接地址
立即数
rel
rel
例如:JNZ rel
;累加器A的内容不等于零则转移。
设rel=23H,指令操作码存放在程序存储器2000H单元,并且在执
PC PC+1
A
93H
操作码
0FH
DPTR 2400H
……
240FH
××
ALU
图2-7 指令MOVC A,@A+DPTR的执行过程
指令 MOVC A,@A+DPTR 的执行过程
2.2.6 相对寻址
寻址空间:程序存储器。用于程序控制,利用指令修正PC 指针的方式实现转移。即以程序计数器PC的内容为基地址,加 上指令中给出的偏移量rel,所得结果为转移目标地址。
它指向目的操作数地址。设:(R0)=30H,则该指令是把累加器 A的内容写入内部RAM的30H单元中;指令执行过程如图4-5所示。
A
PC
F6H
操作码
××
内部 RAM
PC+1
R0
30H
30H × ×
图指2令-5MO指V令M@ORV0,A@的R执0,行A过的程执行过程
例如:MOVX A,@DPTR 这是一条外部数据存储器读指令,在指令寻址前DPTR数据
指针是有值的,它指向外部数据存储器即将访问的一个单元 2000H。当执行指令时,外部数据存储器2000H单元的内容读入 累加器A中,如图4-6所示。
图2-6 指令MOVX A,@DPTR的执行过程
2.2.5 基址+变址间接寻址
寻址空间:程序存储器(@A+DPTR,@A+PC)。
这是MCS-51指令系统特有的一种寻址方式,它以DPTR或
PC作基址寄存器,A作变址寄存器(存放8位无符号数),
两者相加形成16位程序存储器地址作操作数地址。这种寻
址方式是单字节指令,用于读出程序存储器中数据表格的
常数。
例如:MOVC
A,@A+DPTR
设累加器A与数据指针DPTR在寻址前是有值(定义)的。
(A)=0FH
(DPTR)=2400H
指令的执行过程如图4-7所示
行该指令前A中内容不为零,则执行过程如图4-8所示。
是操作数地址,第二个30H是参加“与”运算的立即数, “与”的结果存入30H单元中,执行过程如图4-4所示。
PC
E5H
操作码
PC+1
30H
操作数地址
PC+2
30H
立即数
内部 RAM 30H
“与”
ALU 结果
图2-4 指令ANL 30H,#30H的执行过程 指令 ANL 30H,#30H 的执行过程
2.2.3 寄存器寻址 寻址空间:R0~R7,A、B、CY(位),DPTR,其中由RS1、 RS0两位的值选定工作寄存器区,其中CY是一个特殊的寄存器, 通常称之为位累加器。
指令选定的寄存器内容就是实际操作数,这种寻址方式称为寄 存器寻址。其特点是被寻址的某个寄存器已隐含在操作码中, 故有时称寄存器寻址为隐含寻址。 有三种指令形式。
操作码
操作码
操作码
立即数
直接地址
例如:MOV A,R3
;A←(R3)
2.2.4 寄存器间接寻址 寻址空间:内部RAM(@R0,@R1,SP)和外部数据
令中直接给出操作的地址。如图4-3所示。
A
PC
E5H
操作码
内部 RAM
××
PC+1
30H
操作数地址 30H × ×
图2指-令3 M指O令V MOA,V 3A0,H 的30执H行的过执程行过程
例如:ANL 30H,#30H ;30H←(30H)∧30H 这是逻辑“与”操作指令,操作码后面第一个30H
指令形式:
操作码
立即数
例如: MOV A,#30H ;A←30H
PC
74H
PC+1
30H
操作码 OP A
指图令2-M1 O指V 令MA, OV#30AH,的#执3行0H过的程过程
例如:MOV
DPTR,#8000H;DPTR←8000H
指令立即数为16位,其功能是把立即数高8位送入
DPH,低8位送入DPL。指令执行过程如图4-2所示。
指令选定的寄存器内容就是实际操作数地址(而不是 操作数),这种寻址方式称为寄存器间接寻址。当用R0, R1寄存器间接寻址之前,同样需要有一个确定的工作寄存 器区;并且上述各寄存器中均是有值(操作数地址)的。 有三种指令形式。
操作码
操作码 立即数
操作码 直接地址
例如:MOV @R0,A 这是一条累加器传送指令,在寻址前R0是有值的(有定义的),
DPH DPL
PC
90H
PC+1
80H
PC+2
00H
操作码 OP
指令图2M-O2 V指令DMPOTRV,D#P8T0R0,0H#的80执0行0H过的程执行过程
2.2.2 直接寻址 寻址空间:内部RAM的低128字节和特殊功能寄存器SFR (直接寻址是访问SFR的唯一方式)。
操作码后面的一个字节是实际操作数地址。这种直接在
2.1.2 布尔处理机 为了充分地满足工业控制的需要,MCS-51的设计
者在单片机内部设置了功能很强的位处理机,即布尔 处理机。布尔处理机硬件主要由以下几部分支持: 1.布尔运算器ALU 2.布尔累加器CY(PSW.7) 3.布尔RAM区 4.布尔I/O口 P0~P3口的每位都可独立地进行输入/输出操作,构成 布尔I/O口。 5.布尔指令集 由17条布尔指令组成,可对各种布尔变量进行处理, 如置位、清零、求反、跳转、传送和逻辑运算等。
2.1.3 指令中使用的符号说明 见书上46页
2.2 MCS-51系列单片机寻址方式
2.2.1 立即寻址 立即寻址是指指令中直接给出操作数的寻址方式。指令中
的操作数称为立即数,立即数前面加ຫໍສະໝຸດ Baidu#”以区别直接寻址。8位 的立即数#data,如#30H;16位的立即数#data,如#3000H。要注 意立即寻址与直接寻址区别。
指令中给出操作数真实地址的方式称为直接寻址。指令有三 种形式:
操作码
操作码
操作码
操作数地址
源操作数地址
操作数地址
立即数
目的操作数地址
例如:MOV A,30H
;A←(30H)
这是数据传送指令,30H是内部RAM地址,功能是把
30H单元内容读入A中。注意:立即数字址与直接寻址的区
别,立即数字址是在指令中直接给出操作数直接寻址是在指
注意:偏移量rel是一8位有符号数补码,范围-128~+127。 所以转移范围应在当前PC指针的-128~+127之间某一程序存 储器地址中。
相对寻址一般为双字节或三字节指令。
有三种指令形式。
操作码
操作码
操作码
rel
直接地址
立即数
rel
rel
例如:JNZ rel
;累加器A的内容不等于零则转移。
设rel=23H,指令操作码存放在程序存储器2000H单元,并且在执
PC PC+1
A
93H
操作码
0FH
DPTR 2400H
……
240FH
××
ALU
图2-7 指令MOVC A,@A+DPTR的执行过程
指令 MOVC A,@A+DPTR 的执行过程
2.2.6 相对寻址
寻址空间:程序存储器。用于程序控制,利用指令修正PC 指针的方式实现转移。即以程序计数器PC的内容为基地址,加 上指令中给出的偏移量rel,所得结果为转移目标地址。
它指向目的操作数地址。设:(R0)=30H,则该指令是把累加器 A的内容写入内部RAM的30H单元中;指令执行过程如图4-5所示。
A
PC
F6H
操作码
××
内部 RAM
PC+1
R0
30H
30H × ×
图指2令-5MO指V令M@ORV0,A@的R执0,行A过的程执行过程
例如:MOVX A,@DPTR 这是一条外部数据存储器读指令,在指令寻址前DPTR数据
指针是有值的,它指向外部数据存储器即将访问的一个单元 2000H。当执行指令时,外部数据存储器2000H单元的内容读入 累加器A中,如图4-6所示。
图2-6 指令MOVX A,@DPTR的执行过程
2.2.5 基址+变址间接寻址
寻址空间:程序存储器(@A+DPTR,@A+PC)。
这是MCS-51指令系统特有的一种寻址方式,它以DPTR或
PC作基址寄存器,A作变址寄存器(存放8位无符号数),
两者相加形成16位程序存储器地址作操作数地址。这种寻
址方式是单字节指令,用于读出程序存储器中数据表格的
常数。
例如:MOVC
A,@A+DPTR
设累加器A与数据指针DPTR在寻址前是有值(定义)的。
(A)=0FH
(DPTR)=2400H
指令的执行过程如图4-7所示
行该指令前A中内容不为零,则执行过程如图4-8所示。
是操作数地址,第二个30H是参加“与”运算的立即数, “与”的结果存入30H单元中,执行过程如图4-4所示。
PC
E5H
操作码
PC+1
30H
操作数地址
PC+2
30H
立即数
内部 RAM 30H
“与”
ALU 结果
图2-4 指令ANL 30H,#30H的执行过程 指令 ANL 30H,#30H 的执行过程
2.2.3 寄存器寻址 寻址空间:R0~R7,A、B、CY(位),DPTR,其中由RS1、 RS0两位的值选定工作寄存器区,其中CY是一个特殊的寄存器, 通常称之为位累加器。
指令选定的寄存器内容就是实际操作数,这种寻址方式称为寄 存器寻址。其特点是被寻址的某个寄存器已隐含在操作码中, 故有时称寄存器寻址为隐含寻址。 有三种指令形式。
操作码
操作码
操作码
立即数
直接地址
例如:MOV A,R3
;A←(R3)
2.2.4 寄存器间接寻址 寻址空间:内部RAM(@R0,@R1,SP)和外部数据
令中直接给出操作的地址。如图4-3所示。
A
PC
E5H
操作码
内部 RAM
××
PC+1
30H
操作数地址 30H × ×
图2指-令3 M指O令V MOA,V 3A0,H 的30执H行的过执程行过程
例如:ANL 30H,#30H ;30H←(30H)∧30H 这是逻辑“与”操作指令,操作码后面第一个30H
指令形式:
操作码
立即数
例如: MOV A,#30H ;A←30H
PC
74H
PC+1
30H
操作码 OP A
指图令2-M1 O指V 令MA, OV#30AH,的#执3行0H过的程过程
例如:MOV
DPTR,#8000H;DPTR←8000H
指令立即数为16位,其功能是把立即数高8位送入
DPH,低8位送入DPL。指令执行过程如图4-2所示。