3. 寻址方式与指令系统
第三章 MCS-51单片机的寻址方式和指令系统

由此可把数据传送指令分成三部分
(一)内部数据传送(通用传送指令)
1.以A为目的操作数
MOV A,Rn MOV A,@Ri ;A← (Rn) ;A←((Ri))
双字节
11101rrr 1110011i
MOV A,direct ;A←(direct) 11100101 direct
MOV A,#data ;A←#data 例: MOV A,@R1 若(R1)=20H,(20H)=62H 结果:(A)=62H 11100100 data
指令MOVC A,@A+DPTR;执 行示意图
结果:(ACC)=64H
六、相对寻址
以当前PC的内容为基准,加上指令给出的 偏移量(rel)形成新的PC值(转移地址) 的寻址方式。
转移地址=目的地址 =当前(PC)+rel
目的地址=PC当前值十rel 目的地址=转移指令的PC值+2(或3)十rel 目的地址=转移指令地址+转移指令字节数+rel
单周期:64 双周期:45 四周期:2
若fosc=12MHz, 大多指令执行 仅1μs
按照指令的功能分5大类
一、数据传送类指令(29条) 二、算术运算类指令(24条) 三、逻辑操作类指令(24条) 四、控制转移类指令(17条) 五、位操作类指令 (17条)
在描述指令系统的功能时,常用符号介绍:
@——间址符号,如@Ri,@DPTR 13. / ——位操作数的前缀,表示对该位操作 数取反,如/bit。 14. (×)——由×寻址的单元中的内容。 15. ((X))——由X的内容作为地址的存 储单元的内容。 16. ← ——箭头右边的内容取代箭头左边的 内容。
12.
一、数据传送类指令(29条)
第3章 80X86的指令系统和寻址方式

通用寄存器 ;
(3)变址:其值存放在变址寄存器中。SI、DI 、除ESP外的 32位通用寄存器 ; (4)比例因子:是386及后继机型中新增寻址方式中的术语。 其值可为1、2、4、8。
寻址方式
立即数寻址 寄存器寻址 存储器寻址
直接寻址 寄存器间接寻址 寄存器相对寻址 基址变址寻址 相对基址变址寻址
练习
MOV AX, ARRAY[4]
MOV AX, [BX] MOV AX, [BX+2] ;直接寻址,偏移地址= ARRAY+4 ;寄存器间接寻址
;寄存器相对寻址 MOV AX, ARRAY [BX] ;寄存器相对寻址
MOV AX, [BX+SI] MOV AX, [BX+DI+2]
;基址(BX)变址(SI)寻址 ;相对基址变址寻址
;(BX)←1234H ;(AX)←(BX)
4)寄存器间接寻址方式
有效地址包含在基址寄存器或变址寄存器中;
寄存器可以是BX、BP、SI、DI之一。
(1) 以BX、SI、DI进行寄存器间接寻址,隐含的段
寄存器为数据段寄存器DS 。
MOV AX, [BX]
;物理地址=DS×16+BX ;物理地址=DS×16+SI ;物理地址=DS×16+DI
2)立即数(常数)到存储单元的数据传输
例 3.18 MOV MEM_BYTE, 20H ;将立即数20H送到MEM_BYTE存储单元 MOV DS:[0005H], 4500H ;立即数4500H送到DS:0005H的存储单元中
3)立即数到通用寄存器的数据传输 例 3.19 MOV AL, 20H MOV SP, 2000H ;将立即数20H送到AL寄存器 ;将立即数2000H送入SP寄存器
第3章(1) 寻址方式和指令系统

EA的组成不同,寻找其中的操作数的方式也随之不同。如何寻找操作数 的有效地址,进而找到所需操作数的方式就是寻址方式 因为EA的组成方式都体现在指令中,故寻址方式也可以说是在指令中获得 操作数所在地址的方法。
3.1 Pentium的寻址方式
• 指令的两个问题
– 指出进行什么操作 – 涉及的操作数和操作结果放在何处
在这种寻址方式中,操作数是在存储器中,但是,操作 数的地址的16位偏移量包含在以下四个寄存器SI、DI、 BP、BX之一中。这又可分成两种情况: 1、 BX、SI、DI间址时以DS为默认段地址; 例:MOV AX,[SI] 2、BP间址时以SS为默认段地址。 例:MOV AX,[BP]
医药信息工程学院 何永玲
二、操作数存在方式
在微型计算机中,操作数可能以以下四种方式存在:
• 操作数包含在指令中——即指令的操作数场就包含着操作数本身。
MOV AX, 1234 ; ADD AL, 2
• 操作数包含在CPU的某一个内部寄存器中—— 这时指令中的操作数场是
CPU内部 寄存器的一个编码。
MOV DS, AX
• 操 作 数 在 内 存 的 数 据 区 中 —— 这 时 指 令 中 的 操 作 数 场 包 含 着 此 操 作 数 的
医药信息工程学院 何永玲
3.2.2 算术运算指令(1-P88)
– 不带进位位的加法指令ADD
比如: ADD ADD ADD ADD 比如: ADC ADC ADC CX,1000H ;CX=CX+1000h DI,SI [BX+DI],AX EAX,[BX+2000H]
• 无符号数和有符号数采用同一套加法指令及减法 所有算术运算指令均影响状态标志。 指令有两个条件:
微机原理与接口技术:08第3章 寻址方式和指令系统3.3 习题3

交通信息与控制工程系教案(理论教学用)课程名称微机原理与接口技术第 8 次第 4 周 2 学时上课教室WM1310 课程类型专业基础课授课对象自动化专业章节名称第三章寻址方式和指令系统(3.3)教学目的和要求1.掌握8086的基本指令,如逻辑运算和移位指令、串操作指令、程序控制指令等。
讲授主要内容及时间分配1.逻辑运算和移位指令;(35min)2.串操作指令;(20min)3.程序控制指令;(25min)4.处理器控制指令。
(10min)教学重点与难点重点:1.逻辑运算和移位指令的基本功能和格式;2.串操作指令的基本功能和格式;3.程序控制指令的基本功能和格式。
难点:逻辑运算和移位指令的基本功能和格式。
要求掌握知识点和分析方法1.逻辑运算和移位指令的格式、功能及应用方法;2.串操作指令的格式、功能及应用方法;3.程序控制指令的格式、功能及应用方法。
启发与提问1.逻辑移位和算术移位指令的区别?教学手段多媒体+板书作业布置思考题:1.远跳转和近跳转的区别?3.2, 3.53.9, 3.113.12, 3.14主要参考资料备注讲授内容三、逻辑运算和移位类1.逻辑运算逻辑运算指令对操作数的要求大多与MOV指令相同。
逻辑运算是按位操作的,它包括AND(与)、OR (或)、NOT(非)、XOR(异或)和TEST(测试)指令。
除“非”运算指令外,其余指令的执行都会使标志位OF=CF=0,AF位无定义,SF、ZF和PF 根据运算结果设置。
“与”运算指令格式:AND OPRD1,OPRD2操作:两操作数相“与”,结果送目标地址。
【例】要屏蔽AL中的高4位。
AND AL,00001111B【例】AND AL,AL此指令执行前后,(AL)无变化,但执行后使标志位发生了变化,即CF=0,OF=0。
“或”运算指令格式:OR OPRD1,OPRD2操作:两操作数相“或”,结果送目标地址【例】(AL)=0FH,OR AL,10000000B(AL)=8FH【例】OR AL,AL指令执行前后,(AL)不变,但执行后标志位发生了变化,即CF=0,OF=0。
第3章指令系统和寻址方式

(6) 基址变址寻址方式 基址变址寻址方式*
(BX) 有效地址 = + (BP) 指令格式: 指令格式: MOV MOV MOV (SI) (DI)
AX, [BX] [DI] AX, [BX+DI] AX, ES:[BX] [SI]
* 适于数组、字符串、表格的处理 适于数组、字符串、 * 必须是一个基址寄存器和一个变址寄存器的组合
• 寄存器操作数
– 寄存器的内容参加运算或存放结果。 寄存器的内容参加运算或存放结果。
• 存储器操作数
– 指内存某地址的字节、字、双字等是指令的处 指内存某地址的字节、 理对象, 理对象,这时必须把处理对象取出或送入相应 地址。 地址。
有效地址和段超越
• 存储单元的物理地址由两部分组成:段 存储单元的物理地址由两部分组成: 寄存器保存的段基值,偏移地址。 寄存器保存的段基值,偏移地址。 • 在8086/8088的各种寻址方式中,寻找存 的各种寻址方式中, 的各种寻址方式中 储单元所需的偏移地址,称为有效地址, 储单元所需的偏移地址,称为有效地址, 用EA表示。 表示。 表示 • 不同的寻址方式,组成有效地址 的各 不同的寻址方式,组成有效地址EA的各 部分内容也不一样,寻址方式主要是EA 部分内容也不一样,寻址方式主要是 如何计算与寻找的问题。 如何计算与寻找的问题。
汇编指令的书写形式
• 格式
[name] operation operand [;comment] – 名字项(name):可以是标号或变量,表示本 名字项( ):可以是标号或变量 ):可以是标号或变量, 语句的符号地址。 语句的符号地址。
• 标号在代码段中定义,后跟冒号。 标号在代码段中定义,后跟冒号。 • 变量在数据段或附加数据段中定义,后面不跟冒号。 变量在数据段或附加数据段中定义,后面不跟冒号 不跟冒号。 • 名字项组成:字母打头的字符串组成。包含字符 名字项组成:字母打头的字符串组成。 (A~Z,0~9,_,?,$,@等),如MainLoop, , , , , , 等),如 , Calc_long_sum。 。 • 单独的$或?有特殊含义,不能做符号名。 单独的 或 有特殊含义,不能做符号名。 有特殊含义 • 保留字不能用在名字项。 保留字不能用在名字项。
[物理]单片机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寻址方式和指令系统

计算机原理_3寻址方式和指令系统寻址方式和指令系统是计算机原理中非常重要的概念,它们决定了计算机能够进行的操作和数据的处理方式。
下面将从寻址方式和指令系统的概念、分类和特点三个方面详细介绍。
一、寻址方式在计算机中,寻址方式是指CPU访问内存中数据的方式。
常见的寻址方式包括直接寻址、间接寻址、变址寻址和相对寻址等。
1、直接寻址直接寻址是指通过给出数据的内存地址来访问数据。
在直接寻址中,指令中给出了待访问的内存地址,CPU直接从该内存地址中读取/写入数据。
2、间接寻址间接寻址是指通过寄存器中的地址来访问数据。
在间接寻址中,指令中给出了一个寄存器的编号,CPU将寄存器中的地址作为内存地址进行读取/写入操作。
3、变址寻址变址寻址是指通过给出基地址和偏移量来计算内存地址的方法。
在变址寻址中,指令中给出了一个基地址和一个偏移量,CPU通过将两者相加来得到最终的内存地址进行操作。
4、相对寻址相对寻址是指通过给出相对于指令计数器的偏移量来计算内存地址的方式。
在相对寻址中,指令中给出了一个偏移量,CPU将偏移量与指令计数器相加来得到最终的内存地址。
二、指令系统指令系统是指计算机可以执行的指令的集合。
根据指令的类型和功能划分,指令系统可以分为以下几种类型。
1、数据传输指令数据传输指令用于在CPU和内存、寄存器之间传输数据。
例如,将内存中的数据传送到寄存器中或将寄存器中的数据传送到内存中等。
2、算术指令算术指令用于进行数值运算,如加、减、乘、除等。
这些指令可以对寄存器或内存中的数据进行算术运算,并将结果存放在寄存器或内存中。
3、逻辑指令逻辑指令用于进行逻辑运算,如与、或、非等。
这些指令可以对寄存器或内存中的数据进行逻辑运算,并将结果存放在寄存器或内存中。
4、控制指令控制指令用于控制程序的执行流程,如跳转、条件分支等。
这些指令可以根据条件改变程序的执行顺序或跳转到指定的地址执行。
指令系统的设计需要考虑指令的种类、格式、寻址方式和作用等因素。
汇编语言第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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算术运算类指令
加法指令(Addition) 带进位加法指令(Add with carry) 加1指令(Increment) 减法指令(Subtraction) 带借位减法(Subtract with borrow) 减1指令(Decrement) 求负数指令(Negative)
加法指令(Addition)
指令格式:add dest,src 功能:目的操作数和源操作数相加,其和数 存放在目的操作数中,源操作数原有内容不 变。 根据相加结果设置标志寄存器中的CF、PF、 AF、ZF、SF和OF。 Add指令可以进行字或字节操作。 对src和dest的具体内容的要求。
加法指令
Add ax,bx Add al,bl Add cx,20 Add cl,0A4h Add dl,da_byte Add da_word[si],dx 对于第四条指令,如果(cl) = 0e5h,
指令格式
双操作数指令:OPR DEST,SRC 单操作数指令:OPR DEST 无操作数指令:OPR
传送类指令
数据传送指令(move) mov dest,src 可以进行字节数据传送,也可以进行字数据 传送。 mov cl,05h ;字节传送 mov ax,1234h ;字传送 mov da_byte,12h ;字节传送 mov da_word,1234h ;字传送
位操作类指令
逻辑运算指令(Logical) 测试指令(Test) 移位/循环移位指令(shift/rotate) 处理器控制类指令
逻辑运算指令(Logical)
数据传送指令(move)
寄存器之间的传送 mov dl,cl ;字节传送 mov ax,bx ;字传送 mov ds,ax ;通用寄存器和段寄存器之间的 传送
数据传送指令(move)
寄存器和存储单元之间的传送 mov dl,da_byte ;字节传送 mov ax,da_word ;字传送 mov da_byte,cl ;字节传送 mov ds_word,bx ;字传送
8086/8088的8种寻址方式
立即数寻址(Immediate addressing) 指令中所需操作数包含在指令代码中,立即 数操作数可以是8位,也可以是16位。由于在 指令执行过程中,立即数作为指令的一部分 直接从BIU的指令序列中取出,同寄存器寻址 方式一样,不需另外占用总线周期,因此这 种寻址方式执行速度快。
第三章 寻址方式与指令系统
寻址方式
操作码(指示指令应完成的具体操作) 操作数(表示指令的操作对象) 寻找指令中所需操作数的各种方法叫寻址方 式。 Intel 8086/8088 CPU指令所需操作数类型。
8086/8088的8种寻址方式
寄存器寻址(Register Addressing) 指令中所需操作数在CPU某寄存器(通用寄 存器和段寄存器)中,由于存取这种操作数 完全在CPU内部进行,不需要执行总线周期, 所以执行速度快。如: mov cl,al mov dh,bl mov dx,cx mov ds,ax
组成EA或偏移量的3个地址分量
位移量 位移量是指令中的一个8位或16位二进制数,在源 代码中通常以变量名或标号的形式出现。 基地址 由基址寄存器BX、基址指针BP提供的地址分量。 变址 由源变址寄存器SI或目的变址寄存器DI所提供的地 址分量。
由三地址分量组合得到的存储器寻址 方式
直接寻址(Direct addressing) 在寻找存储器中操作数时,EA直接由位移量 给出。 用符号表示:mov bx,ds:var mov ah,data_byte mov cl,da + 3 用常数表示:mov ax,ds:[100h] 注意与它区分:mov ax,100h
求负数指令(Negative)
指令格式:neg dest 指令功能:dest 0 – (dest) 对目的操作数的要求。 若已知(al) = 13h(00010011b),那么指令neg al的执行结果:(al) = 0edh= 11101101b 若已知(da_byte) = 0afh(10101111b),那么 指令neg da_byte的执行结果是:(da_byte) = 51h(01010001b)。
34
地址传送指令
装入地址指针 作用:装入段基址和偏移量 由用段基址和偏移量均为16 bit,所以需要2 个寄存器:一个段寄存器和一个通用寄存器。 指令格式:lds dest,src ; les dest,src 指令对标志寄存器各位均无影响。 Lds si,addr_table[bx]的执行情况。P35 图3.16
8086/8088的8种寻址方式
立即数寻址(Immediate addressing) mov bx,0a427h mov cl,12 mov bx,”ab” mov dh,”a” mov ax,1234h mov ah,0abh
8086/8088的8种寻址方式
宏汇编源程序中使用的逻辑地址形式: 段基址:偏移量 段基址存放于段寄存器中;而偏移量表示需 要访问的存储单元与段起始地址之间的距离。 偏移量是由CPU的执行单元EU来确定和计算 的有效地址(EA)
数据传送指令(move)
两个存储单元间的数据传送 mov dl,da_byte1 mov da_byte2,dl 即mov指令的源操作数和目的操作数只能是其中之 一为存储器操作数,不能两者同时为存储器操作数。 两个存储单元间的数据交换 mov cl,da_byte1 mov dl,da_byte2 mov da_byte1,dl mov da_byte2,cl
由三地址分量组合得到的存储器寻址 方式
基址寻址和变址寻址 操作数的有效地址EA是基址寄存器或变址寄 存器给出的分量与指令中给出的位移量之和。 mov ax,10h[si] mov ax,array[bx] mov table[di],al mov tabz[bp],bl mov ax,ds:10h[si] mov ax,ds:array[bx] mov ds:table[di],al mov ss:tabz[bp],bl
带进位加法指令(add with carry)
指令格式:adc dest,src 指令差异:若在adc指令前CF已置1,则在两 操作数相加之和中再加1。 Dest (dest) + (src) + cf 设置cf、pf、af、zf、sf和of。 指令主要用于大于16位数的加法中。
带进位加法指令(add with carry)
减法指令(Subtraction)
指令格式:sub dest,src 指令格式:dest (dest) – (src) 影响标志位;cf,pf,af,zf,sf和of 可以进行字节或字减法运算。 对src和dest的使用要求。
减法指令
Sub ax,bx Sub al,bl Sub cx,300h Sub dx,da_word Sub da_byte,dl 如果(dl)= 0a9h,而(da_byte)=0b7h,最后一 条指令的运行情况和影响的标志位。
地址传送指令
装入有效地址(load Effective Address) 指令格式:lea dest,src SRC必须是一个字节或字的存储器操作数。 Dest必须为一个16bit的通用寄存器。 作用:将源操作数的偏移量(即有效地址EA) 送入目的操作数的通用寄存器中。 LEA和MOV指令的区别? P 图3.13、图3.14
现有一个32位无符号数已存放在AX(高16 位)、BX(低16位)中,现要加上一个常数 376425h。可以用下面两条指令来实现: add bx,6425h adc ax,37h
加1指令(Increment)
指令格式:inc dest 指令功能:将目的操作数加1,并送回目的操 作数。 目的操作数可以是8位或16位的通用寄存器或 存储单元。 影响标志位:pf,af,zf,sf,of(不影响cf) Inc cl、inc si、inc count
由三地址分量组合得到的存储器寻址 方式
寄存器间接寻址(Register indirect addressing) 操作数有效地址EA(偏移量)直接从基址寄 存器(BX或BP)或变址寄存器(SI或DI)中 获得,例如: mov ax,[bx] (段基址寄存器:DS) mov bh,[bp] (段基址寄存器:SS) mov cl,[si] (段基址寄存器:DS) mov [di],bx (段基址寄存器:DS)
指令系统
传送类指令(Transfer instructions) 算术运算类指令(Arithmetic instructions) 位操作类指令(Bit manipulation instructions) 串操作类指令(String instructions) 程序转移类指令(Program transfer instructions) 处理器控制类指令(Processor control instructions)
带借位减法(subtract with borrow)
指令格式:sbb dest,src 指令功能:dest (dest) – (src) – cf 影响标志位:cf,pf,af,zf,sf和of。
减1指令(decrement)
指令格式:dec dest 指令功能:目的操作数减1,并送回目的操作 数。 目的操作数可以为一个8位或16位的寄存器或 存储单元。 影响标志位:pf,af,zf,sf,of(不影响cf)
标志传送指令(flags transfer)
标志进栈指令(Push Flag) 指令格式:pushf 作用顶部 字单元中。
标志传送指令(flags transfer)
标志出栈指令(pop flag) 指令格式:popf 作用:首先将现行堆栈顶部的一个字的内容 送入标志寄存器,然后sp加2。
存储器寻址方式归纳总结
P30 图3.9
串操作寻址(String addressing)