第四章8086的寻址方式与指令系统
04 8088(8086)的指令系统
INC OPRD
操作数:通用寄存器、存储器 (不能是段寄存器或立即数) 执行的操作:OPRD OPRD + 1
功能: 用于在循环中修改地址指针及循环次数等。
注:该指令影响标志位
例: INC BX INC byte ptr [SI]
1. 先将SP所指单元内容 送至AL, 然后 SP+1SP ;
2. 再SP所指单元内容送 至AH, 然后 SP+1 SP
例:MOV AX,5678H POP AX
(3) 交换指令 XCHG OPRD1, OPRD2
在寄存器间或寄存器与存储器间交换信息(不允许使用段寄存器)。
源操作数: 寄存器、存储器 目的操作数:寄存器、存储器 执行的操作:( OPRD1) (OPRD2 )
DS=1000h
buffer 10100h 00 02 00 20
0100h BX
(2) LDS 把源操作数指定的内存的4个相继字节的内容送至指定寄存器及DS中
LDS REG, SRC
(REG) (SRC)
(DS) (SRC+2)
目的操作数
源操作数
(16位通用寄存器) (内存操作数)
• 该指令完成一个32位地址指针的传送; • 该指令通常指定 SI 作寄存器 REG。
• CPU内部寄存器之间的数据传送(除CS,IP外) MOV AL,BL MOV DX, DI MOV SI, BP MOV DS, BX MOV AX,DX
• 立即数传送到CPU内部通用寄存器组(AX,BX,CX,DX,BP,SP,DI,SI)
MOV CL, 4 MOV DX, 03FFH MOV DI, 04BFH
DST+SRC+C
微型计算机原理-第4章(4)微机原理与接口技术(第三版)(王忠民)
第四章 80x86 指令系统—累加器专用指令
⑴ 输入指令 ①直接寻址的输入指令 指令格式及操作:
IN acc, port ;(acc) ←(port)
②间接寻址的输入指令
指令格式及操作:
IN acc, DX
;(acc) ←((DX))
第四章 80x86 指令系统—累加器专用指令
⑵ 输出指令
①直接寻址的输出指令 指令格式及操作:
第四章 80x86 指令系统—通用数据传送指令
说明: *堆栈按后进先出原则组织。 *堆栈操作以字为单位进行。 *目的操作数dst不可以是CS。 *指令中的操作数不能是立即数。
第四章 80x86 指令系统—通用数据传送指令
例:已知(AX)=1234H,(BX)=5678H,分析下面程序段的执 行过程。
REG <=> REG/MEM • 段寄存器的内容不能参加交换
例: XCHG BX,[BP+SI]
第四章 80x86 指令系统—累加器专用指令
(二) 累加器专用指令 这类指令中的一个操作数必须是累加器。累加器操作数可以 是8位的,也可以是16位的。
第四章 80x86 指令系统—累加器专用指令 1.输入/输出指令
DI 1234H DS 4000H
DM
34H 2130H 12H 00H 2132H 40H
第四章 80x86 指令系统—地址传送指令
3. 地址指针装入ES指令 指令格式:
LES reg16, mem32 此指令的功能是将源操作数所对应的双字长的内存单元中的高 字内容(一般为16位段基址)送入ES,低字内容(一般为偏移地址) 送入指令所指定的寄存器中。例如:
LES DI, [2130H]
DI 1234H ES 4000H
微机原理 第四章 微型计算机指令系统
例: 已知: DS=2000H; SI=1000H 指令: MOV [SI+disp],AX
青岛理工大学琴岛学院
寄存器间接相对寻址过程示意图
CPU
寄存器间接相对 SI=1000H
MOV [SI+20H] 程序 ,AX
CS 偏移1000H
DS
SS
ES
位移20H
青岛理工大学琴岛学院
寄存器相对寻址过程示意图
真正数据所在的地址
青岛理工大学琴岛学院
错误指令举例: 6)基址变址寻址: MOV [BX+CX],AX ; CX不能做变址寄存器 MOV [BX+BP],AX ; BP不能作为变址寄存器 操作数的有效地址 EA等于一个基址寄存器( BX或 MOV [BX+DI],ARRAY; BP)与一个变址寄存器( SI或DI)的内容之和;
总时间=基本执行时间+计算EA的时间+执行总线读/写周期的时间
指令的基本执行时间随指令类型的不同差异很大,访问存 储器既要执行总线的读/写周期,又要计算操作数的有效地址 EA,计算EA的时间又与指令的寻址方式有关。
青岛理工大学琴岛学院
4.2 8086/8088指令系统
数据传送类指令
算术运算类指令 位操作类指令 串操作类指令 控制转移类指令 处理器控制类指令
21000H 20 位 物 理 地 址 真正数据所在的地址 Memory DS … 20000H
…
78H 21000H 56H
青岛理工大学琴岛学院
4)寄存器间接寻址:
此方式的操作数存放在存储器单元中,指令给出的 16位寄存器值就是该操作数所在存储单元的EA。
例: 已知: (DS)=2100H,(DI)=2000H 指令: MOV AX,[DI] ;(AX) ((DI)) 注:使用BX、SI、DI,操作数在DS段;BP时在SS段 其中寄存器只能是BX、SI、DI、BP
自动控制原理目录
第一章绪论(6学时)
微型计算机发展概况、数制和码制。
第二章 8086 系统结构(8学时)
8086CPU结构、8086CPU的引脚及其功能、8086存储器组织、8086系统配置、8086CPU 时序。
第三章 8086的寻址方式和指令系统(10学时)
8086的寻址方式、指令的机器码表示方法、8086的指令系统。
第四章汇编语言程序设计(10学时)
汇编语言程序格式、MASM中的表达式、伪指令语句、程序设计方法、DOS系统功能调用。
第五章存储器(6学时)
存储器分类、随机存取存储器RAM、只读存储器ROM、CPU与存储器的连接。
第六章 I/O接口和总线(6学时)
I/O接口的功能、简单的输入输出芯片、I/O端口及其编址方式、I/O端口地址译码、CPU 与外设间的数据传送方式。
第七章可编程外围接口芯片8255A及应用(4学时)
8255A的结构和功能、8255A的控制字及初始化编程、8255A工作方式和C口状态字、8255A的应用举例。
第八章可编程计数器/定时器8253及应用(4学时)
8253的内部结构与引脚信号、8253的初始化编程、8253的工作方式、8253与系统的连接、8253的应用举例。
第九章微型计算机中断系统(8学时)
中断处理过程、中断优先级和中断嵌套、可编程中断控制器8259A。
第十章 A/D、D/A转换(6学时)
A/D转换器工作原理、D/A转换器工作原理、转换器与CPU连接。
第十一章高档微处理器(6学时)
CPU内部结构、管脚信号说明、寄存器组成。
楼第4章指令系统习题解答
楼第4章指令系统习题解答习题解答:1.什么是寻址模式?8086/8088 CPU的寻址模式是什么?答:指令的寻址方式就是指获得操作数所在地址的方法。
8086/8088cpu指令的寻址方式可分为8种,为立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、基址变址相对寻址、隐含寻址。
2.指示源操作数和目标操作数在以下指令中的寻址方式(1)movax,[si]源操作数:寄存器寻址目的操作数:寄存器间接寻址(2)movdi,100源操作数:寄存器寻址目的操作数:立即寻址(3)mov[bx],al源操作数:寄存器间接寻址目的操作数:寄存器寻址(4)mov[bx+si],cx源操作数:基址变址寻址目的操作数:寄存器寻址(5)adddx,106h[si]源操作数:寄存器寻址目的操作数:寄存器相对寻址3.阅读以下说明(1)sti对(2)call1000h错(3)divax,dl错(4)shlal,4错(5)popax对(6)inal,[30h]错(7)inccs错(8)out40h,al对4.地址是根据已知的物理条件计算的。
已知:SS=1000h,ES=2000h,DS=3000h,CS=4000H,BX=5000h,di=1200h,BP=2300h(1)(2)(3)(4)(5)5.将SP的初始值设置为2400h,ax=4000H,BX=3600h,然后在执行pushax指令后,SP=?,执行pushbx和popax后,SP=?答:则执行指令pushax后,sp=2400h-2=23feh,再执行pushbx和popaxMovax,[2300h]计算公式:DS×16+2300hmov[BX][di],ax计算公式:DS×16+BX+diaddax,es:[2100h]计算公式:es×16+2100hsubdx,[BP+6]计算公式:SS×16+BP+6movax,[di]计算公式:DS×16+di后sp=23feh。
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。
微机原理 复习8086
地址 数据
CLK DEN VCC 8284 RES 外部复位信号 RESET RDY MN/MX CLK RESET READY 8086 BHE A19~A16 AD15~AD0 INTR S0 S1 S2
பைடு நூலகம்
INTA AMWC DT/R AIOWC ALE MRDC MWTC IORC 8288 IOWC BHE AB 存储器 8286 T OE DB I/O接口
• 8086指令队列的作用是什么? 答:作用是:在执行指令的同时从内存 中取了一条指令或下几条指令,取来的指 令放在指令队列中这样它就不需要象以往 的计算机那样让CPU轮番进行取指和执行的 工作,从而提高CPU的利用率。
EU
指令队列
BIU
8086CPU内部寄存器有哪几种?各自的特点 和作用是什么? 8086CPU有14个16位寄存器和8个8位寄 存器,可分为: 数据寄存器;指针和变址寄存器;段寄 存器;指令指针寄存器;标志寄存器。
• 为了实现寻址1MB存储器空间,8086CPU将 1MB的存储空间分成若干个逻辑段进行管理, 4个16位的段寄存器来存放每一个逻辑段的 段起始地址。
• 已知堆栈段寄存器(SS)=2400H,堆栈指 针(SP)=1200H,计算该堆栈栈顶的实际 地址,并画出堆栈示意图。 • (SS)=2400H,(SP)=1200H ;PA=(SS)×10H+(SP)= 2400H×10H +1200H = 25200H。
8086CPU 重新启动后,从何处开始执行指 令? • 答:重新启动后,CS=FFFFH,IP=0000H,故 从物理地址为FFFF0H 的位置开始执行指令 。
8086 系统中存储器采用什么结构?用 什么信号来选中存储体?
• 答:8086 系统中,存储器采用分体结构,1MB 的 存储空间分成两个存储体:偶地址存储体和奇地 址存储体,各为512KB。 • 使用A0 和BHE 来区分两个存储体。当A0=0 时,选 中偶地址存储体,与数据总线低8位相连,从低8 位数据总线读/写一个字节。当BHE =0 时,选中奇 地址存储体,与数据总线高8 位相连,从高8 位数 据总线读/写一个字节。 • 当A0=0,BHE =0 时,同时选中两个存储体,读/写 一个字。
第4章Intel 80868088指令系统
物理地址=30000H+1150H=31150H
执行后: (AX)=5678H。
第四章 Intel 8086/8088指令系统
5. 相对基址变址寻址
特点:操作数的有效地址是一个基址寄存器与一个变址寄 存器的内容之和再加上8位或16位位移量。同样,当基址寄存器 为BX时,用DS作为段寄存器; 而当基址寄存器为BP时,则用 SS作为段寄存器。因此物理地址为 (SI) 8位 位移量 物理地址=(DS)×16+ (BX)+ + (DI) 16位 (SI) 8位 位移量 + 物理地址=(SS)×16+ (BP)+ (DI) 16位
执行后: (AX)=1234H, (BX)不变。
第四章 Intel 8086/8088指令系统
4.1.4 存储器寻址
操作数在存储器中。存储器是分段管理的, 要找到操作数, 必须指明操作数所在的段(段基址由段寄存器指明)及段内偏 移地址(以有效地址EA的形成方式指出)。 1. 直接寻址方式 特点:指令中直接给出操作数在段内的偏移量,段基址隐 含给出或用段前缀指明。该寻址方式适用于处理单个变量。
4.1.1 8086/8088的通用指令格式 机器语言指令是由二进制代码组成的。一条指令是由操作 码与操作数字段构成的,其一般格式为 操作码字段 + 操作数字段 操作码字段指明计算机所要执行的操作(即功能);操作 数字段指出在指令执行过程中所需要的操作数。 例如: ADD AX, BX
第四章 Intel 8086/8088指令系统
变址寄存器内容之和。 (SI) 物理地址=(DS)×16+ (BX)+ (DI) (SI) 物理地址=(SS)×16+ (BP)+ (DI) 适用表格或数组处理,表格或数组首地址可存放在基址寄存器中。
寻址方式和指令系统
寻址⽅式和指令系统《微机原理》复习思考题第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的转换。
4-二、微处理器指令系统(2)
指令代量
SI OR DI BX OR BP + EA
基 址 变 址 寻 址 方 式
与基址寻址、变址寻址相同,若使用 SI、DI、 BX,则隐含使用的段寄存器为 DS 提供段基址; 如果使用BP,隐含使用的段寄存器为SS。 汇编指令中位移量可用数值或符号地址
例3.4.1
DS
VAR位移量
XXH XXH
VAR
FFH 00H
BX
执行后:(BX)=00FFH
注意:如果操作数放在数据段中,就可以在指令 中不直接给出段寄存器的名字,如果操作数没有 放在数据段中就需要给出相应的段寄存器的名字。 例3.1.3数是放在数据段中 MOV DAB, AX 默认为 MOV DS:DAB, AX MOV CL, DA 默认为 MOV CL, DS:DA
MOV STR[BP], DX
= MOV AL, DS:ARY[BX]
= MOV SS:STR[BP], DX
注意:如果以SI、DI、BX提供部分偏移量,隐 含使用的段寄存器为DS提供段基址;如果以BP 提供部分偏移量,隐含使用的段寄存器为SS。
例3.3.2: 一维数组ARY存放在数据段中,每个元素占 1个字节单元。从数组首地址依次存放:ARY(0)、 ARY(1)、….ARY(i)、…. 采用变址寻址可以用来 访问数组中的任何一元素。 MOV AL, ARY[SI]
2.2 8086/8088的寻址方式
一、基本概念 二、寻址方式
一、基本概念
1、几个名词 2、指令的表示方法 3、汇编指令的基本内容 4、8086/8088指令的三种类型
1、几个名词 程序:使计算机完成一个任务的一系列命 令或指令的有序集合
指令:计算机执行某一特定操作的编码 指令系统:CPU所能够执行的指令的全集
第4章 指令系统(二)
课程名称 授课时间 教学目标 教学重点 教学难点 教学时数 教学内容: 第 4 章 8086/8088 寻址方式及指令系统(二) 计算机组成原理(第二十八讲) 任课教师 地点 多媒体 授课班级 1. 掌握跨段知识 2. 掌握 8086/8088 指令系统 1. 跨段应用 2. 8086/8088 指令系统 1. 数据传送指令 2. 乘法指令 3. 控制转移指令 讲授法、演示法、实践操 教学手 2节 教学方法 作法 段 陈 平 人数
4
执行的操作:(POTR)<-- AL (字节操作) (PORT+1,PORT)<-- (AX) (字操作) 短格式为: OUT DX,AL (字节操作) OUT DX,AX (字操作) 执行的操作:((DX))<-- AL (字节操作) ((DX)+1,(DX))<-- (AX) (字操作) 在 IBM PC 机里,所有 I/O 端口与 CPU 之间的通信都由 IN 和 OUT 指令来完成。其中 IN 完 成从 I/O 到 CPU 的信息传送,而 OUT 完成从 CPU 到 I/O 的信息传送。CPU 只能用累加器(AL 或 AX)接收或发送信息。外部设备最多可有 65536 个 I/O 端口,端口号(即外设的端口地址)为 0000~FFFFH。其中前 256 个端口(0~FFH)可以直接在指令中指定,这就是长格式中的 PORT, 此时机器指令用二个字节表示,第二个字节就是端口号。所以用长格式时可以在指令中直接 指定端口号,但只限于外设的前 256 个端口。当端口号≥256 时,只能使用短格式,此时,必 须先把端口号放到 DX 寄存器中(端口号可以从 0000~FFFFH), 然后再用 IN 或 OUT 指令来传送 信息,必须注意。这里的端口号或 DX 的内容均为地址,而传送的是端口中的信息,而且在用 短格式时 DX 的内容就是端口号本身,不需要由任何段寄存器来修改它的值。 输入,输出指令不影响标志位。 (3)XLAT(Translate)换码指令 格式为: XLAT OPR 或 XLAT 执行的操作:(AL)<-- ((BX)+(AL)) 3.地址传送指令 (1)LEA(Load effective addres)有效地址送寄存器指令 格式为: LEA REG,SRC 执行的操作: (REG)<-- SRC 指令把源操作数的有效地址送到指定的寄存器中。 (2)LDS(Load DS with Pointer)指针送寄存器和 DS 指令 格式为: LDS REG,SRC 执行的操作:(REG)<-- (SRC) (DS)<-- (SRC+2) 把源操作数指定的 4 个相继字节送到由指令指定的寄存器及 DS 寄存器中。该指令常指定 SI 寄存器。 (3)LES(Load ES with Pointer)指针送寄存器和 ES 指令 格式为: LES REG,SRC 执行的操作:(REG)<--(SRC) (ES)<--(SRC+2) 把源操作数指定的 4 个相继字节送到由指令指定寄存器及 ES 寄存器中。 该指令常指定 DI 寄存器。 以上三条指令指定的寄存器不能使用段寄存器,且源操作数必须使用除立即数方式及寄 存器方式以外的其它寻址方式。这些指令不影响标志位。 本组指令把变量的偏移地址(LEA)或段地址和偏移地址(LDS 和 LES)送给寄存器,以提供 访问变量的工具。 例 4.3.7: LEA BX,[BX+SI+0F62H] 如指令执行前:(BX)=0400H,(SI)=003CH 则指令执行后:(BX)=0400+003C+0F,(SP))<-- (SRC) (3) POP(Pop from the stack)出栈指令 格式为: POP DST 执行操作:(DST)<-- ((SP) + 1,(SP)) (SP) <-- (SP) + 2 这两条堆栈的进栈和出栈指令。堆栈是以“后进先出”方式工作的一个存储区,它必须 存在于堆栈段中,因而此段地址存放于 SS 寄存器中。它只有一个出入口,所以只有一个堆栈 指针寄存器 SP,SP 的内容在任何时候都指向当前的栈顶,所以 PUSH 和 POP 指令都必须根据 当前 SP 的内容来确定进栈或是出栈的存储单元,而且必须及时修改指针,以保证(SP)指向当 前的栈顶。 堆栈的存取必须以字为单位,所以 PUSH 和 POP 指令只能作字操作。它们可以使用除立即 数以外的其他寻址方式。指令也可以指定段寄存器作为操作数,但 POP 指令不允许用 CS 寄存 器。这两条堆栈指令不影响标志位。 例 4.3.3: PUSH AX 堆栈在计算机工作中起着重要的作用,如果在程序中要用到某些寄存器,但它的内容却 在将来还有用,这时就可以用堆栈把它们保下来,然后到必要时再恢复其原来的内容。例如: PUSH AX PUSH BX „ 其间程序用到 AX 和 BX 寄存器 „ POP BX POP AX 堆栈在子程序结构的程序及中断程序中也很有用,这将在以后加以说明。 (4) XCHG(Exchange) 交换指令 格式为: XCHG OPR1,OPR2 执行操作:(OPR1)<--> (OPR2) 其中 OPR 表示操作数。该指令的两个操作数中必须有一个在寄存器中,因而它可以在寄 存器之间或者在寄存器和存储器之间交换信息,但不允许使用段寄存器。指令允许字或字节 操作,且不影响标志位。 2.累加器专用传送指令 这组指令只限于使用累加器 AX 或 AL 传送信息,不影响标志位。 (1) IN(Input)输入指令 长格式为: IN AL,PORT (字节操作) IN AX,PORT (字操作) 执行的操作:(AL)<-- (PORT) (字节操作) (AX)<-- (PORT+1,PORT) (字操作) 短格式为: IN AL,DX (字节操作) IN AX,DX (字操作) 执行的操作:(AL)<-- ((DX)) (字节操作) (AX)<-- ((DX)+1,(DX)) (字操作) (2)OUT(Output)输出指令 长格式为: OUT PORT,AL (字节操作) OUT PORT,AX (字操作)
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]
寻址方式与指令系统
13
第4章 寻址方式与指令系统
3. 存储器寻址
• 如果操作码所需操作数存放在内存储器中,
则指令中需要给出操作数的地址信息。为了提高
程序的灵活性,8086指令系统提供了多种存储器
6、基址变址寻址方式 7、相对基址变址寻址方式
9
第4章 寻址方式与指令系统
1、立即寻址方式
操作数直接放在指令中,紧跟在操作码的后面
与操作码一起放在代码段区域中。立即数可以是 8 位
的,也可是16位。
立即寻址主要是用来给寄存器赋初值
AX
AH AL
例: MOV AX , 1234H
· · · 操作码 3 4 1 2 · ·
2、单操作数指令 如:PUSH AX
3、双操作数指令 如:ADD AX , BX
4
第4章 寻址方式与指令系统
4.2 指令寻址方式
4.2.1 寻址、寻址方式的概念
1、基本概念
地址--数据和程序在存储器中的位置; 指令地址--存放指令的地址;
操作数地址--存放数据的地址,简称操作数地址;
寻址方式--寻找指令地址和操作数地址的方式;
的内容传送至寄存器AX中 也可表达为: MOV AX , [VALUE]
17
第4章 寻址方式与指令系统
(2)、寄存器间接寻址
“操作数”一定在存储器中,存储单元的有效地址 由寄存器指出。
即 EA=
[BX]
[BP]
[SI]
[DI]
18
第4章 寻址方式与指令系统
这又可分成两种情况: 1、 BX、SI、DI间址时以DS为默认段地址; 例:MOV AX,[SI] 2、BP间址时以SS为默认段地址。
8086指令系统总结
8086指令系统总结学习微处理器及其程序设计,必须掌握微处理器的指令系统。
本章以 8086 微处理器为例介绍微型计算机的指令系统,包括指令格式、寻址方式和各类指令功能。
要明确各种寻址方式的区别和特点,掌握有效地址和物理地址的计算方法,要正确使用指令,掌握各类指令的功能、对标志位的影响和使用上的一些特殊限制。
能够编写小汇编程序,初步掌握汇编程序的编写和调试方法。
本章的重点难点内容是: 8086 的指令格式及寻址方式, 8086 的常用指令和8086 指令前缀的使用。
下面我们分别进行总结:一.8086寻址方式(1)操作数是数字,指令中立即写出数字------------立即数寻址MOV AX,1234H 解释此句意义(2)操作数是寄存器内容,指令中写出寄存器的符号---------寄存器寻址MOV AX,BX(3)操作数是存储单元内容,用括号括出存储单元有效地址-----直接寻址MOV AX,[1234H]MOV AX,ES:[1234H](4)操作数是存储单元内容,用括号括出寄存器或其表达式,寄存器或其表达式的值为存储单元有效地址-------------间接寻址MOV AH,[BX]MOV AX,ES:[SI]MOV AL,[BX+SI+5]===5[BX+SI]===5[BX][SI]二.8086指令系统1.数据传送指令(一)通用传送指令(1)MOV指令指令格式:MOV 目,源功能:将源操作数传送给目标操作数。
(2)堆栈操作指令进栈指令:PUSH格式:PUSH 源功能:将源操作数压入堆栈。
例:用堆栈指令完成上例的功能。
MOV AX,3000HMOV DS,AX ;段寄存器填充MOV SI,0100H ;基本指令执MOV DI,2000H ;行前的初值MOV CX,50NT:PUSH [SI] ;程序从这POP [DI] ;开始设计INC SIINC SIINC DIINC DILOOP NTMOV AH,4CHINT 21H(3)交换指令 XCHG格式:XCHG 目,源功能:源和目标中的内容交换。
第4章 寻址方式与指令系统(二)
6
传送指令
作用
把数据或地址传送到寄存器或存储器单元中
分类
分四大类 共14条指令
《微机接口技术》
7
传送指令的列表
分组 助记符 MOV PUSH POP XCHG 累加器专用传送指 令 功能 传送 压栈 弹栈 交换 操作数类型 字节/字 字 字 字节/字
通用数据传送指令
XLAT
1000H BX 0200H DI 1206H BX 0200H DI
执行前
执行后
注意区别于: MOV BX, [BX+DI+6H]
《微机接口技术》
27
b)LDS指令和LES指令说明
LDS指令(Load pointer into register & DS) 格式:LDS REG, SRC 操作:将源操作数(SRC)指定的FAR型指 针装入指定寄存器(REG)和DS寄存器 说明:
04H AL 66H AL
执行前
执行后
《微机接口技术》
21
b)IN指令和OUT指令说明
IN指令(输入) 格式:IN AC, PORT 操作:把外设端口的内容输入到AL或AX OUT指令(输出)
格式:OUT PORT, AC 操作:把AL或AX的内容输出到外设端口
《微机接口技术》
22
IN指令和OUT指令的寻址方式
XCHG指令示例
XCHG AL, BL XCHG BX, CX
XCHG [BX], CX
XCHG DS:[2530H], CX
《微机接口技术》
17
XCHG指令示例
用XCHG指令改进“存储器中两个字节单元 内容的交换”的程序段
MOV BL, DS:[2035H] MOV CL, DS:[2045H] MOV DS:[2045H], BL MOV DS:[2035H], CL MOV BL, DS:[2035H]
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. 立即偏移寻址立即偏移寻址是一种通过基址寄存器和偏移量来寻址操作数的方式。
48086/8088的指令系统教程
8086/8088 CPU寻址方式
第四章 8086/8088的指令系统
立即寻址
寄存器寻址 直接寻址 存储器寻址 寄存器间接寻址 I/O端口寻址
8086/8088 CPU寻址方式
第四章 8086/8088的指令系统
1)直接寻址(Direct Addressing) 操作数地址的16位偏移量直接包含在指令中。 它与操作码一起存放在代码段区域,操作数一般在数据段区域中, 它的地址为数据段寄存器DS加上这16位地址偏移量。当操作数不在默 认的DS中时,要明确指明段寄存器—段超越前缀。 例如: 设(DS)=3000H MOV AX,DS:[2000H]; MOV AX,[2000H] ;数据段 MOV AX,VALUE; VALUE是符号
立即寻址主要用来给寄存器或存储器赋初值,不能用于目的 操作数。
8086/8088 CPU寻址方式
第四章 8086/8088的指令系统
2.寄存器寻址(Register Addressing) 操作数包含在CPU的内部寄存器中,如寄存器AX、BX、CX、DX、 SP、BP、SI、DI等。不需要占用总线,执行速度较快。当寄存器是累加 器AX时,执行速度会更快。 例如:MOV DS,AX MOV AL,BH 3、存储器寻址(Memory Addressing) 访问存储单元需要其段基址和段内偏移量(即有效地址EA)。 根据有效地址的不同,存储器寻址方式分为直接寻址、寄存器 间接寻址
8086/8088 CPU寻址方式
第四章 8086/8088的指令系统
(3)基址变址寻址方式 (Based Indexed Addressing) 基址变址寻址的操作数的有效地址是一个基址寄存器与一个变址寄存器 的内容之和。 若基址寄存器为BX,则段寄存器用DS; 若基址寄存器为BP,则段寄存器用SS。 物理地址=(DS)× 16+(BX)+(SI)(或DI) 物理地址=(SS)× 16+(BP)+(SI)(或DI) 如MOV AX,[BX] [DI] 或MOV AX,[BX+DI] 若DS=2000H,BX=2000H,DI=3000H。 物理地址=20000H+2000H+3000H=25000H
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章:例4.2 数据交换
mov ax,1199h
;ax=1199h
xchg ah,al
;ax=9911h
;等同于 xchg al,ah
mov wvar,5566h
;wvar是一个字量变量
xchg ax,wvar
;ax=5566h,wvar=9911h
;等同于 xchg wvar,ax
xchg al,byte ptr wvar+1
MOV指令
第4章:4.1.1 立即数寻址方式
指令中的操作数直接存放在机器代码中,紧跟在 操作码之后(操作数作为指令的一部分存放在操 作码之后的主存单元中) 这种操作数被称为立即数imm
可以是8位数值i8(00H~FFH) 也可以是16位数值i16(0000H~FFFFH) 立即数寻址方式常用来给寄存器和存储单元赋值, 多以常量形式出现
MOV AX, [BX+DI+6] ;AX←DS:[BX+DI+6]
演示
MOV AX, 6[BX+DI] MOV AX, 6[BX][DI]
第4章:存储器寻址方式中的变量
➢ 变量指示内存中的数据,变量名具有地址属性。 存储器寻找方式中经常采用变量形式
➢ 变量的定义
WVAR DW 1234H ;定义16位变量WVAR,具有初值1234H ;假设其偏移地址为10H
第4章 8086的寻址方式 与指令系统
第4章:8086的寻址方式与指令系统-教学重点
8086的寻址方式 8086的基本指令
数据传送 加减运算 逻辑运算、移位 控制转移、功能调用
第4章:4.1 8086的数据寻址方式
从8086的指令格式入手,论述:
立即数寻址方式 寄存器寻址方式 存储器寻址方式
进而熟悉8086汇编语言指令格式,尤其是 其中操作数的表达方法 为展开8086指令系统做好准备
操作码 操作数1,操作数2
;注释
操作数2,常被称为源操作数src,它表示参与指 令操作的一个对象 操作数1,成被称为目的操作数dest,它不仅可以 作为指令操作的一个对象,还可以用来存放指令 操作的结果 分号后的内容是对指令的解释
汇编语句格式
第4章:指令的操作码和操作数
每种指令的操作码:
用一个助记符表示(指令功能的英文缩写) 对应着机器指令的一个或多个二进制编码
MOV AX, 0102H
;AX←0102H 演示
第4章:4.1.2 寄存器寻址方式
操作数存放在CPU的内部寄存器reg中:
8位寄存器r8: AH、AL、BH、BL、CH、CL、DH、DL
16位寄存器r16: AX、BX、CX、DX、SI、DI、BP、SP
4个段寄存器seg: CS、DS、SS、ES
➢ 在寄存器相对和相对基址变址寻址方式中,其位 移量不仅可用常量表示,也可用符号表示
➢ 这个符号可以是变量名,例如WVAR变量,而且 支持多种表达形式
MOV AX, [DI+WVAR] ; ;等同于 MOV AX, WVAR[DI] MOV AX,[BX+SI+WVAR]
;等同于 MOV AX, [SI+WVAR] ;等同于 MOV AX, WVAR[BX+SI] ;等同于 MOV AX, WVAR[BX][SI]
演示
;AX←DS:[SI+06H]
第4章:4. 基址变址寻址方式
有效地址由基址寄存器(BX或BP)的内容加上 变址寄存器(SI或DI)的内容构成: 有效地址=BX/BP+SI/DI 段地址对应BX基址寄存器默认是DS,对应BP基 址寄存器默认是SS;可用段超越前缀改变
MOV AX, [BX+SI] MOV AX, [BX][SI]
;段寄存器送寄存器或主存
演示
第4章:MOV指令--立即数传送
mov cl,4 ;cl←4,字节传送 mov dx,0ffh ;dx←00ffh,字传送 mov si,200h ;si←0200h,字传送 mov bvar,0ah ;字节传送 ;假设bvar是一个字节变量,定义如下:bvar db 0 mov wvar,0bh ;字传送 ;假设wvar是一个字变量,定义如下:wvar dw 0
;ax=5599h,wvar=6611h
;“byte ptr wvar+1”强制为字节量,只取高字 节与AL类型交换,否则数据类型不匹配
第4章:3. 换码指令XLAT(translate)
将BX指定的缓冲区中、AL指定的位移处的一个 字节数据取出赋给AL
XCHG
MOV
XLAT
XCHG
XLAT
第4章:1. 传送指令MOV(move)
把一个字节或字的操作数从源地址传 送至目的地址
MOV reg/mem,imm
MOV reg/me;m立/s即eg数,r送eg寄存器或主存
MOV ;re寄g/存se器g送,m(em段)寄存器或主存
MOV reg/mem,;s主eg存送(段)寄存器
➢ 单独引用变量名是直接寻址方式
MOV AX,WVAR ;指令功能:AX=1234H ;等同于 MOV AX,[0010H]
➢ 相对寻址方式中,变量名表示其偏移地址,相当 于位移量
MOV AX, [DI+WVAR] ;= MOV AX,WVAR[DI] ;等同于 MOV AX,[DI+0010H]
第4章:相对寻址方式中的位移量
数据传送是计算机中最基本、最重要的一种操作, 传送指令也是最常使用的一类指令 传送指令把数据从一个位置传送到另一个位置 除标志寄存器传送指令外,均不影响标志位 重点掌握
MOV XCHG XLAT PUSH POP LEA
第4章: 4.2.1 通用数据传送指令
提供方便灵活的通用传送操作
有3条指令
MOV
;mov ax,100h
;mov ds,ax
MOV CS, [SI]
;非法指令
;指令存在,但不能执行
第4章:2. 交换指令XCHG(exchange)
把两个地方的数据进行互换
XCHG reg,reg/mem ;reg reg/mem
寄存器与寄存器之间对换数据
演示
寄存器与存储器之间对换数据 不能在存储器与存储器之间对换数据
第4章:指令的组成
操作码 操作数
指令由操作码和操作数两部分组成
操作码说明计算机要执行哪种操作,如传送、运算、 移位、跳转等操作,它是指令中不可缺少的组成部 分 操作数是指令执行的参与者,即各种操作的对象 有些指令不需要操作数,通常的指令都有一个或两 个操作数,也有个别指令有3个甚至4个操作数
第4章:指令的助记符格式
指令中的操作数:
可以是一个具体的数值 可以是存放数据的寄存器 或指明数据在主存位置的存储器地址
第4章:操作数的寻址方式
指令系统设计了多种操作数的来源 寻找操作数的过程就是操作数的寻址 把寻找操作数的方式叫做(操作数)寻址方式 理解操作数的寻址方式是理解指令功能的前提 操作数采取哪一种寻址方式
一方面,会影响处理器执行指令的速度和效率 另一方面,对程序设计也很重要
寄存器名表示其内容(操作数)
MOV AX, BX
;AX←BX
演示
第4章: 4.1.3 存储器寻址方式
操作数在主存储器中,用主存地址表示 程序设计时,8086采用逻辑地址表示主存地址
段地址在默认的或用段超越前缀指定的段寄存器中 指令中只需给出操作数的偏移地址(有效地址EA)
8086设计了多种存储器寻址方式
有效地址是寄存器内容与有符号8位或16位位移 量之和,寄存器可以是BX、BP或SI、DI 有效地址=BX/BP/SI/DI+8/16位位移量 段地址对应BX/SI/DI寄存器默认是DS,对应BP 寄存器默认是SS;可用段超越前缀改变
MOV AX, [SI+06H] MOV AX, 06H[SI]
;AX←DS:[SI+06H]
;mov al,buf1
;mov buf2,al
第4章:非法指令--段寄存器的操作有一些限制
➢ 8086指令系统中,能直接对段寄存器操作的指令 只有MOV等个别传送指令,并且不灵活
MOV DS, ES
;非法指令,修正:
;mov ax,es
;mov ds,ax
MOV DS, 100H
;非法指令,修正:
;AX←DS:[2000H]
演示
MOV AX, ES: [2000H] ;AX←ES:[2000H]
第4章:2. 寄存器间接寻址方式
有效地址存放在基址寄存器BX或变址寄存 器SI、DI中 默认的段地址在DS段寄存器,可使用段超 越前缀改变
MOV AX, [BX]
;AX←DS:[BX]
演示
第4章:3. 寄存器相对寻址方式
第4章:操作数的表达符号(2)
操作数符号
含义(寻址方式)
m8
一个8位存储器操作数单元(包括所有主存
寻址方式)
m16 一个16位存储器操作数单元(包括所有主存 寻址方式)
mem dest src
代表m8或m16 目的操作数 源操作数
掌握操作数的寻址方式后,进入指令学习
第4章:4.2 数据传送类指令
mov [si],ds mov ax,ds mov es,ax
;ax←ds ;es←ax←ds
对段寄存器的操作不灵活
第4章:MOV指令传送功能图解
立即数
MOV指令也并非任意传送!
存
通用寄存器
储
AX BX CX DX
器
BP SP SI DI
段寄存器 CS DS ES SS
非法指令的主要现象: 两个操作数的类型不一致 无法确定是字节量还是字量操作 两个操作数都是存储器 段寄存器的操作有一些限制