多寄存器寻址
七种寻址方式及单片机执行过程
例
JC
03H ;若进位C=0,则程序顺序执行,即 不跳转,PC= PC+2 ;若进位C=1, 则以PC 中的当前内容为基地址, 加上偏移量03H 后所得到的结果为 该转移指令的目的地址 。
程序存储区
1000 1001
40 03 1002 PC
…
…
ALU 1005 C2
单片机的工作过程
例:
取指过程 执行过程
运算器 ①② 累加器A
MOV A,#09H
程序计数器
74H 09H
;把09H送到累加器A中
地址寄存器
外部地址总线AB
0002H PC= 0000H 0001H
内 部 数 据 总 线
0000H
存 储 器
(PC) (PC) (PC) 0002H 0001H 0 0 0 0 1 0 0 1 0000H 0 1 1 1 0 1 0 0
例
MOV
A, 3AH
程序存储区
;把3AH单元的内容送A。
500 501
E5 3A 3A
片内RAM区 10
ACC
10
MOV
A, 3AH执行示意图
3. 寄存器间接寻址方式 寄存器中存放的是操作数的地址 在寄存器的名称前面加前缀标志“@” 访问内部RAM或外部数据存储器的低256个字节时,只 能采用R0或R1作为间址寄存器。例如: MOV A,@Ri ;i=0或1 其中Ri中的内容为40H,把内部RAM中40H单元的内容送 到A。 寻址范围: (1)访问内部RAM低128个单元,其通用形式为@Ri (2)对片外数据存储器的64K字节的间接寻址,例如: MOVX A,@DPTR
D7 D6 D5 D4 D3 D2 D1 D0 27H 0 0 1 0 0 0 0 0 38
寄存器寻址指令
字节3 HIGH DATA
字节1
字节2
字节3 字节4 字节5 字节6
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 LOW HIGH DISP DISP LOW HIGH
操作码 D W MOD REG R/M 或 DATA 或 DATA DATA DATA
P67
MOV SP,BX
1000101 1 1 1
(3) POP 出栈操作指令
指令格式:POP 目标
指令功能:目标 ((SP)+1,SP)) SP (SP)+2
SS
栈顶
POP BX 56H 78H
POP AX 12H 34H
78H 56H
34H
12H
SP
栈底
堆栈(Stack)
POP指令
汇编语句
例子
说明
POP reg16 POP CX
16位寄存器
绝大多数双操作数指令,除非特别说明,目的操作数与源操作 数必须类型一致,否则为非法指令
MOV AL,050AH MOV AL,BX 寄存器有明确的字节或字类型,有寄存器参与的指令其操作数 类型就是寄存器的类型 对于存储器单元与立即数同时作为操作数的情况,必须显式指 明;byte ptr指示字节类型,word ptr指示字类型
栈底
汇编语句
例子
说明
PUSH reg16 PUSH BX
16位寄存器
PUSH mem16 PUSH WORD PTR[BX] 16位寻址方式
PUSH seg
PUSH DS
任何段寄存器
例:现场保护恢复
push ax push bx push ds ... pop ds pop bx pop ax
寄存器与7种寻址方式
一、寄存器总共有14个16位寄存器,8个8位寄存器通用寄存器:数据寄存器:AH(8位) AL(8位) AX(16位) (AX和AL又称累加器)BH(8位) BL(8位) BX(16位) (BX又称基址寄存器,唯一作为存储器指针使用寄存器)CH(8位) CL(8位) CX(16位) (CX用于字符串操作,控制循环的次数,CL 用于移位)DH(8位) DL(8位) DX(16位) (DX一般用来做32位的乘除法时存放被除数或者保留余数)指针寄存器:SP 堆栈指针(存放栈顶地址)BP 基址指针(存放堆栈基址偏移)变址寄存器:主要用于存放某个存储单元地址的偏移,或某组存储单元开始地址的偏移,即作为存储器(短)指针使用。
作为通用寄存器,它们可以保存16位算术逻辑运算中的操作数和运算结果,有时运算结果就是需要的存储单元地址的偏移.SI 源地址(源变址寄存器)DI 目的地址(目的变址寄存器)控制寄存器:IP 指令指针FLAG 标志寄存器①进位标志CF,记录运算时最高有效位产生的进位值。
②符号标志SF,记录运算结果的符号。
结果为负时置1,否则置0。
③零标志ZF,运算结果为0时ZF位置1,否则置0。
④溢出标志OF,在运算过程中,如操作数超出了机器可表示数的范围称为溢出。
溢出时OF位置1,否则置0。
⑤辅助进位标志AF,记录运算时第3位(半个字节)产生的进位值。
⑥奇偶标志PF,用来为机器中传送信息时可能产生的代码出错情况提供检验条件。
当结果操作数中1的个数为偶数时置1,否则置0。
段寄存器CS 代码段IPDS 数据段SS 堆栈段SP BPES 附加段二、七种寻址方式:1、立即寻址方式:操作数就包含在指令中。
作为指令的一部分,跟在操作码后存放在代码段。
这种操作数成为立即数。
立即数可以是8位的,也可以是16位的。
例如:指令: MOV AX,1234H则: AX = 1234H2、寄存器寻址方式:操作数在CPU内部的寄存器中,指令指定寄存器号。
七种寻址方式
程序计数器 地址寄存器 外部地址总线AB 外部地址总线AB
0002H PC= 0000H 0001H
0000H
内 部 数 据 总 线
(PC) (PC) (PC)
执行过程
运算器 ①② 累加器A 累加器A 存 储 器
0002H 0001H 0 0 0 0 1 0 0 1 0000H 0 1 1 1 0 1 0 0
…Leabharlann MOVC A,@A+DPTR执行示意图 ,@A+DPTR执行示意图
…
6.位寻址方式 MCS-51有位处理功能 可以对数据位进行操作,例如: 有位处理功能, MCS-51有位处理功能,可以对数据位进行操作,例如: MOV C,40H C, 是把位40H的值送到进位位C 40H的值送到进位位 是把位40H的值送到进位位C。 寻址范围包括: 寻址范围包括: 内部RAM中的位寻址区。位有两种表示方法,例如, RAM中的位寻址区 (1)内部RAM中的位寻址区。位有两种表示方法,例如, 40H;另一种是单元地址加上位,例如,(28H).0, 40H;另一种是单元地址加上位,例如,(28H).0,指 的是28H单元中的最低位。它们是等价的。 28H单元中的最低位 的是28H单元中的最低位。它们是等价的。 (2)特殊功能寄存器中的可寻址位 可寻址位在指令中有如下4种的表示方法: 可寻址位在指令中有如下4种的表示方法: 直接使用位地址。例如PSW.5的位地址为0D5H PSW.5的位地址为0D5H。 a. 直接使用位地址。例如PSW.5的位地址为0D5H。
程序存储区 1020 EA 12 R2
片内RAM区 4A
ACC
4A
MOV A,R2执行示意图
2.直接寻址方式 操作数直接以单元地址的形式给出: 操作数直接以单元地址的形式给出: A, MOV A,40H 寻址范围: 寻址范围: 内部RAM 128个单元 RAM的 (1) 内部RAM的128个单元 特殊功能寄存器。除了以单元地址的形式外, (2) 特殊功能寄存器。除了以单元地址的形式外, 可用寄存器符号的形式给出 例如: 的形式给出。 还可用寄存器符号的形式给出。例如: A, A,P0是等价的 是等价的。 MOV A,80H 与 MOV A,P0是等价的。 直接寻址方式是访问特殊功能寄存器的唯一寻址方式
ARM指令分类及寻址方式
〈immediate〉= immed_8循环右移(2 X rotate_imm)
8bit
最大为0xff
4bit(0—15)
范围:0—30
一个合法的立即数可能有多种编码方法。如0x3f0是一个合法的立即数,它可以 采用下面两种编码方法: Immed_8=0x3f,rotate_imm=0xe 或者 Immed_8=0xfc,rotate_imm=0xf ARM汇编编译器按照下面的规则来生成立即数的编码: 当立即数数值在0—0xff范围内时,令<immediate>=immed_8, rotate_imm=0 其它情况下,汇编编译器选择rotate_imm数值最小的编码方法
立即寻址,操作数不是存储在寄存器或存储器 中,而是包含在指令的操作码中,也就是说,数据 就包含在指令当中,取出指令也就取出了可以立即 程序存储 使用的操作数(这样的数称为立即数)。立即寻址指 MOV R0,#0xFF00 令举例如下: 从代码中获得数据
SUBS
MOV
R0,R0,#1 R0
;R0减1,结果放入R0,并且影响标志位 0xFF00 0x55
• 寻址方式分类——变址寻址
变址寻址就是将基址寄存器的内容与指令中给出的偏 移量相加,形成操作数的有效地址。变址寻址用于访问基 址附近的存储单元,常用于查表、数组操作、功能部件寄 0x4000000C 0xAA 存器访问等。变址寻址指令举例如下: LDR R2,[R3,#0x0C] ;读取R3+0x0C地址上的存储单元 将R3+0x0C作 R3 0x40000000 为地址装载数 ;的内容,放入R2,执行后R3 不变。 R2 0xAA 0x55 据 STR R1,[R0,#-4]! ;先R0=R0-4,然后把R1的值寄存 LDR
[物理]单片机3第三章寻址方式
北京化工大学 信息科学与技术学院 郭 青
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
七种寻址方式.ppt
寻址范围: (1)访问内部RAM低128个单元,其通用形式为@Ri (2)对片外数据存储器的64K字节的间接寻址,例如:
MOVX A,@DPTR
(3)片外数据存储器的低256字节
例如:MOVX A,@Ri
(4)堆栈区
堆栈操作指令PUSH(压栈)和POP(出栈)使用堆 栈指针(SP)作间址寄存器
寄存器DPTR等。
1020
程序存储区 EA
片内RAM区
12
R2
4A
ACC
4A
MOV A,R2执行示意图
2.直接寻址方式 操作数直接以单元地址的形式给出: MOV A,40H 寻址范围: (1) 内部RAM的128个单元 (2) 特殊功能寄存器。除了以单元地址的形式外, 还可用寄存器符号的形式给出。例如: MOV A,80H 与 MOV A,P0是等价的。
地址 译码
寄存器区 内部控制信号
数据缓冲器 外部数据总线DB
指令 时钟及清零 寄存器
译码
外部控制总线CB
返回
D7 D6 D5 D4 D3 D2 D1 D0 27H 0 0 1 0 0 0 0 0
3F 3E 3D 3C 3B 3A 39 38
图4.9 SETB 3DH 指令执行示意图
7.相对寻址方式
在相对寻址的转移指令中,给出了地址偏 移量,以“rel”表示,即把PC的当前值加上偏 移量就构成了程序转移的目的地址:
目的地址=转移指令所在的地址 + 转移指令的字 节数 + rel
偏移量rel是一带符号的8位二进制数补码数 。
范围是:–128 ~ +127
向地址增加方向最大可转移(127+转移指令字节) 个单元地址,向地址减少方向最大可转移 (128-转移指令字节)个单元地址。
8086中的七种寻址方式
8086中的七种寻址⽅式寻址⽅式8086/8088有七种基本的寻址⽅式:⽴即寻址,寄存器寻址,直接寻址,寄存器间接寻址,寄存器相对寻址,基址变址寻址,相对基址变址寻址。
其中,后五种寻址⽅式(即直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址和相对基址变址寻址)属于存储器寻址,⽤于说明操作数或操作数地址所在存储单元的地址。
这五种⽅式也就是确定存放操作数的存储单元有效地址EA的⽅法,这⾥所说的有效地址就是在前⾯⼀节讲存储器分段中所说的段内偏移地址。
除了这些基本的寻址⽅式以外,还有固定寻址和I/O端⼝寻址等,但不会在本节中介绍到。
基本寻址⽅式下⾯重点说⼀下这七种基本寻址⽅式的特点:1. ⽴即寻址⽅式先解释⼀个概念,叫做⽴即数。
操作数包含在指令中,它作为指令的⼀部分,跟在操作码后存放在代码段。
这种操作数称为⽴即数。
⽴即寻址⽅式所提供的操作数紧跟在操作码后⾯,与操作码⼀起放在指令代码段中,不需要到其他地址单元中去取。
⽴即数可以是8位,也可以是16位。
这种寻址⽅式主要⽤于给寄存器或存储单元赋初值的场合。
⽴即寻址⽅式是这七种寻址⽅式中速度最快的寻址⽅式。
举例:MOV AX, 1234H ; 给AX寄存器赋值为1234H2. 寄存器寻址⽅式寄存器寻址的特点是操作数在CPU内部的寄存器中,在指令中指定寄存器号。
对于16位操作数,寄存器可以是AX、BX、CX、DX、SI、DI和SP等;对于8位操作数,寄存器可以是AL、AH、BL、BH、CL、CH、DL和DH。
例如:MOV SI, AXMOV AL, DH由于操作数在寄存器中,不需要通过访问存储器来取得操作数,所以采⽤寄存器寻址⽅式的指令执⾏速度较快。
3. 直接寻址⽅式直接寻址的操作数在存储器中,指令直接包含有操作数的有效地址。
由于操作数⼀般存放在数据段,所以操作数的地址由DS加上指令中给出的16位偏移得到。
假如DS内容是5000H,地址为51234H字存储单元中的内容时6789H,那么在执⾏“MOV AX, [1234H]”后寄存器AX的内容是6789H。
七种寻址方式
七种寻址方式一、立即寻址方式操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。
立即数可以是8位、16位或32位,该数值紧跟在操作码之后。
如果立即数为16位或32位,那么,它将按“高高低低”的原则进行存储。
例如:MOV AH,80H ADD AX,1234H MOV ECX,123456HMOV B1,12H MOV W1,3456H ADD D1,32123456H其中:B1、W1和D1分别是字节、字和双字单元。
以上指令中的第二操作数都是立即数,立即数寻址方式通常用于对通用寄存器或内存单元赋初值。
二、寄存器寻址方式指令所要的操作数已存储在某寄存器中,或把目标操作数存入寄存器。
把在指令中指出所使用寄存器(即:寄存器的助忆符)的寻址方式称为寄存器寻址方式。
指令中可以引用的寄存器及其符号名称如下:8位寄存器有:AH、AL、BH、BL、CH、CL、DH和DL等;16位寄存器有:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等;32位寄存器有:EAX、EBX、ECX、EDX、ESI、EDI、ESP和EBP等。
寄存器寻址方式是一种简单快捷的寻址方式,源和目的操作数都可以是寄存器。
1、源操作数是寄存器寻址方式如:ADD VARD,EAX ADD VARW,AX MOV VARB,BH等。
其中:VARD、VARW和VARB是双字,字和字节类型的内存变量。
在第4章将会学到如何定义它们。
2、目的操作数是寄存器寻址方式如:ADD BH,78h ADD AX,1234h MOV EBX,12345678H等。
3、源和目的操作数都是寄存器寻址方式如:MOV EAX,EBX MOV AX,BX MOV DH,BL等。
三、直接寻址方式指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址方式。
在通常情况下,操作数存放在数据段中,所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,但如果使用段超越前缀,那么,操作数可存放在其它段。
寄存器寻址
4、零标志ZF(Zero Flag)
零标志ZF用来反映运算结果是否为0。如果运算结果为0,则其值为1,否则其值为0。在判断运算结果是否为0时,可使用此标志位。
5、符号标志SF(Sign Flag)
符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统中,有符号数采用补码表示法,所以,SF也就反映运算结果的正负号。运算结果为正数时,SF的值为0,否则其值为1。
5) 基址变址寻址: 基址:(DS)BX,(SS)BP 变址:SI,DI,前面几种都是作为segment+ea+相对地址COUNT方式
eg:MOV AX,[BX][SI/DI];(AX)=((DS)*16d+(BX)+(SI/DI));
MOV AX,[BP][SI/DI]; (AX)=((SS)*16D+(BP)+(SI/DI));
节的信息。
寄存器AX和AL通常称为累加器少时间。累加器可用于乘、
除、输入/输出等操作,它们的使用频率很高;
寄存器BX称为基地址寄存器(Base Register)。它可作为存储器指针来使用;
寄存器CX称为计数寄存器(Count Register)。在循环和字符串操作时,要用它来控制循环次数;在位操作
2) 直接寻址:不通过偏移寄存器,直接找到常量或者[number]在RAM中的地址
eg:MOV AX,[20100]; (AX)=((DS)*16d+20100);
MOV AX,VALUE; (AX)=((DS)*16d+(VALUE));
MOV AX,[VALUE]; (AX)=((DS)*16d+(VALUE));
8051单片机指令系统的7种寻址方式解析
8051单片机指令系统的7种寻址方式解析寻址方式:寻址就是寻找操作数的地址。
绝大多数指令执行时都需要操作数,因此就存在如何确定操作数地址的问题。
所谓寻址方式就是通过什么途径获取操作数的方式。
根据指令操作的需要,计算机总是提供多种寻址方式。
一般来说,寻址方式越多计算机的寻址能力就越强,但指令系统也就越复杂。
8051指令系统有7种寻址方式:寄存器寻址,直接寻址,寄存器间接寻址,立即寻址,基址寄存器加变址寄存器间接寻址,相对寻址,位寻址,下面分别介绍。
寄存器寻址寄存器寻址:寄存器寻址就是操作数在寄存器中,因此指定了寄存器就得到了操作数。
采用寄存器寻址方式的指令都是一字节的指令,指令中以符号名称来表示寄存器。
例如:MOV A R1 这条指令的功能是把工作寄存器R1的内容传送到累加器A中,由于操作数在R1中,因此指令中指定了R1,也就得到了操作数。
寄存器寻址方式的寻址范围包括:工作寄存器组R0~R7,部分特殊寄存器ACC,B,DPTR 等。
直接寻址直接寻址:直接寻址就是在指令中直接给出操作数所在单元的真实地址。
这里给出的操作数直接地址为8位二进制地址。
程序中一般用十六进制数表示。
例如:指令MOV A,30H 把内部RAM单元30H中的数据传送给累加器A,指令中30H就是操作数的直接地址。
直接寻址方式的寻址范围包括:内部数据存储器低128单元,特殊功能寄存器。
特殊功能寄存器在指令的表示中除了可以以直接地址形式给出外,还可以以寄存器符号形式给出,如对累加器A,在指令中可使用其直接地址OEOH,也可使用其符号形式ACC。
立即寻址立即寻址:立即寻址方式就是实际操作数作为指令的一部分,在指令中直接给出,取指令时,可在程序存储器中直接取得操作数。
通常把出现在指令中的操作数称为立即数。
采用立即寻址方式的指令,在立即数前面加上。
10种寻址方式的定义
10种寻址方式的定义寻址方式是指计算机系统用来定位并访问存储单元或数据的方式。
以下是常见的一些寻址方式:1.直接寻址(Direct Addressing):直接使用给定地址或指针来访问内存中的数据或指令。
2.间接寻址(Indirect Addressing):使用存储在一个地址或寄存器中的地址来访问数据,间接地定位到实际的数据存储位置。
3.相对寻址(Relative Addressing):使用相对于当前指令或指针的地址偏移量来定位数据,常用于访问数组或其他数据结构的元素。
4.基址寻址(Base Addressing):使用一个基址寄存器和一个偏移量来计算地址,定位到存储单元。
5.索引寻址(Index Addressing):通过一个索引寄存器的值和一个基地址来计算地址,以定位到数组或表中的元素。
6.变址寻址(Displacement Addressing):通过将寄存器中的地址与立即数相加或相减来计算目标地址。
7.间接相对寻址(Indirect Relative Addressing):通过使用相对地址来访问存储单元,但是该地址指向的是另一个存储位置的地址。
8.堆栈寻址(Stack Addressing):使用栈指针来访问栈中的数据,通常用于函数调用和返回时保存和恢复数据。
9.寄存器寻址(Register Addressing):直接使用CPU内部的寄存器地址来访问数据或指令。
10.变量寻址(Variable Addressing):在编程语言中,通过使用变量名来访问和操作变量的值。
这些寻址方式在不同的计算机体系结构和编程范式中有着不同的应用和特点,用于在计算机系统中有效地定位和访问数据。
8086-8088 CPU的寻址方式
MOV AX,ES:[VALUE]
微机原理
1.3 寄存器寻址方式 寄存器寻址:操作数存放在CPU内部的寄存器中 例 :MOV AX,DX ; AX←DX 1.4 寄存器间接寻址 寄存器间接寻址:有效地址包含在基址寄存器 BX、BP或变址寄存器SI、DI中直接寻址 例 MOV AX,[BX]
MOV AX,[BP] 1.5 寄存器相对寻址 寄存器相对寻址方式:有效地址在SI、DI、BX 或BP之一,加上指令中8位或16位相对地址 例 MOV AL,ADDR[SI]
微机原理
1.6 转移类指令的寻址方式 1.段内相对转移寻址 有效地址EA为当前IP寄存器内容与指令中指定 的8位或16位有符号数之和 例:JZ DISP 其中DISP是符号地址 2.段内间接转移寻址 有效地址EA为寄存器或存储器单元的内容,这 种寻址方式不能用于条件转移指令。 例:JMP CX
微机原理
微机原理
1.6 基址变址寻址方式 操作数的有效地址等于一个基址寄存器的内容 和一个变址寄存器的内容之和 基址寄存器:BX、BP 变址寄存器:SI 、DI
MOV AX,[BX] [DI] 也可写成 MOV AX,[BX+DI] 1.7 相对基址变址寻址方式 操作数的有效地址等于一个基址寄存器的内容、 一个变址寄存器的内容和一个8位或16位的位移 量之和。 MOV AX,ADDR[BP+SI]
寄存器与七种寻址方式
寄存器与七种寻址⽅式⼀、寄存器总共同拥有14个16位寄存器,8个8位寄存器通⽤寄存器:数据寄存器:AH(8位) AL(8位) AX(16位) (AX和AL⼜称累加器)BH(8位) BL(8位) BX(16位) (BX⼜称基址寄存器,唯⼀作为存储器指针使⽤寄存器)CH(8位) CL(8位) CX(16位) (CX⽤于字符串操作,控制循环的次数,CL⽤于移位)DH(8位) DL(8位) DX(16位) (DX⼀般⽤来做32位的乘除法时存放被除数或者保留余数)指针寄存器:SP 堆栈指针 (存放栈顶地址)BP 基址指针 (存放堆栈基址偏移)变址寄存器:主要⽤于存放某个存储单元地址的偏移,或某组存储单元開始地址的偏移,即作为存储器(短)指针使⽤。
作为通⽤寄存器,它们能够保存16位算术逻辑运算中的操作数和运算结果,有时运算结果就是须要的存储单元地址的偏移.SI 源地址 (源变址寄存器)DI ⽬的地址 (⽬的变址寄存器)控制寄存器:IP 指令指针FLAG 标志寄存器 ①进位标志 CF,记录运算时最⾼有效位产⽣的进位值。
②符号标志 SF,记录运算结果的符号。
结果为负时置1,否则置0。
③零标志 ZF,运算结果为0时ZF位置1,否则置0。
④溢出标志 OF,在运算过程中,如操作数超出了机器可表⽰数的范围称为溢出。
溢出时OF位置1,否则置0。
⑤辅助进位标志 AF,记录运算时第3位(半个字节)产⽣的进位值。
⑥奇偶标志 PF,⽤来为机器中传送信息时可能产⽣的代码出错情况提供检验条件。
当结果操作数中1的个数为偶数时置1,否则置0。
段寄存器CS 代码段 IPDS 数据段SS 堆栈段 SP BPES 附加段⼆、七种寻址⽅式:1、马上寻址⽅式:操作数就包括在指令中。
作为指令的⼀部分,跟在操作码后存放在代码段。
这样的操作数成为马上数。
马上数能够是8位的,也能够是16位的。
⽐如:指令: MOV AX,1234H则: AX = 1234H2、寄存器寻址⽅式:操作数在CPU内部的寄存器中,指令指定寄存器号。
8086指令操作数的寻址方式实验总结
8086指令操作数的寻址方式实验总结在计算机体系结构的学习中,8086指令操作数的寻址方式是一个非常重要的概念。
通过对这一概念的深入了解和实验操作,我们可以更好地理解计算机程序的执行过程,深化对计算机底层原理的理解。
在本文中,我将结合理论知识和实验结果,对8086指令操作数的寻址方式进行全面评估和总结。
1. 立即寻址立即寻址是一种直接将操作数的值嵌入指令中的寻址方式。
在8086指令集中,我们可以使用MOV指令将一个立即数传送到目的操作数中。
MOV AX, 1234h指令将立即数1234h传送到寄存器AX中。
通过实验操作,我发现立即寻址方式适用于需要直接传送常数值的情况,能够提高程序执行的效率。
2. 寄存器寻址寄存器寻址是一种通过寄存器来寻址操作数的方式。
8086微处理器具有通用寄存器AX、BX、CX、DX等,可以直接操作这些寄存器中的数据。
MOV AX, BX指令将寄存器BX中的数据传送到寄存器AX中。
在实验过程中,我发现寄存器寻址方式是一种高效的操作数寻址方式,能够提高程序的执行速度。
3. 直接寻址直接寻址是一种通过内存位置区域来寻址操作数的方式。
在8086指令集中,我们可以使用MOV指令将内存中的数据传送到寄存器中,或将寄存器中的数据传送到内存中。
MOV AX, [1234h]指令将存储在内存位置区域1234h处的数据传送到寄存器AX中。
实验结果表明,直接寻址方式可以灵活地对内存中的数据进行操作,适用于大规模数据的传送和处理。
4. 寄存器间接寻址寄存器间接寻址是一种通过寄存器中存储的位置区域来寻址操作数的方式。
在8086指令集中,我们可以使用指令将寄存器中存储的内存位置区域作为操作数进行操作。
MOV BX, [SI]指令将寄存器SI中存储的内存位置区域处的数据传送到寄存器BX中。
在实验中,我发现寄存器间接寻址方式适用于需要对内存中多个数据进行操作的情况,能够提高程序的效率和灵活性。
5. 立即偏移寻址立即偏移寻址是一种通过基址寄存器和偏移量来寻址操作数的方式。
七种寻址方式
七种寻址方式标签:it一、立即寻址方式操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。
立即数可以是8位、16位或32位,该数值紧跟在操作码之后。
如果立即数为16位或32位,那么,它将按“高高低低”的原则进行存储。
例如:MOV AH, 80H ADD AX, 1234H MOV ECX, 123456HMOV B1, 12H MOV W1, 3456H ADD D1, 32123456H其中:B1、W1和D1分别是字节、字和双字单元。
以上指令中的第二操作数都是立即数,在汇编语言中,规定:立即数不能作为指令中的第二操作数。
该规定与高级语言中“赋值语句的左边不能是常量”的规定相一致。
立即数寻址方式通常用于对通用寄存器或内存单元赋初值。
图是指令“MOV AX, 4576H”存储形式和执行示意图。
二、寄存器寻址方式指令所要的操作数已存储在某寄存器中,或把目标操作数存入寄存器。
把在指令中指出所使用寄存器(即:寄存器的助忆符)的寻址方式称为寄存器寻址方式。
指令中可以引用的寄存器及其符号名称如下:8位寄存器有:AH、AL、BH、BL、CH、CL、DH和DL等;16位寄存器有:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等;32位寄存器有:EAX、EBX、ECX、EDX、ESI、EDI、ESP和EBP等。
寄存器寻址方式是一种简单快捷的寻址方式,源和目的操作数都可以是寄存器。
1、源操作数是寄存器寻址方式如:ADD VARD, EAX ADD VARW, AX MOV VARB, BH等。
其中:VARD、VARW和VARB是双字,字和字节类型的内存变量。
在第4章将会学到如何定义它们。
2、目的操作数是寄存器寻址方式如:ADD BH, 78h ADD AX, 1234h MOV EBX, 12345678H等。
3、源和目的操作数都是寄存器寻址方式如:MOV EAX, EBX MOV AX, BX MOV DH, BL等。
汇编的8种寻址方式,以及2个默认段寄存器
汇编的8种寻址⽅式,以及2个默认段寄存器16位CPU所含有的寄存器有(见图2.1中16位寄存器部分):4个数据寄存器(AX、BX、CX和DX)2个变址和指针寄存器(SI和DI) 2个指针寄存器(SP和BP) ,32位CPU增加2个16位的段寄存器:FS和GS。
4个段寄存器(ES、CS、SS和DS)1个指令指针寄存器(IP) 1个标志寄存器(Flags)⼀共14个寄存器,或者16个16位CPU内部有20根地址线,其编码区间为:0000H~FFFFFH,所以,它可直接访问的物理空间为1M(220)字节。
如果⽤16位寄存器来访问内存的话,则只能访问内存的最低端的64K,其它的内存将⽆法访问。
为了能⽤16位寄存器来有效地访问1M的存储空间,16位CPU采⽤了内存分段的管理模式,并引⽤段寄存器的概念。
个⼈猜测:堆栈有1M的限制,是不是因为这个历史原因?物理地址PA=段地址×16 + 偏移量(Offset)有效地址EA=Effective Address(段内偏移)CS:IP段寄存器CS指向存放程序的内存段,IP是⽤来存放下条待执⾏的指令在该段的偏移量,把它们合在⼀起可在该内存段内取到下次要执⾏的指令。
SS:SP段寄存器SS指向⽤于堆栈的内存段,SP是⽤来指向该堆栈的栈顶,把它们合在⼀起可访问栈顶单元。
另外,当偏移量⽤到了指针寄存器BP,则其缺省的段寄存器也是SS,并且⽤BP可访问整个堆栈,不仅仅是只访问栈顶。
DS:ALL段寄存器DS指向数据段,ES指向附加段,在存取操作数时,⼆者之⼀和⼀个偏移量合并就可得到存储单元的物理地址。
该偏移量可以是具体数值、符号地址和指针寄存器的值等之⼀,具体情况将由指令的寻址⽅式来决定。
ES:DI在进⾏串操作时,其⽬的地址的段寄存器规定为ES总结:程序频繁访问的数据段⽤DS来指向,不太经常访问的数据段可⽤ES、FS和GS等来指向。
1.⽴即寻址⽅式 MOV AH, 80H(直接给寄存器赋值)2. 寄存器寻址⽅式(源或者⽬的有⼀个是寄存器)2.1) 源操作数是寄存器寻址⽅式如:ADD VARD, EAX ADD VARW, AX MOV VARB, BH等。
8086七种寻址方式
8086/8088七种寻址方式(一)8086/8088寄存器组(二)8086/8088寻址方式(1)立即寻址方式操作数就包含在指令中,它作为指令的一部分,跟在操作码后存放在代码段。
这种操作数称为立即数,立即数可以是8位的也可以是16位的,如果立即数是16位的按“高高低低”的原则。
例如指令:MOV AX,1234H的存储和执行情况如下图:图中指令存放在代码段中,OP表示该指令的操作码部分再例如:MOV AL,5 则指令执行行,(AL)=05HMOV BX,3064H 则指令执行后,(BX)=3064H(2)寄存器寻址方式操作数在CPU内部的寄存器中,指令指定寄存器号。
对于16位操作数,寄存器可以是:AX,BX,CX,DX,SI,DI,SP,和BP等:对于8位数,寄存器可以是:AL,AH,BL,BH,CL,CH,DL,DH。
这种寻址方式由于操作数就在寄存器中,不需要访问存储器来取得操作数,因而可以取得较高的运算速度。
例如:MOV AX,BX如指令执行前(AX)=3064H,(BX)=1234H;则指令执行后,(AX)=1234H,(BX)保持不变例如:MOV SI,AXMOV AL,DH(3)直接寻址方式操作数在寄存器中,指令直接包含有操作数的有效地址(偏移地址)。
操作数一般存放在数据段所以操作数的地址由DS加上指令中直接给出的16位偏移得到。
如果采用段超越前缀,则操作数也可含在数据段外的其他段中。
如下图所示:在汇编语言指令中,可以用符叼地址代替数值地址。
如:MOV AX,VALUE此时VALUE为存放操作数单元的符号地址。
如写成:MOV AX,[VALUE]也是可以的,两者是相等的。
如VALUE在附加段中,则应指定段超越前缀如下:MOV AX,ES:VALUE或MOV AX,ES:[VALUE]直接寻址方式常用于处理单个存储器变量的情况。
它可实现在64K字节的段内寻找操作数。
直接寻址的操作数通常是程序使用的变量。
i型指令的3种寻址方式
i型指令通常指的是指令的格式,而不是指令本身。
在计算机体系结构中,i型指令是一种指令格式,它包含一个操作码(opcode)和一个立即数(immediate value)。
i型指令的寻址方式通常是通过将操作码与立即数组合在一起,而不需要额外的操作数。
关于i型指令的寻址方式,有三种常见的方式:
1. 立即数寻址(Immediate Addressing):操作数是一个常数,直接包含在指令中。
例如,ADD R1, R2, #10 表示将寄存器R2的值与常数10相加,并将结果存储在寄存器R1中。
2. 寄存器寻址(Register Addressing):操作数是一个寄存器中的值。
指令中给出的寄存器地址用于找到实际的操作数。
例如,ADD R1, R2, R3 表示将寄存器R2和R3中的值相加,并将结果存储在寄存器R1中。
3. 寄存器相对寻址(Register Relative Addressing):操作数是一个相对于一个寄存器的偏移量。
指令中给出的寄存器地址表示基址,而立即数表示偏移量。
例如,LDR R1, [R2, #4] 表示将存储在地址(R2 + 4)处的数据加载到寄存器R1
中。
这些寻址方式允许i型指令执行各种不同的操作,包括加法、减法、逻辑运算等,而不需要额外的内存读取。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.1.2 ARM处理器体系结构 目前,ARM体系结构共定义了6个版本,从版本1到 版本6 1.V1结构(版本1) 2.V2结构 3.V3结构 4.V4结构 5.V5结构 6.V6结构
2.1.3 Linux与ARM处理器 在32位RISC处理器领域,基于ARM的结构体系在嵌 入式系统中发挥了重要作用,ARM处理器和嵌入 式Linux的结合也正变得越来越紧密,并在嵌入式 领域得到了广阔的应用。
2.1 ARM处理器简介
1.定义 ARM(Advanced RISC Machines),既可以认为是一个公司 的名字,也可以认为是对一类微处理器的通称,还可以认 为是一种技术的名字。ARM处理器是一种低功耗高性能的 32位RISC处理器,ARM处理器是一个综合体,ARM公司 自身并不制造微处理器,而是由ARM的合作伙伴来制造 2.特点 体积小、低功耗、低成本、高性能 支持Thumb(16位)/ARM(32位)双指令集,能很好地兼 容8位/16位器件 大量使用寄存器,指令执行速度更快 大多数数据操作都在寄存器中完成 寻址方式灵活简单,执行效率高 指令长度固定
第2章 ARM处理器
本章描述了 ARM 体系结构和 ARM Linux 的发展,
介绍了几种应用 Linux 的典型 ARM 处理器和开发
板。本章可以使读者了解嵌入式Linux系统硬件平 台的基础知识。
2
本章目标
ARM体系结构 典型的ARM处理器 S3C2410开发板介绍
2.2.3 Thumb指令概述 Thumb指令集是ARM指令集的一个子集,允许指令 编码为16位的长度。与等价的32位代码相比较, Thumb指令集在保留32代码优势的同时,可以在 很大程度上节省系统的存储空间。
2.3.1 Atmel AT91RM9200
AT91RM9200具有以下的丰富片上资源。 (1)16KB数据Cache,16KB指令Cache; (2)虚拟内存管理单元MMU; (3)带有Debug调试的在片Emulator; (4)Mid-level Implementation Embedded Trace Macrocell; (5)16KB的内部SRAM和128KB的内部ROM; (6)带有外部总线接口(EBI),方便用户进行扩展升级; (7)支持SDRAM、SRAM、Burst Flash和CompactFlash、SmartMedia and NAND Flash的无缝连接; (8)增强型的时钟产生器和电源管理单元; (9)带有2个PLL的2个在片振荡器; (10)慢速的时钟操作模式和软件电源优化能力; (11)4个可编程的外部时钟信号; (12)包括周期性中断、看门狗和第二计数器的系统定时器; (13)带有报警中断的实时时钟; (14)带有8个优先级、可单个屏蔽中断源、Spurious中断保护的先进中断控制器; (15)7个外部中断源和1个快速中断源; (16)4个32位的PIO控制器,可以达到122个可编程I/O引脚(每个都有输入控制、可中断及开路的输出能力); (17)20通道的外部数据控制器(DMA); (18)10/100M的以太网接口; (19)2个全速的USB 2.0主接口和一个从口; (20)4个UART; (21)3通道16位的定时/计数器(TC); (22)两线接口(TWI); (23)IEEE 1149.1 JTAG标准扫描接口。
6.相对寻址 与基址变址寻址方式相类似,相对寻址以程序计数 器PC的当前值为基地址,指令中的地址标号作为 偏移量,将两者相加之后得到操作数的有效地址 。 7.堆栈寻址 堆栈是一种数据结构,按先进后出(First In Last Out,FILO)的方式工作,使用一个称作堆栈指针 的专用寄存器指示当前的操作位置,堆栈指针总 是指向栈顶。
2.3.2 Samsung S3C2410 S3C2410是著名的半导体公司Samsung推出的一款32 位RISC处理器,为手持设备和一般类型的应用提 供了低价格、低功耗、高性能微控制器的解决方 案。
ARM微处理器的指令集主要有6大类。 跳转指令 数据处理指令 程序状态寄存器(PSR)处理指令 加载/存储指令 协处理器指令1.立即数寻址 ARM指令的立即数寻址是一种特殊的寻址方式,操 作数本身就在指令中给出,只要取出指令也就取 到了操作数。这个操作数被称为立即数
2.寄存器寻址 寄存器寻址就是利用寄存器中的数值作为操作数, 这种寻址方式是各类微处理器经常采用的一种方 式,也是一种执行效率较高的寻址方式。
3.寄存器间接寻址 寄存器间接寻址就是以寄存器中的值作为操作数的 地址,而操作数本身存放在存储器中。
4.基址变址寻址 基址变址的寻址方式就是将寄存器(该寄存器一般 称作基址寄存器)的内容与指令中给出的地址偏 移量相加,从而得到一个操作数的有效地址。 5.多寄存器寻址 采用多寄存器寻址方式,一条指令可以完成多个寄 存器值的传送。这种寻址方式可以用一条指令完 成传送最多16个通用寄存器的值
Linux具有诸多内在优点
(1)Linux的内核精简而高效,针对不同的实际需 求,可将内核功能进行适当地剪裁 (2)Linux具有完善的网络性能,并且具有多种网 络服务程序 (3)Linux的可移植性强,方便移植到许多硬件平 台 (4)Linux源码开放,软件资源丰富
2.2.1 ARM微处理器的指令集
2.1.1 ARM公司简介(了解) ARM公司是专门从事基于RISC技术芯片设计开发的 公司,作为嵌入式RISC处理器的知识产权IP供应 商,公司本身并不直接从事芯片生产,而是靠转 让设计许可由合作公司生产各具特色的芯片,世 界各大半导体生产商从ARM公司购买其设计的 ARM微处理器核,根据各自不同的应用领域,加 入适当的外围电路,从而形成自己的ARM微处理 器芯片进入市场,利用这种合伙关系,ARM很快 成为许多全球性RISC标准的缔造者。