第四章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) 适用表格或数组处理,表格或数组首地址可存放在基址寄存器中。
- 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
非法指令的主要现象: 两个操作数的类型不一致 无法确定是字节量还是字量操作 两个操作数都是存储器 段寄存器的操作有一些限制