寻址方式与数据传送
第3章 STC15单片机的指令系统

;进位位C与30H位相与,结果保存在C中 ;进位位C送35H位 ;20H位置1
单片机原理与接口技术————基于STC15系列的51单片机原理
第3章 STC15单片机的指令系统
七、 相对寻址
在相对寻址的转移指令中,转移指令的所在的PC值加上其指令的字节数构成了 程序转移的目的地址。
目的地址表达式: 目的地址=转移指令地址+转移指令字节数+偏移量
据传送指令不影响标志C、AC和OV(除非以PSW为目的的指 令),但可能会对奇偶标志P有影响。
单片机原理与接口技术————基于STC15系列的51单片机原理
第3章 STC15单片机的指令系统
一、 内部数据传送指令
以累加器A为目的操作数的指令
MOV A,data ;直接寻址 ,(data)→(A), 直接单元地址中的内容送到累加器A
一、 STC15单片机指令格式
1. 机器指令与汇编指令
机器指令:二进制代码形式,是CPU唯一能识
别和处理的指令
11101000
汇编指令:将机器指令用类似于英文的助记符
表示。
MOV A,R0
单片机原理与接口技术————基于STC15系列的51单片机原理
第3章 STC15单片机的指令系统
4
一、 STC15单片机指令格式
2. 操作数与操作码
操作数:操作的对象。
操作码:指令执行的操作
MOV A,R0
源操作数
目的操作数
单片机原理与接口技术————基于STC15系列的51单片机原理
第3章 STC15单片机的指令系统
一、 STC15单片机指令格式
4. 汇编语言的语句格式
[标号:] 操作码助记符 [目的操作数][,源操作数][;注释] AGAIN: MOV A,R0 ;把R0的内容送累加器A
寻址方式与数据传送

数据传送的未来发展
数据传送将更加高速化
随着5G、6G等新一代通信技术的不断发展,数据传送速度将得到 大幅提升,满足用户对高速数据传输的需求。
数据传送将更加安全可靠
随着网络安全技术的不断发展,数据传送将更加安全可靠,保障用 户数据的安全性和隐私性。
数据传送将更加智能化
随着人工智能技术的不断发展,数据传送将更加智能化,能够根据 用户的需求和习惯进行智能推荐和个性化服务。
间接寻址
操作数的有效地址通过寄存器间接给出,如指令"MOV AX, [BX]"。优点是灵活性较高,缺点是增加了指令长度 。
变址寻址
操作数是变址寄存器的值加上位移量,如指令"MOV AX, [BX+DI-2]"。优点是可实现数组元素的动态修改,缺点 是计算有效地址较复杂。
数据传送的比较
数据传送不通过专门的传送指令实现,而是在其他指 令中隐含着数据传送操作,如加减乘除指令等。优点
是简化了指令系统,缺点是灵活性较差。
输入 标题
立即传送
数据被直接包含在指令中,如指令"MOV AX, 100"。 优点是简单直观,缺点是灵活性较差。
隐式传送
寄存器传送
数据被存放在内存单元中,通过内存单元间接传送, 如指令"MOV AX, [BX]"。优点是可实现大容量数据 传送,缺点是速度较慢。
内存传送
直接寻址
指令直接给出操作数的有效地 址,如:MOV AX, [BX]
基址寻址
操作数的有效地址由基址寄存 器和位移量给出,如:MOV AX, [BX+SI]
相对寻址
操作数的有效地址是程序计数 器的值,如:MOV AX, [BX+PC]
[物理]单片机3第三章寻址方式
![[物理]单片机3第三章寻址方式](https://img.taocdn.com/s3/m/b2ca773355270722192ef7f1.png)
北京化工大学 信息科学与技术学院 郭 青
1
第三章
本章重点
寻址方式
80C51指令系统
指令格式
操作结果及对标志位影响
3.1
111条指令
概述
29 24 24 17
数据传送类指令 数学运算类指令
分类
逻辑运算类指令 控制转移类指令
位操作指令
17
单字节指令 按指令长度分类
双字节指令
三字节指令 12个振荡周期 64
COUNT:PUSH DPH; 保护DPTR内容
PUSH DPL;
MOV DPTR,#TABLE ;赋表首地址给DPTR
MOVC A, @A+DPTR
; POP DPL; 根据A中内容查表 恢复DPTR内容 返回主程序
POP DPH
RET;
ORG 1000H TABLE:DB 00 DB 01 DB 04 DB 09 DB 16 DB 25 DB 36 DB 49 DB 64 DB 81
19
3.3.1 数据传送类指令
按操作方式,分为三种: 数据传送 数据交换 栈操作
一、普通传送类指令 格式: MOV (目的操作数),(源操作数) 操作码助记符 操作: 将源操作数单元内容,传送到目的操作数 单元中,源操作数内容不变。不影响标志 位Cy,AC和OV。
操作数的组合关系
1、立即数的传送 MOV A, #data MOV Rn, #data (A) (Rn) #data #data
d:MOV direct,#data
将8位立即数送入由direct直接寻址的地 址单元中。 direct:00H~FFH,8位二进制地址码
寻址内部RAM(00H~7FH)及SFR
汇编语言第3章 指令系统和寻址方式

5.寄存器相对寻址方式(register relative addressing)
EA=基址(base) 或变址( index)+偏移量 (displacement)
基址寄存器有:BX,BP 变址寄存器有:SI,DI 注:默认段是数据段和堆栈段
(SI) 物理地址=(DS)*16+(BX)+displacement
(DI) =(SS)*16+(BP)+ (SI)+displacement (DI)
例:mov AX,ARRAY[BX][DI] (DS)=1000H,(BX)=1200H, (DI)=1000H, ARRAY=1000H 物理地址=DS*16+(BX)+(DI)+ARRAY =DS*16+1200+1000+1000=13200H 若:(13200)=34H,(13201)=12H 则,(AX)=1234H 允许段超越。 例:mov AL,ES:ARRAY[BX][DI] 用途:处理成组数据(举例说明)
2.段内间接寻址(intrasegment indirect addressing) (IP)新=EA=寄存器或存储单元的内容 寄存器:所有寄存器寻址方式可用的寄存器 存储单元:所有存储单元寻址方式均适用 例:JMP SI (IP)=(SI) JMP WORD PTR VAR或简写JMP VAR (DS)=1000H,VAR=2000H 存储单元的物理地址=(DS)*16+VAR=12000H (12000H)=1234H 则,(IP)新=1234H
4.寄存器间接寻址方式(register indirect addressing)
EA=基址(base) 或变址( index) 基址寄存器有:BX,BP 变址寄存器有:SI,DI 注:默认段是数据段和堆栈段 (SI) 物理地址=(DS)*16+(BX) (DI) =(SS)*16+(BP)
七种寻址方式

七种寻址方式1、立即寻址方式:操作数就包含在指令中。
作为指令的一部分,跟在操作码后存放在代码段。
这种操作数成为立即数。
立即数可以是8位的,也可以是16位的。
例如:指令: MOV AX,1234H则: AX = 1234H2、寄存器寻址方式:操作数在CPU内部的寄存器中,指令指定寄存器号。
对于16位操作数,寄存器可以是:AX、BX、CX、DX、SI、DI、SP 和BP等。
对于8位操作数,寄存器可以是AL 、AH、BL、BH、CL、CH、DL、DH。
这种寻址方式由于操作数就在寄存器中,不需要访问存储器来取得操作数因而可以取得较高的运算数度。
3、直接寻址方式:操作数在寄存器中,指令直接包含有操作数的有效地址(偏移地址)注:操作数一般存放在数据段所以操作数的地址由DS加上指令中直接给出的16位偏移得到。
如果采用段超越前缀,则操作数也可含在数据段外的其他段中。
例如:MOV AX,[8054]如(DS) = 2000H,则执行结果为(AX) = 3050H(物理地址=20000+8054=28054H)28054H里的内容为3050H在汇编语言指令中,可以用符号地址代替数值地址如:MOV AX,VALUE此时VALUE为存放操作数单元的符号地址。
如写成:MOV AX,[VALUE]也是可以的,两者是等效的。
如VALUE在附加段中,则应指定段超越前缀如下:MOV AX,ES:VALUE 或MOV AX,ES:[VALUE]4、寄存器间接寻址方式:操作数在寄存器中,操作数有效地址在SI、DI、BX、BP这四个寄存器之一中。
在一般情况下,如果有效地址在SI、DI和BX中,则以DS段寄存器中的内容为段值。
如果有效地址在BP中,则以SS段寄存器中的内容为段值例如:MOV AX,[SI]如果(DS) = 5000H (SI) = 1234H则物理地址= 50000 + 1234 = 51234H51234H地址中的内容为:6789H执行该指令后,(AX) = 6789H5、寄存器相对寻址方式:操作数在存储器中,操作数的有效地址是一个基址寄存器(BX、BP)或变址寄存器(SI、DI)的内容加上指令中给定的8位或16位位移量之和BX 8位位移量EA(有效地址) = BP +SI 16位位移量DI在一般情况下,如果SI、DI、或BX中的内容作为有效地址的一部分,那么引用的段寄存器是DS;如果BP中的内容作为有效地址的一部分,那么引用的段寄存器是SS。
Zigbee四种寻址方式

Zigbee四种寻址方式2010-02-25 14:411、单点传送(Unicast)Uicast 是标准寻址模式,它将数据包发送给一个已经知道网络地址的网络设备。
将afAddrMode 设置为Addr16Bit 并且在数据包中携带目标设备地址。
2、间接传送(Indirect)当应用程序不知道数据包的目标设备在哪里的时候使用的模式。
将模式设置为AddrNotPresent 并且目标地址没有指定。
取代它的是从发送设备的栈的绑定表中查找目标设备。
这种特点称之为源绑定。
当数据向下发送到达栈中,从绑定表中查找并且使用该目标地址。
这样,数据包将被处理成为一个标准的单点传送数据包。
如果在绑定表中找到多个设备,则向每个设备都发送一个数据包的拷贝。
上一个版本的ZigBee(ZigBee04),有一个选项可以讲绑定表保存在协调器(Coordinator)当中。
发送设备将数据包发送给协调器,协调器查找它栈中的绑定表,然后将数据发送给最终的目标设备。
这个附加的特性叫做协调器绑定(Coordinator Binding)。
通往无线桥梁无线世界的先锋3、广播传送(broadcast)当应用程序需要将数据包发送给网络的每一个设备时,使用这种模式。
地址模式设置为AddrBroadcast。
目标地址可以设置为下面广播地址的一种:NWK_BROADCAST_SHORTADDR_DEV ALL(0xFFFF)——数据包将被传送到网络上的所有设备,包括睡眠中的设备。
对于睡眠中的设备,数据包将被保留在其父亲节点直到查询到它,或者消息超时(NWK_INDIRECT_MSG_TIMEOUT 在f8wConifg.cfg 中)。
NWK_BROADCAST_SHORTADDR_DEVRXON(0xFFFD)——数据包将被传送到网络上的所有在空闲时打开接收的设备(RXONWHENIDLE),也就是说,除了睡眠中的所有设备。
NWK_BROADCAST_SHORTADDR_DEVZCZR(0xFFFC)——数据包发送给所有的路由器,包括协调器。
数据的7种寻址方式

第3章数据的7种寻址方式,包括指令的格式,功能,指令的正误判断。
20位物理地址的生成:将段地址添上一个0(十六进制),再加上偏移地址。
数据传送指令:MOV PUSH,POP,XCHG,LEA,IN,OUT1、MOV ,注意指令的正误判断,可从3点入手。
(1)指令格式(2)数据大小是否超出范围(3)类型是否匹配。
通常,不能在两个内存单元间直接传送,段寄存器间不能直接传送,立即数不能直接传送到段寄存器,不能用CS作目的操作数。
2、PUSH 入栈指令,先减后压。
不能对字节进行压栈操作。
3、POP 出栈指令,先弹后加,将栈顶的一个字弹出到目的操作数。
4、EXCHG 交换指令。
不能在两个内存单元间直接交换。
5、LEA 取有效地址指令。
6、IN 输入指令,当端口大于255时,要用DX来表示端口号。
7、OUT 输出指令,当端口大于255时,要用DX来表示端口号算术运算等指令1、ADD AL,[1000H]例:AL=85H,BL=79H,执行指令ADD AL,BLAL= 0FEH ,CF= 0 ,OF= 02、SUB AL,BL3、INC [1000H] ERRORINC BYTE PTR [1000H]INC WORD PTR [1000H]该指令不影响CF标志4、DEC [1000H] ERRORDEC BX5、NEG AL 求相反数例:Y=X,X>=0; Y=|X|,X<0,编写程序段实现该功能MOV AL,XCMP AL,0JGE Y1NEG ALY1:MOV Y,ALHLT编程序的思路:取数据,在CPU里做运算,存数据;如果数据较多,通常要设指针,再取数据,取完数据后,修改地址指针,又取下一个数据,循环下去。
6、CMP AL,BL无符号数,A表示大,B表示小,E表示相等。
有符号数,G表示大,L表示小,E表示相等。
例:CMP AX,BXJGE NEXTXCHG AX,BXNEXT: CMP AX,CXJGE DONEXCHG AX,CXDONE:该程序段的功能是找AX,BX,CX中最大的数,并把最大的数放在AX中。
概述CPU与外设数据传送的方式DMA控制器

3.基地址和基字节数寄存器 每一个通道有一对16位的基地址和基字节数寄存 器,它们存放着与现行寄存器相联系的初始值。 4.命令寄存器 这是一个8位寄存器,用以控制8237的工作。命令 字的格式如图8-24所示。
5.模式寄存器 每一个通道有一个6位的模式寄存器以规定通道的 工作模式,如图8-26所示。 在编程时用最低两位来选择写入哪个通道的模式 寄存器。
状态信息和控制信息与数据是不同性质的信息, 必 须 要 分 别 传 送 。 但 在 大 部 分 微 型 机 中 ( 8086 也 如 此),只有通用的IN和OUT指令,因此,外设的状态 也必须作为一种数据输入;而CPU的控制命令也必须 作为一种数据输出。所以,一个外设往往要几个端口 地址,CPU寻址的是端口,而不是笼统的外设。
寄存器;在输出时,若外设已把上一个数据输出,输 出寄存器已空,由外设向CPU 发出中断请求,CPU就 暂停原执行的程序( 即实现中断),转去执行输入或
输出操作(中断服务),待输入输出操作完成后即返 回,CPU再继续执行原来的程序。这样就可以大大提 高CPU的效率,而且允许CPU与外设(甚至多个外设) 同时工作。
2.块传送方式 在这种传送方式下,8237由DREQ启动后就连续 地传送数据,直至字节数计数器减到零产生TC
(Terminal Count),或者由外部输入有效的 EOP
信号来终结DMA传送。
3.请求传送方式 在这种工作方式下,8237可以进行连续的数据传 送。当出现以下三种情况之一时停止传送。 (1)字节数计数器减到0,发生TC;
这种查询输入方式的程序流程图,如图8-11所示。
2.查询式输出 同样的,在输出时CPU也必须了解外设的状态, 看外设是否有空(即外设不是正处在输出状态,或外 设的数据寄存器是空的,可以接收CPU输出的信息), 若有空,则CPU执行输出指令,否则就等待。 查询式输出的程序流程图如图8-14所示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相对寻址一般为双字节或三字节指令。
有三种指令形式。
操作码
操作码
操作码
rel
直接地址
立即数
rel
rel
例如:JNZ rel
;累加器A的内容不等于零则转移。
设rel=23H,指令操作码存放在程序存储器2000H单元,并且在执
指针是有值的,它指向外部数据存储器即将访问的一个单元 2000H。当执行指令时,外部数据存储器2000H单元的内容读入 累加器A中,如图4-6所示。
图2-6 指令MOVX A,@DPTR的执行过程
2.2.5 基址+变址间接寻址
寻址空间:程序存储器(@A+DPTR,@A+PC)。
这是MCS-51指令系统特有的一种寻址方式,它以DPTR或
指令选定的寄存器内容就是实际操作数,这种寻址方式称为寄 存器寻址。其特点是被寻址的某个寄存器已隐含在操作码中, 故有时称寄存器寻址为隐含寻址。 有三种指令形式。
操作码
操作码
操作码
立即数
直接地址
例如:MOV A,R3
;A←(R3)
2.2.4 寄存器间接寻址 寻址空间:内部RAM(@R0,@R1,SP)和外部数据
是操作数地址,第二个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是一个特殊的寄存器, 通常称之为位累加器。
2.1.2 布尔处理机 为了充分地满足工业控制的需要,MCS-51的设计
者在单片机内部设置了功能很强的位处理机,即布尔 处理机。布尔处理机硬件主要由以下几部分支持: 1.布尔运算器ALU 2.布尔累加器CY(PSW.7) 3.布尔RAM区 4.布尔I/O口 P0~P3口的每位都可独立地进行输入/输出操作,构成 布尔I/O口。 5.布尔指令集 由17条布尔指令组成,可对各种布尔变量进行处理, 如置位、清零、求反、跳转、传送和逻辑运算等。
存储器(@R0,@R1,@DPTR)。
指令选定的寄存器内容就是实际操作数地址(而不是 操作数),这种寻址方式称为寄存器间接寻址。当用R0, R1寄存器间接寻址之前,同样需要有一个确定的工作寄存 器区;并且上述各寄存器中均是有值(操作数地址)的。 有三种指令形式。
操作码
操作码 立即数
操作码 直接地址
例如:MOV @R0,A 这是一条累加器传送指令,在寻址前R0是有值的(有定义的),
它指向目的操作数地址。设:(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数据
行该指令前A中内容不为零,则执行过程如图4-8所示。
令中直接给出操作的地址。如图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
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,所得结果为转移目标地址。
指令中给出操作数真实地址的方式称为直接寻址。指令有三 种形式:
操作码
操作码
操作码
操作数地址
源操作数地址
操作数地址
立即数
目的操作数地址
例如:MOV A,30H
;A←(30H)
这是数据传送指令,30H是内部RAM地址,功能是把
30H单元内容读入A中。注意:立即数字址与直接寻址的区
别,立即数字址是在指令中直接给出操作数直接寻址是在指
2.1.3 指令中使用的符号说明 见书上46页
2.2 MCS-51系列单片机寻址方式
2.2.1 立即寻址 立即寻址是指指令中直接给出操作数的寻址方式。指令中
的操作数称为立即数,立即数前面加“#”以区别直接寻址。8位 的立即数#data,如#30H;16位的立即数#data,如#3000H。要注 意立即寻址与直接寻址区别。
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的唯一方式)。
操作码后面的一个字节是实际操作数地址。这种直接在
指令形式:
操作码
立即数
例如: MOV A,#30H ;A←30H
PC
7Hale Waihona Puke HPC+130H
操作码 OP A
指图令2-M1 O指V 令MA, OV#30AH,的#执3行0H过的程过程
例如:MOV
DPTR,#8000H;DPTR←8000H
指令立即数为16位,其功能是把立即数高8位送入
DPH,低8位送入DPL。指令执行过程如图4-2所示。
PC作基址寄存器,A作变址寄存器(存放8位无符号数),
两者相加形成16位程序存储器地址作操作数地址。这种寻
址方式是单字节指令,用于读出程序存储器中数据表格的
常数。
例如:MOVC
A,@A+DPTR
设累加器A与数据指针DPTR在寻址前是有值(定义)的。
(A)=0FH
(DPTR)=2400H
指令的执行过程如图4-7所示