第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章 8086的指令系统—3.1寻址方式
例:(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) 寻址方式和指令系统
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]
• 无符号数和有符号数采用同一套加法指令及减法 所有算术运算指令均影响状态标志。 指令有两个条件:
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寻址方式和指令系统寻址方式和指令系统是计算机原理中非常重要的概念,它们决定了计算机能够进行的操作和数据的处理方式。
下面将从寻址方式和指令系统的概念、分类和特点三个方面详细介绍。
一、寻址方式在计算机中,寻址方式是指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)
寻址方式和指令系统
寻址⽅式和指令系统《微机原理》复习思考题第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的转换。
第三章 8086的寻址方式和指令系统
计算机的指令通常包含 操作码 和 操作数 两部分。
设SP为0100H,SS为1000H,则执行PUSH AX 后,
00FE H,SS= 1000 H。 8086系统中,栈底在堆栈的 最高地址 (最高地址端、 最低地址端)。
如果VAL为数据段中0056H单元的符号名,其中存放
16
习题 CH3 寻址方式和指令系统
(6)MOV [SI],[BX] 源、目的操作数不能同时为存储单元 (7)MOV DS,0200H 立即数不能直接送给段寄存器 (8)IN BL,05H BL不能作为IN指令的目的操作数 (9)MOV AX,IP IP不能作为操作数 (10)MOV SI,[DX] DX不能进行寄存器间接寻址 (11)PUSH AL PUSH指令以字为操作单位
用单条指令或程序片段,实现下述功能
(1)将AX高8位取反,低四位置1,其余位不变。
XOR AX, 0FF00H
OR AX, 0FH (2)将AL的高四位与低四位互换。 MOV CL, 4 ROL AL, CL
(3)将BX、AX内容互换。
XCHG AX, BX
12
习题 CH3 寻址方式和指令系统
[BP+SI+4]源操作数的有效地址为
地址为 数的有效地址为
,物理 0214H 24514H 。指令MOV AX,[DI+100H]源操作
0306H,物理地址
为 24306H 。 设AX=2000H,BX=2002H,则在执行了指令CMP AX,
BX后,标志位CF为
1 , AX=
。 2000H
基址变址寻址
(5)MOV AX,10[BX][DI] 相对基址变址寻址
第3章 8086 8088指令系统和寻址方式
第3章 指令系统和寻址方式
3.1 概述 3.2 数据寻址方式 3.3指令格式及指令执行时间 3.4 8088/8086 CPU的指令系统
3.1 指令系统概述
指令是计算机能够识别和执行的指挥计算机进行操作的命
令。指令系统是指微处理器能执行的各种指令的集合。
程序是指令的有序集合,指令是程序的组成元素,通常一
演示
3.2 数据寻址方式
2. 寄存器间接寻址方式
在计算机中通常将BX、BP称为基址寄存器,SI、DI称为
变址寄存器,寻址时操作数的地址被放在这些寄存器中。
寄存器间接寻址方式在汇编格式中表示为
[基址寄存器名或变址寄存器名]
【例】
MOV AX, [BX]
;AX←DS:[BX]
演示
3.2 数据寻址方式
直接寻址方式是指寻找的操作数的地址在指令中直接给出。 这种寻址方式在汇编格式中表示为 ● 操作码 地址表达式 (或[地址表达式]) ● 操作码 [数字表达式]
3.2 数据寻址方式
【例】
MOV AX, [2000H];AX←DS:[2000H] MOV AX, ES: [2000H] ;AX←ES:[2000H]
MOV AX, 0102H
;AX←0102H
演示
3.2 数据寻址方式
3.2.2 寄存器寻址方式
寄存器寻址是指寻找的操作数在某个寄存器中。 格式: 操作码 寄存器名
比如AL,BX,CX,DS、IP等等。 【例】
MOV AX, BX
;AX←BX
演示
3.2 数据寻址方式
3.2.3 存储器寻址方式
1. 直接寻址方式
若(CS)=5200H 时,物理转移地址为 B230H,则当CS 的内容被设定为7800H, 物理转移地址应为多少? =9230H 78000H +9230H=81230H。
第3章 80C51单片机的寻址方式和指令系统
(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章 寻址方式与指令系统
- 8-
⑵ 寄存器间接寻址
若操作数在存储器中,存储单元有效地址被放在基址寄存器 BX、BP或变址寄存器SI、DI中,则称为寄存器间接寻址。 寄存器间接寻址方式在汇编格式中表示为: [基址寄存器名或变址寄存器名] 例如: MOV AX,[BX] ;物理地址=DS×16+BX MOV AL,[BP] ;物理地址=SS×16+BP MOV AX,CS:[DI] ;物理地址=CS×16+DI 其中“[BP]”、“[BX]”、“[DI]”都是寄存器间接寻址方式。
-11-
例如,TABLE是数据段中定义的一个变量名,假设它在数据段中的偏移地址为 0100H,有指令: MOV AX,TABLE[SI] 若(DS)=2000H,(SI)=00A0H,(201A0H)=12H,(201A1H)=34H, 则源操作数20位物理地址=20000H+0100H+00A0H=2000H+01A0H=201A0H 操作的示意图如图3.9所示:
3.1.4 指令的执行
要执行的程序段的指令,均保存在存储器中, 当计算机需要执行一条指令时,首先产生这条指令 的相应地址,并根据地址号打开相应的存储单元, 取出指令代码,CPU根据指令代码的要求以及指令 中的操作数,去行相应的操作。
- 4-
3.2 8086寻址方式
3.2.1 数据寻址方式
1. 立即数寻址 操作数直接存放在指令中,紧跟在指令操作码之后。这样的数称为 立即数,相应的寻址方式称为立即寻址方式。这种寻址方式在汇编语言 格式中表示为: 数字表达式 这个数字表达式的值可以是一个8位无符号整数,也可以是一个16 位无符号整数,但不可以为小数。 例如: MOV AX,251 ;将十进制数251送入寄存器AX,“251”是立即数 MOV AL,‘5’ ;将5的ASCII码送入寄存器AL,其中‘5’是立即 数 MOV AL,0E8H ;将8位立即数E8H送入寄存器AL MOV AX,2346H ;将16位立即数2346H送入寄存器AX 可以看到,立即数寻址方式主要用来给寄存器或存储单元赋值,因 此这种寻址方式不能用于单操作数指令;若用于双操作数指令,也只能 用于源操作数字段,不能用于目标操作数字段。
单片机指令系统-第3讲寻址方式
单片机指令系统-第3讲寻址方式单片机指令系统第 3 讲寻址方式在单片机的世界里,指令系统就像是它的“语言规则”,而寻址方式则是这套规则中非常关键的一部分。
理解了寻址方式,我们就能更有效地编写单片机程序,让单片机按照我们的意愿准确地工作。
那么,什么是寻址方式呢?简单来说,寻址方式就是告诉单片机如何找到我们需要操作的数据或者指令的地址。
就好像我们要在一个大仓库里找到特定的物品,需要有明确的方法和路径一样。
单片机常见的寻址方式有好几种,下面我们来逐一了解。
首先是直接寻址。
这就好比我们知道物品就在某个特定的房间里,直接去那个房间就能找到。
在单片机中,直接寻址就是指令中直接给出操作数所在的存储单元地址。
比如说,指令“MOV A, 30H”,这里的“30H”就是直接给出的存储单元地址,单片机就会从这个地址中取出数据送到累加器 A 中。
接着是寄存器寻址。
想象一下,我们把常用的物品放在了几个固定的抽屉里,要找的时候直接打开对应的抽屉就行。
在单片机中,寄存器就是这样的“抽屉”。
比如指令“MOV A, R0”,就是把寄存器 R0 中的内容送到累加器 A 中。
因为寄存器的数量有限,所以这种方式通常用于频繁使用的数据操作,能够提高程序的执行效率。
然后是寄存器间接寻址。
这有点像我们知道物品在某个抽屉里,但抽屉里放的是一张纸条,纸条上写着物品真正存放的位置。
在单片机中,寄存器里存放的是操作数的地址,单片机需要先从寄存器中取出地址,再根据这个地址去找到真正的操作数。
例如,指令“MOV A, @R0”,就是先找到 R0 寄存器中的地址,然后根据这个地址去取数据送到累加器 A 中。
再来说说立即寻址。
这种方式就像是我们手里直接拿着要找的物品,不需要再去别的地方找。
在指令中,操作数直接包含在指令中。
比如“MOV A, 30H”,这里的“30H”就是操作数本身,单片机直接把这个数送到累加器 A 中。
变址寻址也是一种重要的方式。
可以把它想象成我们有一本索引手册,根据手册上的规则和当前的一些条件,就能找到我们要的东西。
汇编语言 第3章1 80x86的指令系统和寻址方式
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]
计算机原理指令系统
I/O端口寻址
二. I/O端口寻址
操作数在I/O端口中时,必须通过累加器(AX或AL)实现对端口的访问 1. 直接端口寻址 — 指令直接提供8位端口的地址 例:IN AL, 63H ;AL(63H) 端口寻址时,地址不加[ ],当端口地址可用一个字节来表示时,可使用 直接端口寻址 2. 间接端口寻址 — 由DX寄存器给出16位端口地址
例:MOV AX, [BX+1000H] ;AX BX+1000H 所指向的存储单元 内容
若BX = 2000H,则将数据段(3000H, 3001H)的内容传送给AX
指令也可书写为: MOV AX, 1000H[BX]
7. 基址变址寻址
操作数的有效地址由基址寄存器和变址寄存器的内容相加产生
例:MOV
8086指令介绍
第3.3节 8086指令介绍
8086 CPU共有133条指令,根据操作性质,可分为: ➢ 传输指令 ➢ 算术运算指令 ➢ 逻辑运算和移位指令 ➢ 串操作指令 ➢ 控制转移指令
※ 操作数的符号表示 ✓ DST:目的操作数 ✓ SRC:源操作数 ✓ TARGET:循环、转移和调用指令中的目的操作数
CPU内部操作数寻址
一. 数据寻址方式
1. 立即数寻址
指令中直接给出操作数,指令执行时可以立即得到,此时 把操作数又称作“立即数”
例:MOV AL,5 ;AL5
2. 寄存器寻址
操作数放在CPU内部的寄存器中,在指令中直接指出寄存 器的名字
例:INC CX ;将CX的内容加1
3. 隐含寻址
指令已经默认是对CPU中的某个寄存器操作
PUSH 1000 错误
➢ 操作:DST (SP+1, SP),SP SP+2
第三章 8086的寻址方式
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 (该指令也可
第三章 MCS-51单片机指令系统
位操作类指令(17条)
位操作指令实际就是布尔处理机的指令系统,这 为开关量控制提供了非常有效的手段。
位传送
位置位复位
位运算 位控制转移
位数据传送指令(2条)
MOV MOV
C , bit bit,C
例:片内RAM中(20H)=7FH,执行指令
MOV C,07H 则C=0
位置位复位指令(4条)
调用与返回指令组(4条)
长调用指令 绝对调用指令 子程序返回指令
LCALL addr16 ACALL addr11 RET
中断服务程序返回指令 RETI
空操作指令(1条)
NOP
例:把2000H开始的外部RAM单元中的数据送到3000H
开始的外部RAM单元中,数据个数存放在内部RAM 35H单元。
ANL(ORL,XRL) A , { #data ; direct ; @Ri ; Rn }
2. 直接地址单元与累加器A、立即数之间的逻辑操作(6条)
ANL(ORL,XRL) direct , { A ; #data }
清零与取反指令(2条)
清零: 取反:
CLR A CPL A
循环移位指令(4条)
2. 带进位加法指令(4条) ADDC A , { #data ; direct ; @Ri ; Rn }
3. 带借位减法指令(4条) SUBB A , { #data ; direct; @Ri ; Rn }
影响所有标志位状态
例: 执行指令 MOV A , #0C2H ADD A , #0A9H 对PSW相应状态位的影响如下 1 1 1
3.2 MCS-51指令分类介绍
共分5大类,111条指令。
1.数据传送类指令(29条) 2.算术运算类指令(24条) 3.逻辑运算及移位类指令(24条) 4.控制转移类指令(17条) 5.位操作类指令(17条)
单片机原理及接口技术第三章指令系统
AVR指令集
以简洁、高效著称,具有丰富的算术和逻辑操作指令。
PIC指令集
采用精简指令集(RISC)结构,以高速、低功耗为特 点。
汇编语言基础
汇编语言概念
用助记符代替机器语言中的二进制代码,更易于理解和记忆 。
汇编语言与机器语言关系
汇编语言是机器语言的符号化表示,与机器语言一一对应。
06
指令系统应用与扩展
指令系统在嵌入式系统中的应用
控制程序流程
通过条件判断、循环、跳转等指令,实现程序流 程的控制。
数据处理
对数据进行算术运算、逻辑运算、移位等操作, 满足各种数据处理需求。
系统资源管理
通过指令系统对嵌入式系统的资源进行统一管理 和调度,如内存分配、中断处理等。
自定义指令实现特定功能
提高代码效率
针对特定应用场景,设计专用指令,可以显 著提高代码执行效率。
实现特殊功能
通过自定义指令,可以实现一些标准指令集 无法完成的特殊功能。
优化算法性能
针对某些特定算法,设计专用指令进行优化, 提高算法执行效率。
指令系统扩展方法
指令集扩展
在原有指令集基础上增加新的指令,以支持 更多功能或提高性能。
寻址方式
8051单片机提供七种寻址方式,包括寄存器寻址、直接寻址、寄存器间接寻址 、立即寻址、位寻址、相对寻址和变址寻址,使得编程更加灵活高效。
指令执行时间
8051单片机的指令执行时间通常为1-4个机器周期,部分复杂 指令可能需要更多时间,但总体来说,其执行速度较快。
PIC单片机指令系统简介
精简指令集
高级语言支持
AVR单片机指令系统针对高级语言进行优化,使得使用C语言等高 级语言编程时能够生成高效的代码。
第3章C54x的寻址方式
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.1
基址变址寻址的功能
0D00
MOV AX,[BX] [SI]
7、 基址变址相对寻址
操作数的有效地址是一个基址寄存器内容和一个变址 寄存器的内容和8位或16位偏移量相加之加,其物理 地址为:
(DS)×16+(BX)+(SI/DI)+8位或16位偏移量
(SS)×16+(BP)+(SI/DI)+8位或16位偏移量
有效地址是寄存器内容与有符号8位或16位位移 量之和,寄存器可以是BX、BP或SI、DI。
有效地址=(BX/BP/SI/DI)+8位/16位偏移量
段地址对应BX/SI/DI寄存器默认是DS,对应BP 寄存器默认是SS;可用段超越前缀改变。 常用于表格处理。寄存器内容为指针, 8位/16
位偏移量为偏移量。
5 、寄存器相对寻址
例3-7 假定(DS)=2000H,(SS)=3000H,(SI)=3600H, (BP)=1100H,COUNT=10H,(23620H)=8A76H, (31110H)=4567H MOV AX ,[SI+20H] MOV BX ,[BP+COUNT] 指令MOV BX,[BP+COUNT]书写有下面的等效形式: MOV BX,[BP]+COUNT MOV BX,COUNT[BP] 这种寻址方式可用于表格的处理,通过位移量来设置表格的首地 址;利用修改基址寄存器或变址寄存器的内容来获得表项的值。
多种表达形式
同一寻址方式可以写成不同的形式:
MOV AX,[BX][SI] ;等同于 MOV AX,[BX+SI] MOV AX,COUNT[SI] ;等同于 MOV AX,[SI+COUNT] MOV AX,WNUM[BX][SI] ;等同于 MOV AX,WNUM[BX+SI] ;等同于 MOV AX,[BX+SI+WNUM]
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第3章 8086/8088指令系统与寻址方式
3.1 3.2 3.3 3.4 数的表示 指令格式 数据寻址方式 8086/8088指令系统
第3章 8086/8088指令系统与寻址方式
3.1 数的表示
3.1.1 3.1.2 3.1.3 3.1.4 数制及其相互转换 符号数的表示及运算 定点数和浮点数 字符编码
第3章 8086/8088指令系统与寻址方式
1.2.1 符号数的表示
1.原码
x
0 ≤ x ≤ 2n-1 – 1 -( 2n-1 – 1)≤ x ≤ 0
[x]原 =
2n-1 + |x|
第3章 8086/8088指令系统与寻址方式
字长n=8时:
[+0]原 = [-0]原 = [+1]原 = [-1]原 = [+127]原 = [-127]原 =
例:把十六进制数5A.7转换为二进制数 5 A. 7H = 0101 1010.0111B = 1011010.0111B
第3章 8086/8088指令系统与寻址方式
二进制编码的十进制数(BCD码) 用若干二进制数码表示一位十进制数的方法统 称BCD码。 例:用4位二进制编码,表示一位十进制数
十进制数 0 —— 1 —— 2 —— … 7 —— 8 —— 9 ——
第3章 8086/8088指令系统与寻址方式
方法二:用括号将数字括起,加以下标标注。 例1. 十进制数123表示为:(123)10 例2. 八进制数123表示为:(123)8 例3. 十六进制123表示为:(123)16
第3章 8086/8088指令系统与寻址方式
2. 不同数制算术运算的进、借位
745.64
9999.99
0,1,2,3,4,5,6,7,8,9,A 0A45.B ,B,C,D,E,F
注:为了便于计算机识别,当十六进制数的首 字符为字母时,前面加数字0 。
第3章 8086/8088指令系统与寻址方式
1. 不同数制数的区别表示
方法一:用后缀区分。
例1. 123D 十进制数123 = 1×102 + 2×101 + 3×100 例2. 123O 八进制数123 = 1×82 + 2×81 + 3×80 例3. 123H 十六进制数123 =1×162 + 2×161 + 3×160
i m
r:基数
决定运算的进、借位
rk:权
决定数字在不同位置上的值
第3章 8086/8088指令系统与寻址方式
3.1.1计算机中常用计数制 数 制
二进制
基数 r 2 0,1
数
码
举
例
1013.11
八进制
十进制 十六进制
8
10 16
0,1,2,3,4,5,6,7
0,1,2,3,4,5,6,7,8,9
第3章 8086/8088指令系统与寻址方式
(5)二进制数运算—非、异或
非: 0 = 1; 1 = 0
例:1111 0000 B = 0000 1111B 异或:0 ⊕ 0 = 0 ;0 ⊕ 1 = 1 ;1 ⊕ 0 = 1 ;1 ⊕ 1 = 0 例:1010 1010B ⊕ 1111 0000B = 0101 1010B
并恢复该减法实施之前的数;
4) 重复2)、3),直至该数为0或达到所需精度。
第3章 8086/8088指令系统与寻址方式
例:把十进制数117.75转换成二进制数
1)小于117.75D的二进制权为:
26(64)、25(32)、24(16)、23(8)、22(4)、
21(2)、20(1)、2-1(0.5)、2-2(0.25)……
第3章 8086/8088指令系统与寻址方式
3.二进制数转换为八进制数
方法:二进制数转换为八进制数:以小数点为界,整 数部分向左,小数部分向右每3位二进制数为一组,用 1位八进制数表示,不足三位的,整数部分高位补0, 小数部分低位补0。
例:把10110.11B转换为八进制 10110.11B = 010 110 .110B = 26.6Q
例:0FA3.3BH = 15×162 +10×161+3×160+3×16-1+11×16-2
例:0FFH + 1 = 100H
第3章 8086/8088指令系统与寻址方式
不同数制之间的转换 1. 其它数制转化为十进制数
1013.11B = 1×23 + 0×22 + 1×21+ 1×20+1×2-1+1×2-2
与: 0 ∧ 0 = 0 ;0 ∧ 1 = 0 ;1 ∧ 0 = 0 ;1 ∧ 1 = 1
例:1111 1111B ∧ 1111 0000B = 1111 0000B
或: 0 ∨ 0 = 0 ;0 ∨ 1 = 1 ;1 ∨ 0 = 1 ;1 ∨ 1 = 1 例:1010 1010B ∨ 1111 0000B = 1111 1010B
BCD数 0000 0001 0010
0111 1000 1001
第3章 8086/8088指令系统与寻址方式
1.非压缩BCD
非压缩BCD码用一个字节表示一位十进制数,一般 只用低4位。 十进制数 0 —— 1 —— 2 —— … 9 —— 10 —— … 27 —— BCD数 0000 0000 0000 0001 0000 0010 0000 1001 0000 0001 0000 0000 0000 0010 0000 0111
第3章 8086/8088指令系统与寻址方式
2.压缩BCD
高4位、低4位分别表示一位十进制数。 十进制数 0 —— 1 —— 2 —— … 9 —— 10 —— … 27 —— BCD数 0000 0000 0000 0001 0000 0010 0000 1001 0001 0000 0010 0111
(1)二进制数运算—加、减
加法规则:逢二进一。
0 + 0 = 0 ;0 + 1 = 1 ;1 + 0 = 1 ;1 + 1 = 10 ;
例: 1101 + 1011 = 11000 减法规则:借一当二。
0 - 0 = 0 ;1 - 0 = 1 ;0 -1 = 1 ;1 - 1 = 0 ;
例: 1101 – 1011 = 0010
第3章 8086/8088指令系统与寻址方式
3.1.1 数制及其相互转换
计数制:指用一组固定的数字符号和统一的规则表 示数的方法。 一般,r进制数可以用下式表示:
i m 2 1 0 1 n a r a r a r a r a r a r a r i m 2 1 0 1 n n
例:34Q + 44Q = 100Q
第3章 8086/8088指令系统与寻址方式
5. 十六进制数
• 基数r为16,由0~9,A~F共16个符号组成 • 各个位置上的权为:16k • 小数点左边从右至左其各位的位权依次是: 160 、161 、162 、163 ……; • 小数点右边从左至右其各位的位权依次是: 16-1 、16-2 、16-3 ……。
第3章 8086/8088指令系统与寻址方式
4.八进制数转换为二进制数
方法:把每位八进制数用3位二进制数表示
例:把27.6Q转换为二进制数 2 7.6 Q = 010 113.110B = 10113.11B
第3章 8086/8088指令系统与寻址方式
5.二进制数转换为十六进制数
方法:以小数点为界,整数部分向左,小数部分向右
每4位二进制数为一组,用1位十六进制数表示,不足 4位的,整数部分高位补0,小数部分低位补0。
例: 把二进制数10110.1转换为十六进制数
10110.1B = 0001 0110.1000B = 16.8H
第3章 8086/8088指令系统与寻址方式
6.十六进制数转换为二进制数
方法:把每位十六进制数用4位二进制数表示。
第3章 8086/8088指令系统与寻址方式
(2) 乘除法方法:
例:把十进制数14.625转换成二进制数
整数部分: 商 14 / 2 = 7 7 / 2 = 3 3 / 2 = 1 1 / 2 = 0 小数部分: 余数 · · ·0 · · ·1 · · ·1 · · ·1
a0 a1 a2 a3
= = = =
0 1 1 1
整数部分除2取余, 直至商为0; 小数部分乘2取整, 直至积为整数或 小数位数满足精 度要求.
积 整数 0.625 × 2 = 1.25 · · ·1 a-1 = 1 0.25 × 2 = 0.5 · · ·0 a-2 = 0 0.5 × 2 = 1 · · ·1 a-3 = 1 转换结果为:a3a2a1a0.a-1a-2a-3 = 1110.101B
第3章 8086/8088指令系统与寻址方式
4. 八进制数
• 基数r为8,由0~7共8个数字组成 • 各个位置上的权为:8k • 小数点左边从右至左, 各位的位权依次是: 80 、81 、82 、83 ……; • 小数点右边从左至右其各位的位权依次是: 8-1 、8-2 、8-3 ……。 例:753.45Q = 7×82+5×81+3×80+4×8-1 +5×8-2
第3章 8086/8088指令系统与寻址方式
(3)二进制数运算—除
除法规则:0除以任何数得0,任何数除以1得该数,除数不得为0。
0 ÷ 1 = 0 ;1 ÷ 1 = 1 例: 110 ÷ 10 = 11
10 11 110 10 10 10 0
第3章 8086/8088指令系统与寻址方式