第3章 指令系统和寻址方式

合集下载

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

第三章 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章 8086的指令系统—3.1寻址方式

第3章 8086的指令系统—3.1寻址方式
EA=[基址寄存器]+([变址寄存器] *比例因子)+位移量 BX,BP SI,DI 1 0,8,16
例:(BX)=2000H,(SI)=1000H,偏移量=0250H,
则EA= 2000H+1000H+0250H=3250H
寻址目的
确定本条指令的操作数据 在指令中 PA:存储器内的绝对地址(20位) 在存储器中 EA:某个段内的相对地址(16位) 在寄存器中 确定下一条指令的地址 根据指令长度计算 根据转移指令的目标地址
寄存器名表示其内容(操作数)
MOV AX, BX
MOV AL, BH
;AX←BX
;AL←BH
演示
第3章: 3.1.3 存储器寻址方式
操作数在主存储器中,用主存地址表示 程序设计时,8088采用逻辑地址表示主存地址
段地址在默认的或用段超越前缀指定的段寄存器中 指令中只需给出操作数的偏移地址(有效地址EA)
演示
;AX←DS:[SI+06H]
第3章:4. 基址加变址寻址方式
有效地址由基址寄存器(BX或BP)的内容加上 变址寄存器(SI或DI)的内容构成: 有效地址=BX/BP+SI/DI 段地址对应BX基址寄存器默认是DS,对应BP基 址寄存器默认是SS;可用段超越前缀改变
MOV AX, [BX+SI] MOV AX, [BX][SI]
*微型计算机汇编语言特点 *微型计算机指令系统概述 *寻址方式
指令及其格式
指令及指令集 计算机能够识别和执行的基本操作命令
指令的作用
告诉CPU干什么?What? 告诉CPU从哪儿取数据?Where? 告诉CPU下一条指令在哪儿?Where? 操作码 操作数或操作数地址 指令的格式

第3章(1) 寻址方式和指令系统

第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

微机原理与接口技术: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. 寻址方式与指令系统

3. 寻址方式与指令系统

算术运算类指令
加法指令(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 ;通用寄存器和段寄存器之间的 传送

计算机原理_3寻址方式和指令系统

计算机原理_3寻址方式和指令系统

计算机原理_3寻址方式和指令系统寻址方式和指令系统是计算机原理中非常重要的概念,它们决定了计算机能够进行的操作和数据的处理方式。

下面将从寻址方式和指令系统的概念、分类和特点三个方面详细介绍。

一、寻址方式在计算机中,寻址方式是指CPU访问内存中数据的方式。

常见的寻址方式包括直接寻址、间接寻址、变址寻址和相对寻址等。

1、直接寻址直接寻址是指通过给出数据的内存地址来访问数据。

在直接寻址中,指令中给出了待访问的内存地址,CPU直接从该内存地址中读取/写入数据。

2、间接寻址间接寻址是指通过寄存器中的地址来访问数据。

在间接寻址中,指令中给出了一个寄存器的编号,CPU将寄存器中的地址作为内存地址进行读取/写入操作。

3、变址寻址变址寻址是指通过给出基地址和偏移量来计算内存地址的方法。

在变址寻址中,指令中给出了一个基地址和一个偏移量,CPU通过将两者相加来得到最终的内存地址进行操作。

4、相对寻址相对寻址是指通过给出相对于指令计数器的偏移量来计算内存地址的方式。

在相对寻址中,指令中给出了一个偏移量,CPU将偏移量与指令计数器相加来得到最终的内存地址。

二、指令系统指令系统是指计算机可以执行的指令的集合。

根据指令的类型和功能划分,指令系统可以分为以下几种类型。

1、数据传输指令数据传输指令用于在CPU和内存、寄存器之间传输数据。

例如,将内存中的数据传送到寄存器中或将寄存器中的数据传送到内存中等。

2、算术指令算术指令用于进行数值运算,如加、减、乘、除等。

这些指令可以对寄存器或内存中的数据进行算术运算,并将结果存放在寄存器或内存中。

3、逻辑指令逻辑指令用于进行逻辑运算,如与、或、非等。

这些指令可以对寄存器或内存中的数据进行逻辑运算,并将结果存放在寄存器或内存中。

4、控制指令控制指令用于控制程序的执行流程,如跳转、条件分支等。

这些指令可以根据条件改变程序的执行顺序或跳转到指定的地址执行。

指令系统的设计需要考虑指令的种类、格式、寻址方式和作用等因素。

汇编语言第3章 指令系统和寻址方式

汇编语言第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)

寻址方式和指令系统

寻址方式和指令系统

寻址⽅式和指令系统《微机原理》复习思考题第3章 8086的寻址⽅式和指令系统3.1 8086汇编语⾔指令的寻址⽅式有哪⼏类?⽤哪⼀种寻址⽅式的指令执⾏速度最快?3.2 直接寻址⽅式中,⼀般只指出操作数的偏移地址,那么,段地址如何确定?如果要⽤某个段寄存器指出段地址,指令中应如何表⽰?3.3 在寄存器间接寻址⽅式中,如果指令中没有具体指明段寄存器,那么,段地址如何确定?3.4 ⽤寄存器间接寻址⽅式时,BX,BP,SI,DI分别针对什么情况来使⽤?这四个寄存器组合间接寻址时,地址是怎样计算的?举例进⾏说明。

3.5 设DS=2100H,SS=5200H,BX=1400H,BP=6200H,说明下⾯两条指令所进⾏的具体操作:MOV BYTE PTR [BP], 2000MOV WORD PTR [BX], 20003.6 使⽤堆栈操作指令时要注意什么问题?传送指令和交换指令在涉及内容操作数时分别要注意什么问题?3.7 下⾯这些指令中哪些是正确的?哪些是错误的?如果是错误的,请说明原因。

XCHG CS, AXMOV [BX], [1000]XCHG BX, IPPUSH CSPOP CSIN BX, DXMOV BYTE[BX], 1000MOV CS, [1000]3.8 8086系统中,当对SS和SP寄存器的值进⾏修改时,有什么特殊规定?这样做的原因是什么?[解答] 凡是遇到给SS寄存器赋值的传送指令时,系统会⾃动禁⽌外部中断,等到本条指令和下条指令执⾏之后,⼜⾃动恢复对SS寄存器赋值前的中断开放情况。

这样做是为了允许程序员连续⽤两条指令分别对SS和SP寄存器赋值,同时⼜防⽌堆栈空间变动过程中出现中断。

3.9 以下是格雷码的编码表0——0000 1——0001 2——0011 3——0010 4——01105——0111 6——0101 7——0100 8——1100 9——1101请⽤换码指令和其他指令设计⼀个程序段,实现格雷码往ASCII的转换。

微机原理第3章指令

微机原理第3章指令

第3章指令系统机器指令:能指示计算机完成基本操作的二进制代码指令系统:CPU可执行的机器指令的集合。

为了方便编程,人们又把完成特定操作的机器码用特定的符号表示,这就产生了符号表示的机器指令-------指令助记符。

第3章8086指令系统机器指令由二进制代码组成,一条指令包括操作码和操作数(或地址)两部分,操作码指明该指令进行何种操作,操作数用来说明操作对象。

个别指只有操作码没有操作数。

由于不同的指令所表达的信息不尽相同,因此指令的长度即机器码字节数也有长有短。

8086指令系统的指令是可变长指令(1~6个字节)3.18086CPU寻址方式重点是存储器寻址存放在存储器中的数据称为存储器操作数。

指令中需要确定存储单元的段地址、偏移地址(亦称有效地址EA),以及存储器操作数的类型。

段地址存放在段寄存器中,确定段地址实际上就是确定段寄存器,采用的方法是默认或添加段超越前缀。

生成存储器有效地址有多种方法,这些方法形成了对存储器操作数的多种寻址形式。

确定数据类型的方法是源操作数和目的操作数类型一致原则或附加类型说明。

立即寻址方式中操作数也在存储器中,但立即寻址中的立即数包含在指令中,随程序存放在代码段,CPU在取指令时就获得操作数。

这里所说的存储器操作数是存放在数据段、附加段或堆栈段中,取指令时也不会被立即取到。

段超越前缀变量的定义在第四章详细介绍直接寻址:MOV AX,[2000H];寄存器间接寻址:MOV ES:[DI],AH基址寻址:MOV BYTE PTR[BX+1200H],10变址寻址:MOV DL,[SI+2AH]基址加变址寻址:MOV CL,[BX+SI+5]MOV AX,[BP+DI]MOV CL,[BX+SI+5]的等价形式:MOV CL,5[BX][SI]、MOV CL,5[BX+SI]、MOV CL,[BX][SI+5]MOV CL,[BX+SI-5]等价于MOV CL,[BX+SI+65531] MOV CL,[BX-SI]MOV CL,[SI+DI]错误!MOV[BX+DI],1000H正确吗?3.2.1数据传送类指令传送指令把数据从一个位置传送到另一个位置使用MOV指令应注意1.立即数只能作为源操作数2.无存储器之间直接传送与交换的指令3.没有用立即数对段寄存器直接赋值的指令4.段寄存器之间无传送指令5.两个操作数的类型要一致6.要能确定是字节还是字操作mov ah,al mov bvar,ch mov ax,bx mov ds,ax mov al,[bx]下列MOV指令正确吗?MOV AL,050AHMOV SI,DLMOV[BX+SI],255MOV DS,100HMOV[BX],[SI]MOV[BX+SI],bvarbvar是一个已定义过的字节变量 MOV CS,[SI]将数据段中偏移地址为2000H、2001H、2002H的3个字节的存储单元置数FFH。

第3章8086寻址方式和指令系统-题

第3章8086寻址方式和指令系统-题

第3章8086寻址⽅式和指令系统-题第3章8086寻址⽅式和指令系统⼀、单项选择题(共50⼩题)1、指令MOV AX,[3070H]中源操作数的寻址⽅式为()A、寄存器间接寻址B、⽴即寻址C、直接寻址D、变址寻址2、DS是()A、数据段寄存器B、代码段寄存器C、堆栈段寄存器D、附加数据段寄存器3、CF是()A、进位标志位B、辅加进位标志位C、符号标志位D、全零标志位4、SS是_()A、数据段寄存器B、代码段寄存器C、堆栈段寄存器D、附加数据段寄存器5、指令MOV [BX],AX中A、⽬的操作数是寄存器操作数B、源操作数是存储器操作数C、⽬的操作数是存储器操作数D、源操作数是⽴即操作数6、CS是()A、数据段寄存器B、代码段寄存器C、堆栈段寄存器D、附加数据段寄存器B、源操作数存于堆栈段C、⽬的操作数存于数据段D、⽬的操作数存于堆栈段8、BX是()A、8位通⽤寄存器B、16位通⽤寄存器C、16位段寄存器D、16位变址寄存器9、ZF是()A、进位标志B、⽅向标志C、符号标志D、零标志10、IP是()A、指令指针寄存器B、堆栈指针寄存器C、通⽤寄存器D、变址寄存器11、SI是()A、8位通⽤寄存器B、16位通⽤寄存器C、16位段寄存器D、指令指针寄存器12、DL是()A、16位段寄存器B、16位通⽤寄存器C、8位通⽤寄存器D、16位标志寄存器13、指令IDIV BX 的含义是()A、(AX)/(BX)B、(DX:AX)/(BX)C、(AL)/(BX)D、(AL)/(BL)B、DXC、BPD、DI15、设SS=2000H,执⾏下列程序段后SP=()MOV SP,2000HPUSH AXA、21FFEHB、20000HC、22000HD、22002H16、寄存器间接寻址⽅式中,操作数在( )中。

A、通⽤寄存器B、堆栈C、内存单元D、段寄存器17、JMP WORD PTR[DI]是( )A、段内间接转移B、段间间接转移C、段内直接转移D、段间直接转移18、堆栈指针SP的作⽤是( )。

第3章 80C51单片机的寻址方式和指令系统

第3章 80C51单片机的寻址方式和指令系统
(1)数据传送类指令(29条);
(2)算术运算类指令(24条);
(3)逻辑运算及移位类指令(24条); (4)控制转移类指令(17条); (5)位操作类指令(17条)。
6
本节内容
3.1.1 汇编语言指令格式 3.1.2 机器码的三种格式 3.1.3 指令中常用符号说明
7
3.1.1 汇编语言指令格式
3.4.1 加法指令 3.4.2 减法指令 3.4.3 乘、除法指令
3.5 逻辑运算及移位类指令(24条)
3.5.1 逻辑与运算指令 3.5.2 逻辑或运算指令
3
第2章:80C51系列单片机基本结构及原理
3.5.3 逻辑异或运算指令 3.5.4 累加器清零、取反指令 3.5.5 循环移位指令
目录
3.6 控制转移类指令(17条)
解:指令执行过程如图3-3,结果:(A)= 60H 。 指令在ROM中的机器码为E8H,指令对应的机器码是:E8H=1110 1000B,二进 制的后三位000就是隐含的R0寄存器的编码,如果是R7其编码为111。 由于寄存器在CPU内部,所以采用寄存器寻址可以获得较高的运算速度。
31
32
能实现这种寻址方式的寄存器有: (1)工作寄存器 R0~R7 (4组工作寄存器均可) (2)累加器A (注:使用A为寄存器寻址,使用ACC为直接寻址) (3)寄存器B (注:以AB寄存器对的形式出现时为寄存器寻址,单独出现
一条完整的汇编语言指令通常由标号、操作码、操作数 (一般包括目的操作数和源操作数)及指令的注释构成。 指令格式: [标号:] <操作码> [操作数] [,操作数][;注释]
说明:
①在一条指令中,方括号中的内容可有可无,尖括号中的内容 必须有。

汇编课第3章寻址方式与指令系统之3 (1)

汇编课第3章寻址方式与指令系统之3 (1)

北京理工大学-张华平-2010
24
① 段内直接短转移 格式:JMP SHORT LABEL 例.
JMP SHORT B1 ;无条件转移到B1标号处 A1: ADD AX,BX B1: …
北京理工大学-张华平-2010
25
② 段内直接转移 格式:JMP LABEL 或: JMP NEAR PTR LABEL
同上
测试并取反由SRC 指定的DST中的位
同上
表3-4 位测试指令
北京理工大学-张华平-2010
10
三、位扫描指令
从386开始增加了位扫描指令,它们包括 BSF、BSR指令,可用于扫描操作数中第一个含 1的位。
北京理工大学-张华平-2010
11
1.顺向扫描指令 BSF 格式:BSF DST,RSC 功能:从右向左扫描RSC操作数中第一个含1的
… B3: SUB AX,CX
… C2 ENDS
北京理工大学-张华平-2010
动画演示
29
2.条件转移指令 执行这类指令时通过检测由前边指令已
设置的标志位确定是否转移,所以它们通常 是跟在影响标志的指令之后。这类指令本身 并不影响标志。
条件转移指令的通用汇编格式: JCC LABEL
北京理工大学-张华平-2010
(设为n),空出的位用操作数OPRD2高端的n位 填充,但OPRD2的内容不变,最后移出的位在进 位标志CF中。
2.双精度右移指令 SHRD 格式:SHRD OPRD1,OPRD2,CNT
北京理工大学-张华平-2010
20
3.6 程序控制指令
本节提供的指令可以改变程序执行的顺 序,控制程序的流向。它们均不影响标志位。
表3-7 检测北单京理个工大条学件-张华标平志-201位0 转移指令 33

汇编语言 第3章1 80x86的指令系统和寻址方式

汇编语言 第3章1 80x86的指令系统和寻址方式
– 4个段寄存器seg:
CS、DS、SS、ES
寄存器寻址指令
MOV AX,1234H MOV BX,AX ;AX←1234H ;BX←AX
寄存器寻址
3.1.4 存储器寻址方式
指令中给出操作数的主存地址信息(偏移
地址,称之为有效地址EA),而段地址在 默认的或用段超越前缀指定的段寄存器中
8086设计了多种存储器寻址方式
量之和,寄存器可以是BX、BP或SI、DI 有效地址=BX/BP/SI/DI+8/16位位移量
段地址对应BX/SI/DI寄存器默认是DS,对应BP
寄存器默认是SS;可用段超越前缀改变 MOV AX,[DI+06H]; mov ax,table[di] ;AX←DS:[DI+06H] MOV AX,[BP+06H] ;AX←SS:[BP+06H] 相对寻址
;AX←DS:[BX+SI+06H]
相对基址变址
位移量可用符号表示 同一寻址方式有多种表达形式
指令操作数的表达-寄存器
r8——任意一个8位通用寄存器
AH AL BH BL CH CL DH DL
r16——任意一个16位通用寄存器
AX BX CX DX SI DI BP SP
reg——代表r8或r16
(4)基址变址寻址方式
有效地址由基址寄存器(BX或BP)的内容加上
变址寄存器(SI或DI)的内容构成:
有效地址=BX/BP+SI/DI
段地址对应BX基址寄存器默认是DS,对应BP
基址寄存器默认是SS;可用段超越前缀改变 MOV AX,[BX+SI] ;AX←DS:[BX+SI] MOV AX,[BP+DI] ;AX←SS:[BP+DI] MOV AX,DS:[BP+DI] ;AX←DS:[BP+DI]

第三章 8086的寻址方式

第三章 8086的寻址方式
7
8086/8088指令概述
操作数的一般形式: 3、存储器操作数:这类操作数是指定存储单元 的内容或该单元的地址.
例1:MOV DS:[1000H], AL 其意义是将AL的内容送存储器数据段中偏移地址为 1000H的单元中去。
例2: 若指令改写为MOV AL,DS: [1000H]
指令意义为将数据段中偏移地址为 1000H 单元中的 内容送AL寄存器。前者指的是存储单元的地址,后者指 的是存储单元的内容
22
3.1 寻址方式
直接寻址: 符号地址:
8086/8088指令寻址方式
例3 :AREA1 EQU 0867H ; 等值伪指令EQU给常数0867H定义 一个符号AREA1 MOV AX,AREA1 ;AX=0867H 例4:AREA1 DW 0867H ;DW伪指令用来定义变量,
变量用来表示存储器中的数据。变量名AREA1表示内存中 一个数据区的名字,也就是符号地址,该地址单元存放一个字 数据0867H。 MOV AX,AREA1 ;
4、隐含操作数:这类操作数被操作助记符隐含着。 如,对压缩BCD加法结果进行调整的DAA,其操 作数就是隐含操作数AL。
5 、I/O端口操作数:可以作源操作数或目的操作数。 (I/O端口地址,可以直接或寄存器间接给出)
如: IN AL, 44H
OUT 量和常量三个概念:
例如:MOV AX,BX
3
8086/8088指令概述
例如:MOV AX,BX
用 MOV表示进行数据传送的操作码,用 AX、 BX表示操作数, 显然这样的表示方式更清晰,更便于记忆和使用。 用符号、助记符书写的指令称为符号指令。用符号指令书写程 序的规范称为汇编语言,对应的程序称为汇编语言源程序。

微型计算机原理与接口技术课件-第三章指令系统和寻址方式

微型计算机原理与接口技术课件-第三章指令系统和寻址方式
指出的存储区进行直接寻址,应在指令中指定段
超越前缀。例如,数据若放在附加段中,则应在
有效地址前加“ES:”,这里的冒号“:”称为 修改
属性运算符,计算物理地址时要用ES作基地址, 而不再是默认值DS。
例如: MOV AX,ES:[500H] 该指令的源操作数的物理地址等于16×ES+
500H。
3.符号地址 在汇编语言中还允许用符号地址代替数值地
MOV CL,AH 注意:源操作数的长度必须与目的操作数一
致,否则会出错。例如,不能将AH寄存器的内 容传送到CX中去,尽管CX寄存器放得下AH的 内容,但汇编程序不知道将它放到CH还是CL中。
这种寻址方式的优点是:寄存器数量 一般在几个到几十个,比存储器单元少很 多,因此它的地址码短,从而缩短了指令 长度,节省了程序存储空间;另一方面, 从寄存器里取数比从存储器里取数的速度 快得多,从而提高了指令执行速度。
用汇编语言(即主要由指令系统组成的语言)编写的程 序称为汇编语言源程序,若直接将它送到计算机,机器
并不认识那些构成程序的指令和符号的含义,还必须由
汇编程序将源程序翻译成计算机能认识的二进制机器语
言指令(机器码)后,才能被计算机识别和执行,得到运算 结果。
8086指令系统采用变长指令,指令的长度可由l~6 字节组成。一字节指令中只包含8位操作码,没有操作数。 如清进位位指令CLC的机器码为1111 1000,可直接从指 令编码表中查到。对于大部分指令来说,除了操作码(不 一定是8位)外,还包含操作数部分,所以要由几个字节组 成。不同的指令,其操作码和寻址方式都是不一样的,
例如:AREA1 EQU 0867H MOV AX,AREA1
例如:AREA1 DW 0867H MOV AX,AREA1 (该指令也可

单片机指令系统-第3讲寻址方式

单片机指令系统-第3讲寻址方式

单片机指令系统-第3讲寻址方式单片机指令系统第 3 讲寻址方式在单片机的世界里,指令系统就如同它的语言规则,而寻址方式则是这套规则中至关重要的一部分。

简单来说,寻址方式决定了单片机如何找到操作数,也就是数据在存储器中的位置。

就好像我们在图书馆找一本书,需要知道它在哪个书架、哪一排,这就是“寻址”。

在单片机中,常见的寻址方式有以下几种:1、立即寻址立即寻址是最简单直接的一种方式。

在这种寻址方式中,操作数直接包含在指令中。

比如说,指令“MOV A, 50H”,这里的“50H”就是操作数,它直接跟在指令后面,单片机一看就知道要把 50H 这个值送到累加器 A 中。

这种方式的优点是指令执行速度快,因为操作数就在指令中,不需要再去别的地方找。

但缺点也很明显,就是能表示的操作数范围有限,通常只能是 8 位或 16 位的数值。

2、直接寻址直接寻址就稍微复杂一点了。

在这种方式下,操作数的地址直接出现在指令中。

例如,指令“MOV A, 30H”,这里的 30H 是操作数所在的地址,单片机通过这个地址就能找到存储在 30H 单元中的数据,并把它送到累加器 A 中。

直接寻址可以访问片内 RAM 的 00H 7FH 单元以及特殊功能寄存器(SFR)。

但要注意的是,对于 SFR,只能使用直接寻址方式进行访问。

3、寄存器寻址寄存器寻址就是操作数在寄存器中。

比如指令“MOV A, R0”,就是把寄存器 R0 中的内容送到累加器 A 中。

这种方式的优点是指令短,执行速度快,因为寄存器的访问速度通常比内存快得多。

在 8051 单片机中,寄存器寻址可以使用工作寄存器 R0 R7 以及部分特殊功能寄存器。

4、寄存器间接寻址寄存器间接寻址与寄存器寻址有点类似,但操作数的地址在寄存器中。

比如指令“MOV A, @R0”,这里的 R0 中存放的不是操作数,而是操作数的地址,单片机先从 R0 中取出地址,再根据这个地址找到操作数并送到累加器 A 中。

第03章 MCS - 51单片机指令系统

第03章 MCS - 51单片机指令系统
这里源操作数不能进行寄存器间接寻址, 也就是MOV Rn , @Rn 这个指令是不能用 的。
第 二 节 数 据 传 送 指 令
第3章 MCS-51单片机指令系统
(2)将数据传送到工作寄存器Rn的指令(3条) 例:已知累加器A的内容为30H,寄存器R7的内容 为50H,内部RAM30H单元的内容为40H,内部 RAM50H单元的内容为10H,请指出下列每条指令 执行以后相应单元内容的变化.
第 一 节 指 令 格 式 与 寻 址 方 式
第3章 MCS-51单片机指令系统
(6) 相对寻址:
在MCS -51 指令系统中设有转移指令, 分 为直接转移和相对转移指令, 在相对转移 指令中采用相对寻址方式。这种寻址方式 是以PC的内容为基本地址, 加上指令中给 定的偏移量作为转移地址,也就是目的地 址(用来修改PC的值)。指令中给出的偏 移量是一个 8 位带符号的常数, 可正可负, 其范围为-128~+127。
第3章 MCS-51单片机指令系统
(1) 立即寻址:
立即寻址方式是将操作数直接存放在指令字 节中,作为指令的一部分存放在代码段里。 比如:MOV A, #3AH 跟在指令操作码后面的数就是参加运 算的数, 该操作数称为立即数。立即数有一字 节和二字节两种可能, 如指令: MOV DPTR, #0DFFFH 上述两条指令均为立即寻址方式, 第 一条指令的功能是将立即数 3AH送累加器A中, 第二条指令的功能是将立即数 0DFFFH送数据 指针DPTR中(DPH, 0FFH→DPL)。
第 二 节 数 据 传 送 指 令
第3章 MCS-51单片机指令系统
3.2数据传送指令
程序中使用最多的指令,主要用于内部RAM、 寄存器、外部RAM以及程序存储器之间的数据 传送、保存以及交换。 工作原理:将源操作数简单地传给目的 操作数,而源操作数的内容不变,PSW的内容 不改变。 分类:内部数据传送指令、外部传送指 令、查表指令、交换指令和堆栈指令。

第3章C54x的寻址方式

第3章C54x的寻址方式
3.1.4 直接寻址
DP地址的范围是从0~511(29-1),将存储器分成 512页。
7位dmad范围是从0~127,每页有128个可以访 问的单元。
以DP为基准的直接寻址是由DP值确定是512页中 的哪一页,由dmad确定是该页中的哪一个单元。
SP可以指向存储器中的任意一个地址。dmad可
以指向当前页中具体的单元,从而允许访问存储器
A 立即数的数值形式:
程序存储
① 短立即数。3、5、8、9位,单字指器令;
② 长立即数。16位,双字指令。 操作码 特点:指令中含有一个固定的立即数立,即运数行速度 较快,但需占用程序存储空间,并且数值不F1能80改变。
用途:用于表示常数或对寄存器初始化。
2021/4/22
DSP技术及应用
立即数寻址
❖ AR0-AR7的内容相当灵活,可以装入立即数, 加上立即数,减去立即数,也可以从数据存 储器中装入地址,还可以作以下的变址寻址
2021/4/22
DSP技术及应用
2021/4/22
DSP技术及应用
2021/4/22
DSP技术及应用
❖ 将该AR的内容加1或减1,然后再寻址(循环 常用)。
❖ 将该AR的内容加或减AR0的内容,然后再寻 址
❖ 将该AR的内容逆向进位加或减AR0的内容, 然后再寻址
2021/4/22
DSP技术及应用
寻址方式:间接寻址
ADD *,8,A ;将当前辅助寄存 器所指的地址里的数据,左移8-bit 后加给AccA
存储器映像 :用来改变映像寄存器,但不影响DP或SP的值 寄存器寻址 堆栈寻址 :用来管理系统堆栈中的操作
2021/4/22
DSP技术及应用
第3章 TMS320C54x的指令系 统

第3章AT89C51的指令系统

第3章AT89C51的指令系统
址寄存器加变址寄存器间接寻址方式。 (1) MOVC A,@A+PC
以PC作基址寄存器,A的内容作为无符号整数和PC中的内容 (下一条指令的起始地址)相加后得到一个16位的地址, 该地址指出的程序存储单元的内容送到累加器A。
注意:PSEN*信号有效。
例如: (A)=30H,执行地址1000H处的指令 1000H: MOVC A,@A+PC
(2)特殊功能寄存器中的可寻址位 在指令中有4种表示方法: a. 直接使用位地址。例如PSW.5的位地址为0D5H。 b. 位名称的表示方法。例如:PSW.5是F0标志位,可使用F0表
示该位。 c.单元地址加位数的表示方法。例如 :(0D0H).5。 d.特殊功能寄存器符号加位数的表示方法。例如:PSW.5。
(2)双字节指令:操作码+操作数。 (3)三字节指令:操作码+操作数+操作数。
3.3 指令系统的寻址方式 寻址方式就是在指令中说明操作数所在地址的方法。 共7种寻址方式。
1.寄存器寻址方式 操作数在寄存器中
MOV A,Rn ;(Rn)→A,n=0~7 表示把寄存器Rn的内容传送给累加器A
寻址范围: (1)4组通用工作寄存区共32个工作寄存器。 (2)部分特殊功能寄存器,例如A、B 以及数据指针寄存器
7.相对寻址方式 在相对寻址的转移指令中,给出了地址偏移量,以“rel”表示,
即把PC的当前值加上偏移量就构成了程序转移的目的地址: 目的地址=转移指令所在的地址 + 转移指令的字节数 + rel
偏移量rel是一带符号的8位二进制数补码数。 范围是:–128 - +127
向地址增加方向最大可转移(127+转移指令字节)个单元地 址,向地址减少方向最大可转移(128-转移指令字节)个 单元地址。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第3章 指令系统和寻址方式
3.1 寻址方式
3.1.1 与数据有关的寻址方式 1、立即寻址方式;2寄存器寻址方式;3、 直接寻址方式;4、寄存器间接寻址方式; 5、寄存器相对寻址方式;6、基址变址寻 址方式;7、相对基址变址寻址方式;8、 比例变址寻址方式;9、基址比例变址寻 址方式;10、相对基址比例变址寻址方式
6 基址变址寻址方式
MOV AX,[BX][DX]或MOV AX,[BX+DX] (DS)=2100,(BX)=0158,(DI)=10A5H
7 相对基址变址寻址方式
MOV AX,MASK[BX][SI]或MOV AX,MASK[BX+SI] 或MOV AX,[MASK+BX+SI]
(DS)=3000H,(BX)=2000H,(SI)=1000H,MASK=0250H
3.3.3 逻辑指令(逻辑运算指令)
1、AND 2、OR 3、NOT 4、XOR 5、TEST 逻辑与 逻辑或 逻辑非 异或 测试
3.3.3 逻辑指令
位测试并修改指令 位扫描指令
2、OUT (output) 长格式: OUT OUT OUT 短格式: OUT OUT OUT 输出
PORT,AL PORT,AX PORT,EAX DX,AL DX,AX DX,EAX

把端口28的内容经过AX传送到存储单元DW中 IN AX,28H MOV DW,AX 把端口03FC的内容传送到EAX寄存器中 MOV DX,03FCH IN EAX,DX
8、XCHG (exchange) 如:XCHG AX,BX 交换
3.3.1数据传送指令(累加器)
1、IN (input) 长格式: IN IN IN 短格式: IN IN IN 输入 AL,PORT AX,PORT EAX,PORT AL,DX AX,DX EAX,DX
3.3.1数据传送指令(累加器)
3.3.2 算术指令(加法指令)
3、INC(increment) 自加1 如:INC CL 若: (CL)=05H 则: (CL)=06H 注:和ADD标志位设置一样,只是不影响 CF。
3.3.2 算术指令(加法指令)
4、XADD(exchange and add)交换并相加 如:XADD BL,DL 若: (BL)=12H,(DL)=02H 则: (BL)=14H,(DL)=12H
3.3.1数据传送指令(标志寄存器)
1、LAHF 标志送AH 2、SAHF AH送标志寄存器 3、PUSHF/PUSHFD 标志进栈 4、POPF/POPFD 标志出栈 操作时只操作标志寄存器(FLAGS)的低 字节
3.3.1数据传送指令(类型转换)
1、CBW 2、CWD/CWSE 3、CDQ 4、BSWAP 字节转换为字 字转换为双字 双字转换为4字 字节交换
例:
如(AL)=0B4H,(BL)=11H,则执行指 令 MUL BL和IMUL BL后的结果。
3.3.2 算术指令(除法指令)
1、DIV 无符号除法指令 (unsigned divide) DIV SRC 字节: (AL)<(AX)/(SRC)的商 (AH)<(AX)/(SRC)的余数 2、IDIV 带符号除法指令 (signed divide)
3.3.2 算术指令(加法指令)
1、ADD(add) 加法 如:ADD DX,0F0F0H 若: (DX)=4625H 则: (DX)=3724 且:ZF=0,SF=0,CF=1,OF=0。
3.3.2 算术指令(加法指令)
2、ADC(add with carry) 带进位加法 如:ADD AX,CX ADC DX,BX 若:(DX)=0002H,(AX)=0F365H (BX)=0005H,(CX)=0E024H 则:1 (AX)=0D389H,SF=1,ZF=0, CF=1,OF=0。 2 (DX)=0008H, SF=0,ZF=0, CF=0,OF=0。
3.3.2 算术指令(十进制调整指令)
AAM 乘法的ASCII调整指令 如:求BCD码运算6×9。 MOV AL,6 MOV BL,9 MUL BL AAM
3.3.2 算术指令(十进制调整指令)
AAD 除法的ASCII调整指令 如:求BCD码运算6×9/3
MOV AL,6 MOV BL,9 MUL BL AAM ADD MOV BL,3 DIV BL AAM
例:
设(AX)=0400H,(BL)=0B4H 求执行: DIV BL IDIV BL (AX)是多少?

计算(V-(X×Y+Z-540))/X,X,Y,Z,V 均为16位带符号数,将最终结果的商存放在 AX中,余数放在DX中。

有一个CPU连接两个设备,端口号分别为 02H和053DH,编写一条程序,让02H端 口的8位数乘以15H,再除以053DH端口 的8位数减3AH的差。结果放在AH和AX中。
3.1.2与转移地址有关的寻址方式
4 段间间接寻址
JMP DWORD PTR[INTERS+BX]
3.3 8086的指令系统
可以分为以下6组: 数据传送指令 逻辑指令 控制转移指令
算术指令 串处理指令 处理机控制指令
3.3.1 数据传送指令(通用数据)
1、MOV 传送 (move) 如: MOV AX,DATA_SEG MOV DS,AX 如: MOV AL,`E` 如:MOV AX,Y[BP][SI]
4、NEG 求补指令 (negate) (1)当操作数为0时,求补运算结果使CF=0, 其他情况均为1。 (2)当对-128,-32768等求补时,OF=1, 其他情况均为0。
3.3.2 算术指令(减法指令)
5、CMP 比较指令 (compare) 6、CMPXCHG 比较并交换 ( compare and exchange) 7、 CMPXCHG8B 比较并交换8字节指令 ( compare and exchange 8 byte)
3.3.1 数据传送指令(通用数据)
6、PUSHA/PUSHAD 所有寄存器进栈 (push all registers) 顺序:AX,CX,DX,BX,
EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI
7、POPA/POPAD (pop all registers)
所有寄存器出栈
3.3.1 数据传送指令(通用数据)
例:
设X、Y、Z为双精度数,他们分别存放在数 据段偏移地址为X,X+2;Y,Y+2;Z, Z+2的存储单元中,高位高地址。在8086 中实现 X+Y+24-Z,并存放在W,W+2单 元中。
3.3.2 算术指令(乘法指令)
1、MUL 无符号乘法指令 (unsigned multiple) MUL SRC 字节: (AX)<(AL)×(SRC) 字: ( DX,AX)<(AX)×(SRC) 双字: ( EDX,EAX)<(EAX)×(SRC) 2、IMUL 带符号乘法指令 (signed multiple)
比例寻址方式
8 比例变址寻址方式
(直接变址寻址方式)
9 基址比例变址寻址方式
(基址变址寻址方式)
10 相对基址比例变址寻址方式
(相对基址变址寻址方式)
例题
设有关寄存器及存储单元的内容如下:
DS=1000H,BX=0100H,SI=0002H [10100H]=12H,[10101H]=34H,[10102]=56H, [10103H]=78H,[11200H]=A1H,[11201]=B2H [11202H]=C3H,[11203H]=D4H 1、MOV CX,1200H CX=? 2、 MOV CX,BX CX=? 3、 MOV CX,[1200H] CX=? 4、 MOV CX,[BX] CX=? 5、 MOV CX,1100H[BX] CX=? 6、 MOV CX,[BI][SI] CX=? 7、 MOV CX,1100H[BI][SI] CX=?
2、SBB 带借位减法指令 (subtract with borrow) SBB DST,SRC 如: SUB AL,BL SBB AH,BH =SUB AX,BX
3.3.2 算术指令(减法指令)
3、DEC 减1指令 (decrement) 如: MOV AX,12H DEC AX
3.3.2 算术指令(减法指令)
3.3.2 算术指令(减法指令)
1、SUB 减法 (subtract) SUB DST,SRC 如:SUB [SI+14],0136 若:(DS)=3000H,(SI)=0040H, (30054H)=4336H 则:(30054)=4200,SF=0,ZF=0, CF=0,OF=0。
3.3.2 算术指令(减法指令)
3.3.2 算术指令(十进制调整指令)
1、 DAA 加法的十进制调整指令 如:求BCD码运算28+56,结果送AL。 MOV AL,28H ADD AL,56H DAA
3.3.2 算术指令(十进制调整指令)
DAS 减法的十进制调整指令 如:求BCD码运算56-28,结果送入AL。 MOV AL,56H SUB AL,28H DAS
3 直接寻址方式
MOV AX,[2000H] 如(DS)=3000H
4 寄存器间接寻址方式
MOV AX,[BX] (DS)=2000H,(BX)=1000H
5 寄存器相对寻址方式
(直接变址寻址方式) MOV AX,COUNT[SI]或MOV AX,[COUNT+SI] (DS)=3000H,(SI)=2000H,COUNT=3000H
3.3.2 算术指令(十进制调整指令)
AAA 加法的ASCII调整指令 如:求BCD码运算8+6。 MOV AH,0 MOV AL,8H ADD AL,6H AAA
相关文档
最新文档