微机原理【高教课堂】

上传人:工**** 文档编号:567610398 上传时间:2024-07-21 格式:PPT 页数:94 大小:2.15MB
返回 下载 相关 举报
微机原理【高教课堂】_第1页
第1页 / 共94页
微机原理【高教课堂】_第2页
第2页 / 共94页
微机原理【高教课堂】_第3页
第3页 / 共94页
微机原理【高教课堂】_第4页
第4页 / 共94页
微机原理【高教课堂】_第5页
第5页 / 共94页
点击查看更多>>
资源描述

《微机原理【高教课堂】》由会员分享,可在线阅读,更多相关《微机原理【高教课堂】(94页珍藏版)》请在金锄头文库上搜索。

1、微机原理及应用微机原理及应用 吴丽娟吴丽娟第第5章章86系列微型计算机的指令系统系列微型计算机的指令系统5.2传送类指令传送类指令5.4串操作指令串操作指令5.5控制类指令控制类指令5.186系列汇编语言及指令的格式与寻址方式系列汇编语言及指令的格式与寻址方式5.3数据操作类指令数据操作类指令1/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 指指令令是是让让计计算算机机完完成成某某种种操操作作的的命命令令, 指指令令的的集集合合称称作作指令系统指令系统, 不同系列计算机有不同的指令系统。不同系列计算机有不同的指令系统。 指令的符号用规定的英文字母组成指令的符号用规定的英文字母组成, 称为助记

2、符。称为助记符。 指指令令进进行行编编程程能能够够充充分分开开发发计计算算机机硬硬件件资资源源, 它它的的程程序序目目标标代代码码短短、运运行行速速度度快快, 因因此此, 指指令令语语言言是是面面向向机机器器的的语语言言, 在自动控制、智能化仪器仪表、监测等领域应用广泛。在自动控制、智能化仪器仪表、监测等领域应用广泛。2/94微机原理及应用微机原理及应用 吴丽娟吴丽娟5.1 86系列汇编语言及指令的格式与寻址方式系列汇编语言及指令的格式与寻址方式5.1.1 86系列汇编语言指令语句格式系列汇编语言指令语句格式 任任何何一一种种汇汇编编语语言言的的指指令令语语句句都都是是与与机机器器指指令令一一

3、一一对对应应的的, 它它通通过过汇汇编编程程序序将将其其翻翻译译成成机机器器指指令令代代码码 (目目标标代代码码), 让让CPU执执行行某某种种操操作作。86系系列列汇汇编编语语言言指指令令语语句句格格式式如如图图 5.1 所所示示。图图中中由由前前向向后后的的箭箭头头表表示示是是可可选选项项, 由由后后向向前前的的箭箭头头表表示示是是重重复项复项, 圆头方框表示是语句中的关键字。圆头方框表示是语句中的关键字。3/94微机原理及应用微机原理及应用 吴丽娟吴丽娟(1) 标标号号是是给给该该指指令令所所在在地地址址取取的的名名字字, 必必须须后后跟跟冒冒号号“:”, 它它可可以以缺缺省省, 是是可

4、可供供选选择择的的标标识识符符。86系系列列汇汇编编语语言言中中可可使使用用的的标识符必须遵循下列规则:标识符必须遵循下列规则:标标识识符符由由字字母母(az, AZ)、数数字字(09)或或某某些些特特殊殊字字符符(, , ?)组成。组成。第第一一个个字字符符必必须须是是字字母母(az, AZ)或或某某些些特特殊殊的的符符号号(, , ?), 但但“?”不能单独作标识符。不能单独作标识符。标标识识符符有有效效长长度度为为31个个字字符符, 若若超超过过31个个字字符符, 则则只只保保留留前前面面的的31个字符为有效标识符。个字符为有效标识符。4/94微机原理及应用微机原理及应用 吴丽娟吴丽娟

5、下面是有效的标识符:下面是有效的标识符:START:MYCODE:ALPHA:NUM1:LOOP1:X: ?MORE350:BETA1:DELAYIS: 下面是无效的标识符:下面是无效的标识符:4LOOP:MAINA/B:BETA*:START3:GAMA1:NUM+1:?:ONE*TWO:5/94微机原理及应用微机原理及应用 吴丽娟吴丽娟(2) 指指令令助助记记符符是是指指令令名名称称的的代代表表符符号号, 它它是是指指令令语语句句中中的的关关键键字字, 不不可可缺缺省省, 它它表表示示本本指指令令的的操操作作类类型型, 必必要要时时可可在在指指令令助助记记符符的的前面加上一个或多个前面加上

6、一个或多个“前缀前缀”, 从而实现某些附加操作。从而实现某些附加操作。(3) 操操作作数数是是参参加加本本指指令令运运算算的的数数据据, 有有些些指指令令不不需需要要操操作作数数, 可可以以缺缺省省;有有些些指指令令需需要要两两个个操操作作数数, 这这时时必必须须用用逗逗号号(, )将将两两个个操操作数分开;有些操作数可以用表达式来表示。作数分开;有些操作数可以用表达式来表示。(4) 注注释释部部分分是是可可选选项项, 允允许许缺缺省省, 如如果果带带注注释释则则必必须须用用分分号号(;)开开头头, 注注释释本本身身只只用用来来对对指指令令功功能能加加以以说说明明, 给给阅阅读读程程序序带带来

7、来方方便便, 汇编程序不对它做任何处理。汇编程序不对它做任何处理。6/94微机原理及应用微机原理及应用 吴丽娟吴丽娟5.1.2 86系列系列 CPU的寻址方式的寻址方式 机机器器执执行行指指令令的的目目的的就就是是对对指指定定的的操操作作数数完完成成规规定定的的操操作作, 将将操操作作结结果果存存入入规规定定的的地地方方。因因此此, 如如何何获获得得操操作作数数的的存存放放地地址址及及操操作作结结果果的的存存放放地地址址就就是是一一个个很很关关键键的的问问题题。8086/8088 CPU有有多多种种方方法法来来获获取取操操作作数数的的存存放放地地址址及及操操作作结结果果的的存存放放地地址址,

8、这这些方法统称为数据寻址方式。些方法统称为数据寻址方式。7/94微机原理及应用微机原理及应用 吴丽娟吴丽娟5.1.2 86系列系列 CPU的寻址方式的寻址方式n为什么要设置多种寻址方式?为什么要设置多种寻址方式?n希望用最短的指令长度访问尽可能大的存储器空间希望用最短的指令长度访问尽可能大的存储器空间 n希望给多样的程序设计技术和数据结构对数据访问的灵希望给多样的程序设计技术和数据结构对数据访问的灵活性和有效性提供支持活性和有效性提供支持 n变址寻址便于处理表格和矩阵变址寻址便于处理表格和矩阵n相对寻址便于编制浮动的、可重入的程序相对寻址便于编制浮动的、可重入的程序下面主要以下面主要以MOV指

9、令为例指令为例, 介绍介绍86系列系列CPU的寻址方式。的寻址方式。8/94微机原理及应用微机原理及应用 吴丽娟吴丽娟MOV指令的功能指令的功能格式:格式:MOV 目的操作数目的操作数(dest) , 源操作数源操作数(src)9/94微机原理及应用微机原理及应用 吴丽娟吴丽娟n 8086 CPU指指令令系系统统中中, 有有一一部部分分指指令令所所用用的的8位位或或16位位操操作作数数就在指令中提供就在指令中提供, 这种方式称作立即数寻址方式。例如:这种方式称作立即数寻址方式。例如:n MOV AL, 80H;将十六进制数;将十六进制数80H送入送入ALn MOV AX, 1090H;将;将1

10、090H送送AX, AH中为中为10H, AL中为中为90Hn 采采用用立立即即数数寻寻址址方方式式的的指指令令主主要要用用来来对对寄寄存存器器赋赋值值。因因为为操操作作数数可可以以从从指指令令中中直直接接取取得得, 不不需需要要运运行行总总线线周周期期, 所所以以, 立立即即数数寻址方式的显著特点就是速度快。寻址方式的显著特点就是速度快。n 立立即即数数可可以以为为8位位, 也也可可以以为为16位位;规规定定立立即即数数只只能能是是整整数数, 不不能能是是小小数数、变变量量或或者者其其他他类类型型的的数数据据;另另外外还还要要注注意意, 立立即即数数只能作为源操作数。只能作为源操作数。 1.

11、 立即数寻址立即数寻址10/94立即数寻址方式立即数寻址方式微机原理及应用微机原理及应用 吴丽娟吴丽娟11/94微机原理及应用微机原理及应用 吴丽娟吴丽娟n 1. 立即数寻址立即数寻址【例例】画出画出MOV AX, 1946H 指令执行过程示意图。指令执行过程示意图。解:指令执行后解:指令执行后, AX=1946H, 16位数据位数据1946H存入寄存器存入寄存器, 下图中下图中, 指令存放于代码段指令存放于代码段, OP为操作码为操作码, 接着存放低位字节数接着存放低位字节数46H, 在存放高位在存放高位字节数字节数19H, 这是字类型的立即数这是字类型的立即数, 为为指令机器码的一部分。指

12、令机器码的一部分。12/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 2. 寄存器寻址寄存器寻址 如如果果操操作作数数就就在在CPU的的内内部部寄寄存存器器中中, 那那么么寄寄存存器器名名可可在在指指令中指出。这种寻址方式就叫寄存器寻址方式。令中指出。这种寻址方式就叫寄存器寻址方式。 对对16位位操操作作数数来来说说, 寄寄存存器器可可以以为为AX, BX, CX, DX, SI, DI, SP或或者者BP, 而而对对8位位操操作作数数来来说说, 寄寄存存器器可可为为AH, AL, BH, BL, CH, CL, DH, DL。例如:。例如: INCCX;将;将CX的内容加的内容加1 ROL

13、AH, 1;将;将AH中的内容循环左移一位中的内容循环左移一位 采采用用寄寄存存器器寻寻址址方方式式的的指指令令在在执执行行时时, 操操作作就就在在CPU内内部部进进行行, 不不需需要要使使用用总总线线周周期期, 因因此此, 执执行行速速度度快快。在在一一条条指指令令中中, 可可以以对对源源操操作作数数采采用用寄寄存存器器寻寻址址方方式式, 也也可可以以对对目目的的操操作作数数采采用用寄寄存存器寻址方式器寻址方式, 还可以两者都用寄存器寻址方式。还可以两者都用寄存器寻址方式。13/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 2. 寄存器寻址寄存器寻址例:下列程序执行后例:下列程序执行后,

14、(AX)=?, (BX)=? MOV AX, 1234H MOV BX, 5678H ADD AX, BX 该该程程序序中中MOV指指令令为为数数据据传传送送指指令令操操作作符符, ADD指指令令为为加加法法指指令令操操作作符符, 三三条条指指令令皆皆为为双双操操作作数数指指令令。第第一一、二二条条指指令令AX、BX皆皆为为目目的的操操作作数数地地址址, 为为寄寄存存器器寻寻址址方方式式。第第三三条条指指令令中中, AX为为目目的的操操作作数数地地址址, BX为为源源操操作作数数地地址址。源源地地址址和和目目的的地地址址皆为寄存器寻址方式。皆为寄存器寻址方式。执行:执行:1234HAX 567

15、8HBX (AX)+(BX)AX 执行后:执行后:(AX)=68ACH, (BX)=5678H14/94微机原理及应用微机原理及应用 吴丽娟吴丽娟15/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 2. 寄存器寻址寄存器寻址例:设例:设AX=4710H, CX=7507H。 问执行指令问执行指令 MOV AX, CX 后后AX=?, BX=?解:解:AX寄存器的内容被寄存器的内容被CX的内的内容取代容取代, CX本身的内容不变本身的内容不变, 故故 AX=7507H, BX=7507H。16/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 3. 直接寻址直接寻址 使使用用直直接接寻寻址址方方

16、式式时时, 数数据据总总是是在在存存储储器器中中, 存存储储单单元元的的有有效效地地址址由由指指令令直直接接指指出出, 所所以以直直接接寻寻址址是是对对存存储储器器进进行行访访问问时时可可采采用用的的最简单的方式。例如:最简单的方式。例如:MOV AX, 1070H; 将将DS段的段的1070H和和1071H两单元的内容取到两单元的内容取到AX中中 注注意意:采采用用直直接接寻寻址址方方式式时时, 如如果果指指令令前前面面没没有有用用前前缀缀指指明明操操作作数数在在哪哪一一段段, 则则默默认认为为段段寄寄存存器器是是数数据据段段寄寄存存器器DS。例例如如, 上上一一条条指指令令执执行行时时,

17、设设DS2000H, 则则执执行行过过程程是是将将绝绝对对地地址址为为21070H和和21071H两单元的内容取出送两单元的内容取出送AX。17/94直接寻址方式直接寻址方式微机原理及应用微机原理及应用 吴丽娟吴丽娟18/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 如如果果要要对对其其它它段段寄寄存存器器所所指指出出的的存存储储区区进进行行直直接接寻寻址址, 则则本本条条指令前必须用前缀指出段寄存器名。例如:指令前必须用前缀指出段寄存器名。例如: CS:MOV BX, 3000H;将将CS段段的的3000H和和3001H两两单单元元的内容送的内容送BX 设设CS为为5100H, 则则本本指

18、指令令在在执执行行时时, 将将54000H和和54001H两两单单元元的内容取出送的内容取出送BX。19/94微机原理及应用微机原理及应用 吴丽娟吴丽娟n【例例】假假设设TABLE是是在在附附加加数数据据段段定定义义的的一一个个字字节节数数组组的的首首地地址址标标号号, 其偏移地址为其偏移地址为1000H, 则指令:则指令:n MOV AL, ES:TABLEn或或MOV AL, ES:TABLEn或或MOV AL, ES:1000Hn或或MOV AL, ES:1000Hn是等效的是等效的, 都表示将字节数组的第一个数组元素送入都表示将字节数组的第一个数组元素送入AL寄存器中。寄存器中。n M

19、OV AL, ES:TABLE+2n或或MOV AL, ES:TABLE+2n或或MOV AL, ES:1000H+2n或或MOV AL, ES:1000H+2n 也也是是等等效效的的, 都都表表示示将将字字节节数数组组的的第第三三个个数数组组元元素素送送入入AL寄寄存存器器中中。这种寻址方式一般适用于处理单个变量。这种寻址方式一般适用于处理单个变量。20/94微机原理及应用微机原理及应用 吴丽娟吴丽娟n例例 (1)MOV AX, 1024H MOV BX, ES1000H n设设DS=2000H, ES=3000H, (21024H)=1784H, (31000H)=1234H。n 指令执行

20、后指令执行后AX=?, BX=?30000H31000H31001H341200000H21024H21025H8417AH17 84ALBH12 34BL(1)DS16+1024H=21024HAX=1784HES=3000H则则BX=1234H21/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 4. 寄存器间接寻址寄存器间接寻址 采采用用寄寄存存器器间间接接寻寻址址方方式式时时, 操操作作数数一一定定在在存存储储器器中中, 存存储储单单元元的的有有效效地地址址由由寄寄存存器器指指出出, 这这些些寄寄存存器器可可以以为为BX, BP, SI和和DI之之一一, 即即有效地址等于其中某一个寄存

21、器的值:有效地址等于其中某一个寄存器的值: BX BP SI DI EA偏移地址偏移地址EA计算方法:计算方法: 和直接寻址类似和直接寻址类似, 若指令前面没有用前缀指明具体的段寄存器若指令前面没有用前缀指明具体的段寄存器, 则则寻址时默认的段寄存器通常为寻址时默认的段寄存器通常为DS。如寄存器为。如寄存器为BP时时, 则对应的段寄则对应的段寄存器为存器为SS。22/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 采采用用寄寄存存器器间间接接寻寻址址时时, 允允许许在在指指令令中中指指定定一一个个位位移移量量, 这这样样, 有有效效地地址址通通过过将将一一个个寄寄存存器器的的内内容容加加上上一

22、一个个位位移移量量来来得得到到。位位移移量可以为量可以为8位位, 也可以为也可以为16位。即:位。即: BX BP 8位位移量位位移量 SI 16位位移量位位移量 DI 细分起来细分起来, 寄存器间接寻址可分为以下寄存器间接寻址可分为以下4种:种:EA+23/94微机原理及应用微机原理及应用 吴丽娟吴丽娟(1)以以BX寄存器进行间接寻址寄存器进行间接寻址数据段基址寻址数据段基址寻址 如如 MOV AX, BX(2)以以BP寄存器进行间接寻址寄存器进行间接寻址堆栈段基址寻址堆栈段基址寻址 如如 MOV BX, BP(3)以以SI和和DI寄存器进行间接寻址寄存器进行间接寻址变址寻址变址寻址 其中其

23、中 SI为源寄存器、为源寄存器、DI为目的寄存器为目的寄存器(4)将将BX、BP和和SI、DI寄存器组合起来进行间接寻址寄存器组合起来进行间接寻址基址加变址寻址基址加变址寻址 如如 MOV AX, BX+SI MOV AX, BX+SI+0050;相对基址加变址寻址;相对基址加变址寻址24/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 (1) 以以BX寄存器进行间接寻址寄存器进行间接寻址数据段基址寻址数据段基址寻址。 用用BX寄存器进行间接寻址时寄存器进行间接寻址时, 默认的段寄存器为默认的段寄存器为DS, 因为因为BX称为基称为基址寄存器址寄存器, 所以这种寻址方式也叫数据段基址寻址。例如

24、所以这种寻址方式也叫数据段基址寻址。例如: MOV AX, BX 设设DS5000H, BX3000H, 则本指令在执行时则本指令在执行时, 将将53000H和和53001H两单元的内容送两单元的内容送AX。 如果要对其它段寄存器所指的区域进行寻址如果要对其它段寄存器所指的区域进行寻址, 则必须在指令前用前缀则必须在指令前用前缀指出段寄存器名。例如:指出段寄存器名。例如:ES MOV CX, BX 设设ES3000H, BX4000H, 则本指令在执行时则本指令在执行时, 将将34000H和和34001H两单元的内容送两单元的内容送CX。25/94寄存器间接寻址方式寄存器间接寻址方式微机原理及

25、应用微机原理及应用 吴丽娟吴丽娟26/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 (2) 以以BP寄存器进行间接寻址寄存器进行间接寻址堆栈段基址寻址。堆栈段基址寻址。 如果以寄存器如果以寄存器BP对操作数进行间接寻址对操作数进行间接寻址, 则必须注意则必须注意, 操作操作数默认在堆栈段中数默认在堆栈段中, 因为因为BP称为基址寄存器称为基址寄存器, 所以这种寻址方所以这种寻址方式通常称为堆栈段基址寻址。例如:式通常称为堆栈段基址寻址。例如: MOVBX, BP 设设SS5000H, BP4000H, 则本指令在执行时则本指令在执行时, 将将54000H和和54001H两单元的内容送两单元的

26、内容送BX。27/94微机原理及应用微机原理及应用 吴丽娟吴丽娟(3) 以以SI和和DI寄存器进行间接寻址寄存器进行间接寻址变址寻址。变址寻址。 SI和和DI寄寄存存器器分分别别称称为为源源变变址址寄寄存存器器和和目目的的变变址址寄寄存存器器, 所所以以用用这这两两个个寄寄存存器器来来进进行行间间接接寻寻址址也也叫叫变变址址寻寻址址。变变址址寻寻址址通通常常用用于于对对数数组组元元素素进进行行操操作作, 另另外外, 后后面面还还会会讲讲到到有有些些串串操操作作指指令令要要求求用用固固定定的的变变址址寄寄存存器器对对操操作作数数进进行行寻寻址址, 操操作作过过程程中中, 指指令令会会自自动动修修

27、改改变变址址寄寄存存器器中中的的地地址址, 以指向下一个操作数。以指向下一个操作数。28/94寄存器相对寻址方式寄存器相对寻址方式微机原理及应用微机原理及应用 吴丽娟吴丽娟29/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 (3) 以以SI和和DI寄存器进行间接寻址寄存器进行间接寻址变址寻址。变址寻址。例:设例:设DS=2000H, SS=3000H, BX=1000H, BP=2100H, (21000H)=1426H , (32100H)=2017H, 问问 执行执行 MOV AX, BX MOV BL, BP 指令后指令后 AX=? BL=?2614172021000H21001H32

28、100H32101H答案答案: AX=1426H BL=17H30/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 (4) 将将BX, BP和和SI, DI寄寄存存器器组组合合起起来来进进行行间间接接寻寻址址基基址址加加变变址址的的寻寻址址。通通常常将将BX和和BP称称为为基基址址寄寄存存器器, 将将SI和和DI称称为为变变址址寄寄存存器器。8086指指令令系系统统允允许许把把基基址址寄寄存存器器和和变变址址寄寄存存器器组组成成起起来来构构成成一一种种新新的的寻寻址址方方式式, 叫叫基基址址加加变变址址的的寻寻址址。用用这这种种寻寻址址方方式式时时, 操操作作数数的的有有效效地地址址是是1个个

29、基基址址寄寄存存器器(BX或或BP)的的内内容容加加上上一一个变址寄存器个变址寄存器(SI或或DI)的内容。即:的内容。即: BX SI BP DIEA+31/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 例如:例如:MOV AX, BX+SI 设设DS1000H, BX5000H, SI2000H, 则则上上面面指指令令在在执执行行时时, 有有效效地地址址为为7000H, 本本指指令令将将17000H和和17001H两两单单元元的的内内容取到容取到AX中。中。 图图5.2对对堆堆栈栈中中数数组组的的访访问问在在基基址址加加变变址址的的寻寻址址方方式式中中, 只只要要用用上上BP寄寄存存器器

30、, 那那么么默默认认的的段段寄寄存存器器就就是是SS;在在其其它它情情况况下下, 默默认认的的段段寄寄存存器器均均为为DS。如如果果操操作作数数不不在在默默认认段段, 则则要要用用前缀指出相应的段寄存器名。前缀指出相应的段寄存器名。32/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 用用基基址址加加变变址址的的寻寻址址方方式式时时, 与与变变址址寻寻址址、基基址址寻寻址址的的情情况况类类似似, 也也允允许许带带一一个个8位位或或16位位的的位位移移量量。带带位位移移量量的的基基址址加加变变址址的的寻址寻址, 在有些资料中也称为相对的基址加变址寻址。在有些资料中也称为相对的基址加变址寻址。 如

31、:如:MOV AX, BX+SI+0050;将将BX和和SI中中的的内内容容与与0050相相加加作作为为有效地址有效地址 由由于于基基址址加加变变址址的的寻寻址址方方式式中中, 允允许许两两个个地地址址分分量量分分别别改改变变, 而而且且有有一一个个对对段段寄寄存存器器的的约约定定规规则则即即如如果果基基址址寄寄存存器器用用BX, 则则默默认认的的段段寄寄存存器器为为DS;如如果果基基址址寄寄存存器器用用BP, 则则默默认认的的段段寄寄存存器器为为SS这种寻址方式使用起来很灵活。这种寻址方式使用起来很灵活。33/94基址变址寻址方式基址变址寻址方式微机原理及应用微机原理及应用 吴丽娟吴丽娟34

32、/94相对基址变址寻址方式相对基址变址寻址方式微机原理及应用微机原理及应用 吴丽娟吴丽娟35/94 图图5.3对对8086有关操作数的各种寻址方式进行了总结。图中不仅指出了每种有关操作数的各种寻址方式进行了总结。图中不仅指出了每种寻址方式下操作数的来源寻址方式下操作数的来源, 还表明了有效地址的计算方法。还表明了有效地址的计算方法。图图5.3 8086/8088的的操作数操作数寻址方式寻址方式36/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 为了对各种寻址方式有个比较为了对各种寻址方式有个比较, 下面举一个综合性的例子。下面举一个综合性的例子。【例例】设设BX0158H, DI10A5H,

33、 位移量位移量1B57H, DS2100H, 并假定没有使用段前缀并假定没有使用段前缀, 即把即把DS作为操作数对应的段寄存器。作为操作数对应的段寄存器。 在各种寻址方式下在各种寻址方式下, 这些寄存器和位移量所产生的有效地址和这些寄存器和位移量所产生的有效地址和物理地址为:物理地址为:直接寻址:直接寻址:有效地址有效地址1B57H物理地址物理地址21000H+1B57H22B57HMOV AX, 1B57H37/94微机原理及应用微机原理及应用 吴丽娟吴丽娟寄存器间接寻址寄存器间接寻址(寄存器为寄存器为BX):有效地址有效地址0158H物理地址物理地址21000H+0158H21158HBX

34、寄存器相对间接寻址:寄存器相对间接寻址:有效地址有效地址0158H+1B57H1CAFH物理地址物理地址21000H+1CAFH22CAFH变址寻址变址寻址(寄存器为寄存器为DI):有效地址有效地址10A5H物理地址物理地址21000H+10A5H220A5HMOV AX, BXMOV AX, BX+1B57HMOV AX, DI38/94微机原理及应用微机原理及应用 吴丽娟吴丽娟DI寄存器相对变址寻址:寄存器相对变址寻址:有效地址有效地址10A5H+1B57H2BFCH物理地址物理地址21000H+2BFCH23BFCH基址加变址的寻址基址加变址的寻址(BX为基址寄存器为基址寄存器, DI为

35、变址寄存器为变址寄存器):有效地址有效地址0158H+10A5H11FDH物理地址物理地址21000H+11FDH221FDH相对的基址加变址的寻址相对的基址加变址的寻址(BX为基址寄存器为基址寄存器, DI为变址寄存器为变址寄存器):有效地址有效地址0158H+10A5H+1B57H2D54H物理地址物理地址21000H+2D54H23D54H MOV AX, DI+1B57HMOV AX, BX+DIMOV AX, BX+DI+1B57H39/94微机原理及应用微机原理及应用 吴丽娟吴丽娟例:已知例:已知DS=1000H, ES=2000H, SS=1100H, SI=1010H, BX=

36、0200H, BP=0600H. 请指出下列指令的源操作数字段是什么寻址方式请指出下列指令的源操作数字段是什么寻址方式, 源操作数源操作数物理地址是多少。物理地址是多少。MOV AL, 2400HMOV AX, BPADD AX, ES:BP+10MOV AL, BX+SI+25直接寻址直接寻址, PA=DS*16+2400=12400H寄存器间接寻寄存器间接寻址址, PA=SS*16+BP=11600H寄存器相对寻寄存器相对寻址址, PA=ES*16+BP+0AH=2060AH相对基址加变址寻相对基址加变址寻址址, PA=DS*16+BX+SI+19H=11229H40/94微机原理及应用微

37、机原理及应用 吴丽娟吴丽娟例:例:分别指出下列指令的源操作数分别指出下列指令的源操作数和目的操作数的寻址方式。和目的操作数的寻址方式。MOV SI, 200MOV CX, DATA:SIADD AX, BXSIADD AX, BXMOV SI, AX源源:立即数寻址立即数寻址 目的目的:寄存器寻址寄存器寻址源源:寄存器间接寻址寄存器间接寻址 目的目的:寄存器寻址寄存器寻址源源:基址加变址寻址基址加变址寻址 目的目的:寄存器寻址寄存器寻址源源:寄存器寻址寄存器寻址 目的目的:寄存器寻址寄存器寻址源源:寄存器寻址寄存器寻址 目的目的:寄存器间接寻址寄存器间接寻址41/94微机原理及应用微机原理及应

38、用 吴丽娟吴丽娟例:写出以下指令中内存例:写出以下指令中内存 操作数的所在地址。操作数的所在地址。(1) MOV AL, BX+5(2) MOV BP+5, AX(3) INC BYTE PTRSI+3(4) MOV DL, ES:BX+DI(5) MOV BX, BX+SI+2(1)数据段基址寻址数据段基址寻址, (DS)*16+(BX)+5(2)以以BP寄存器进行的间接寻址寄存器进行的间接寻址(堆栈段基址寻堆栈段基址寻址址), (SS)*16+(BP)+5(3)本条指令含义为本条指令含义为:将将SI+3所指存储单元的所指存储单元的内容加内容加1, (DS)*16+(SI)+3(4)基址加变

39、址寻址基址加变址寻址, (ES)*16+ +(BX)+(DI)(5)相对基址加变址寻址相对基址加变址寻址, (DS)*16+ +(BX)+(SI)+242/94微机原理及应用微机原理及应用 吴丽娟吴丽娟寻址方式小结寻址方式小结寻址方式寻址方式操作数地址操作数地址(PA)指令格式举例指令格式举例立即数寻址立即数寻址操作数由指令给出操作数由指令给出MOV DX, 100H ;(DX)100H寄存器寻址寄存器寻址操作数在寄存器中操作数在寄存器中 ADD AX, BX ;(AX)(AX)+(BX)直接寻址直接寻址操作数的有效地址由指令直接给出操作数的有效地址由指令直接给出MOV AX, 100H ;(

40、AX)(100H)寄存器寄存器间接寻址间接寻址 PA=(DS)16+(BX)或或(SI)或或(DI)PA=(SS) 16+(BP)MOV AX, BX ; (AX)(DS)16+(BX)MOV AX, BP ; (AX)(SS)16+(BP)基址变址寻址基址变址寻址 PA=(DS)16+(BX)+(SI)或或(DI)PA=(SS) 16+(BP) +(SI)或或(DI) MOV AX, BX+DI ;(AX)(DS)16+(BX)+(DI)相对基址相对基址变址寻址变址寻址 PA=(DS)16+(BX)+(SI)或或(DI)+位移量位移量PA=(SS) 16+(BP) +(SI)或或(DI)+位

41、移量位移量 MOV AX, BX+DI+100 ;(AX)(DS)16+(BX)+(DI)+10043/94指令指令类指令名称指令名称指令助指令助忆符符传送送数据数据/地址地址传送送进出出栈交交换、换码输入入输出出MOV LEA LDS LES LAHF SAHFPUSH PUSHF POP POPF XCHG XLATIN OUT算算术运算运算加、减、比加、减、比较乘、除、乘、除、扩展展十十进制制调整整ADD ADC INC SUB SBB DEC NEG CMP MUL IMUL DIV IDIV CBW CWDAAA AAS DAA DAS AAM AAD位操作位操作逻辑运算运算移位移位

42、循循环移位移位AND OR XOR TEST NOTSAL/SHL SHR SAR ROL ROR RCL RCR串操作串操作串串传送送存取串存取串串比串比较、串、串扫描描MOVS MOVSB MOVSW STOS STOSB STOSW LODS LODSB LODSW CMPS CMPSB CMPSW SCAS SCASB SCASW 程序控制程序控制调用、中断返回用、中断返回无条件无条件转移移循循环控制指令控制指令条件条件转移移CALL RET IRET INT INTOJMPLOOP LOOPE/LOOPZ LOOPNE/LOOPNZ JCXZ JA/JNBE JAE/JNB JB/J

43、NAE JBE/JNA JG/JNLE JE/JZ JNE/JNZJGE/JNL JL/JNGE JLE/JNG JNC JC JNS JS JP/JPE JNP/JPO JNO JO处理器控制理器控制清置清置标志志其它其它CLC STC CMC CLD STD CLI STINOP WAIT HLT 前前缀重复前重复前缀段超越前段超越前缀总线封封锁前前缀REP REPE/REPZ REPNE/REPNZES: DS: CS: SS: LOCKp常用指令常用指令 44/94微机原理及应用微机原理及应用 吴丽娟吴丽娟5.2 传送类指令传送类指令n传送类指令可以分为传送类指令可以分为4种:种:n通

44、用数据传送指令通用数据传送指令n目标地址传送指令目标地址传送指令n标志位传送指令标志位传送指令nI/O数据传送指令数据传送指令 传送类指令是指令系统中最活跃的一类指令传送类指令是指令系统中最活跃的一类指令, 也是条数最也是条数最多的一类指令多的一类指令, 主要用于数据的保存及交换等场合。主要用于数据的保存及交换等场合。45/94 除了除了SAHF和和POPF指令外指令外, 其余指令执行其余指令执行后对标志位都后对标志位都没有没有影响。影响。指令指令类型类型指令格式指令格式指令功能指令功能状态标志位状态标志位备注备注O S Z A P C通用通用数据数据传送传送MOV 目标目标, 源源PUSH

45、源源POP 目标目标XCHG 目标目标, 源源XLAT传送字节或字传送字节或字字压入堆栈字压入堆栈字弹出堆栈字弹出堆栈交换字节或字交换字节或字字节翻译字节翻译 . . . . . . 源:源:R、M、立即数、立即数 目标:目标:R、M源:源:R、M目标:目标:R(CS除外除外)、M源:通用源:通用R、M 目标:通用目标:通用R、M目标目标地址地址传送传送LEA 目标目标, 源源LDS目标目标, 源源LES目标目标, 源源装入有效地址装入有效地址装入数据段指针到装入数据段指针到DS装入附加段指针到装入附加段指针到ES 源:内存操作数源:内存操作数 目标:目标:16位通用位通用R源:内存操作数源:

46、内存操作数 目标:目标: 16位通用位通用R源:内存操作数源:内存操作数 目标:目标: 16位通用位通用R标志位标志位 传送传送LAHFSAHFPUSHFPOPF把把FR低字节装入低字节装入AH把把AH内容装入内容装入FR低字节低字节把把FR内容压入堆栈内容压入堆栈从堆栈中弹出从堆栈中弹出FR内容内容 I/O数据数据传送传送IN 累加器累加器, 端口端口OUT 端口端口, 累加器累加器输入字节或字输入字节或字输出字节或字输出字节或字 累加器:累加器:AL或或AX端口:地址端口:地址0255或间接寄存器或间接寄存器DX : 运算结果影响标志位运算结果影响标志位:运算结果不影响标志位:运算结果不影

47、响标志位传送类指令传送类指令46/94微机原理及应用微机原理及应用 吴丽娟吴丽娟5.2.1 通用数据传送指令通用数据传送指令 通用传送指令中包括最基本的传送指令通用传送指令中包括最基本的传送指令MOV, 堆栈指令堆栈指令PUSH和和POP, 数据交换指令数据交换指令XCHG。 1. 最基本的传送指令最基本的传送指令 MOV指令是形式最简单、用得最多的指令。它可以实现指令是形式最简单、用得最多的指令。它可以实现CPU内内部寄存器之间的数据传送、寄存器和内存之间的数据传送部寄存器之间的数据传送、寄存器和内存之间的数据传送, 还可以还可以把一个立即数送给把一个立即数送给CPU的内部寄存器或者内存单元

48、。的内部寄存器或者内存单元。将数据从一个地址传送到另一个地址;将数据从一个地址传送到另一个地址;数据在传送过程中不发生任何变化;数据在传送过程中不发生任何变化;对标志寄存器的内容无任何影响。对标志寄存器的内容无任何影响。 传送指令的特点传送指令的特点 47/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 1. 最基本的传送指令最基本的传送指令 MOV BH, DI ;源操作数为寄存器间接寻址;源操作数为寄存器间接寻址 MOV DI, ES:3SI ;源操作数为变址寻址;源操作数为变址寻址, 使用跨段前缀使用跨段前缀 MOV BP, 3BX+SI ;源操作数为基址加变址寻址;源操作数为基址加变址

49、寻址 MOV AL, BL ;BL 中的中的8位数据送位数据送AL MOV ES, DX ;DX 中的中的16位数据送附加段寄存器位数据送附加段寄存器ES MOV AX, BX ;BX和和BX+1 所指的两个内存单元内容送所指的两个内存单元内容送AX MOV DI, AX ;累加器的内容送;累加器的内容送DI和和DI+1所指的两个单元所指的两个单元 MOV CX, 1000 ;把;把1000和和1001两个单元的内容送两个单元的内容送CX48/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 使用使用MOV指令传送数据时应该注意:指令传送数据时应该注意: 立即数和段寄存器立即数和段寄存器CS不能

50、作为目的操作数;不能作为目的操作数; 如如 MOV CS, AX 或或 MOV 1000H, AX 立即数不能直接传送到段寄存器;立即数不能直接传送到段寄存器; 如如 MOV CS, 1000H 两个存储单元之间不能直接传送数据;两个存储单元之间不能直接传送数据; 如如 MOV 1000H, 2000H 两个段寄存器之间不能直接传送数据两个段寄存器之间不能直接传送数据 如如 MOV DS, ES 49/94微机原理及应用微机原理及应用 吴丽娟吴丽娟n例如例如:分析如下:分析如下MOV指令的正确性:指令的正确性:MOV AX, BL MOV DS, 1000HMOV BX , SIMOV ES,

51、 CSMOV CS, AX;类型不匹配;类型不匹配;不允许立即数送段寄存器;不允许立即数送段寄存器;不允许内存操作数之间传送;不允许内存操作数之间传送;不允许段寄存器之间传送;不允许段寄存器之间传送; CS不能作为目的操作数不能作为目的操作数50/94微机原理及应用微机原理及应用 吴丽娟吴丽娟补充:堆栈补充:堆栈(STACK) 是按后进先出原则组织的一片存储区域,用来暂是按后进先出原则组织的一片存储区域,用来暂存一批需要回避的数据或地址。存一批需要回避的数据或地址。“后进先出后进先出”n堆栈:堆栈:暂存数据、断点信息或传送信息暂存数据、断点信息或传送信息n用途:用途:n存取原则存取原则:n堆栈

52、段的堆栈段的最大深度最大深度:64KB51/94微机原理及应用微机原理及应用 吴丽娟吴丽娟堆栈的构造堆栈的构造 一端一端固定固定,具有最大地址的单元,具有最大地址的单元(数据由此向上堆积数据由此向上堆积)一一端端浮浮动动,指指向向最最后后被被压压入入堆堆栈栈的的数数据据所所在在存存储储单单元元(栈栈顶顶的的位位置置随堆栈中存放数据多少而变化随堆栈中存放数据多少而变化)用来指示当前栈顶的位置。用来指示当前栈顶的位置。(压入压入的数据放入哪个单元或从那个单的数据放入哪个单元或从那个单元弹出数据均由元弹出数据均由SP决定决定)堆堆栈栈段段SSBottomXXXXXXXXTopSP初始初始SP1.栈底

53、:栈底:2.栈顶:栈顶:3.堆栈指针:堆栈指针:52/94微机原理及应用微机原理及应用 吴丽娟吴丽娟8086堆栈的组织堆栈的组织 该片存储区域所包含存储单元数,其值有由该片存储区域所包含存储单元数,其值有由初始时初始时SP的值决定的值决定(指向栈底指向栈底+1单元单元)12H34H01954H01955H 如如64KB的的堆堆栈栈段段不不能能满满足足需需要要,可可通通过过修修改改SS来来改改变变当当前前的的堆堆栈栈段段,使使之之指指向向另一片存储区域,同时另一片存储区域,同时SP重新赋值重新赋值堆栈段堆栈段:由由SS存放堆栈段段基值以决定其起始地址存放堆栈段段基值以决定其起始地址堆栈段的长度:

54、堆栈段的长度:堆栈是按字组织的,数据的存取均为堆栈是按字组织的,数据的存取均为2字节操作字节操作数据在堆栈段内的存放数据在堆栈段内的存放堆栈区域的扩展:堆栈区域的扩展:53/94微机原理及应用微机原理及应用 吴丽娟吴丽娟堆栈的三种基本操作堆栈的三种基本操作SS、SP赋值赋值(段的起始位置及长度段的起始位置及长度)SP2 SP;栈顶向上浮动栈顶向上浮动数据数据(SS:SP)(SS:SP) (SS:SP) R/M SP+2 SP数据数据;栈顶向下回落栈顶向下回落1、设置堆栈、设置堆栈2、进栈、进栈把数据压入堆栈,在栈顶进行把数据压入堆栈,在栈顶进行3、出栈、出栈从栈顶取出数据送入从栈顶取出数据送入

55、R/M54/94微机原理及应用微机原理及应用 吴丽娟吴丽娟n执行堆栈指令执行堆栈指令PUSH和和POP时,指令地址是由时,指令地址是由SP给出当前给出当前栈顶的偏移地址,故将栈顶的偏移地址,故将SP称为堆栈指针寄存器称为堆栈指针寄存器。SP和和BP在使用上有区别:在使用上有区别:nBP则是用来存放位于堆栈段中的一个数据区基址的偏移地则是用来存放位于堆栈段中的一个数据区基址的偏移地址的,故将址的,故将BP称做基址指针寄存器称做基址指针寄存器。55/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 86系系列列指指令令系系统统中中提提供供了了专专用用的的堆堆栈栈操操作作指指令令, 其其中中PUSH是

56、是把把字字压压入入堆堆栈栈, POP是是把把字字弹弹出出堆堆栈栈。在在程程序序中中采采用用堆堆栈栈操操作作指指令令时时, 应应预预置置堆堆栈栈段段寄寄存存器器SS、堆堆栈栈指指示示器器SP的的值值, 同同时时, 使使SP的的内内容为当前堆栈段的栈顶。容为当前堆栈段的栈顶。 在在执执行行PUSH指指令令时时, 首首先先, 堆堆栈栈指指示示器器SP自自动动减减2;然然后后, 将将一一个个字字以以源源操操作作数数传传送送至至栈栈顶顶。POP指指令令的的执执行行过过程程正正好好与与PUSH指指令令相相反反, 它它把把由由SP指指出出的的当当前前堆堆栈栈段段的的栈栈顶顶的的一一个个操操作作数数(一一个个

57、字字), 传送到目的操作数中传送到目的操作数中, 然后然后, SP自动加自动加2, 指向新的栈顶。指向新的栈顶。2.堆栈操作指令堆栈操作指令56/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 POP指令中的目的操作数可以是除代码段寄存器指令中的目的操作数可以是除代码段寄存器CS之外之外的其它寄存器和存储器。在的其它寄存器和存储器。在86系列指令系统中系列指令系统中, 不允许不允许CS寄存器作为目的操作数使用。这是因为寄存器作为目的操作数使用。这是因为, 一旦改变了一旦改变了代码段寄存器代码段寄存器CS的内容的内容, 使程序有了新的当前代码段使程序有了新的当前代码段, 就会导致就会导致CPU从

58、新的从新的CS和和IP给出的毫无意义的地址中给出的毫无意义的地址中去取下一条指令去取下一条指令, 使程序错误运行。使程序错误运行。2.堆栈操作指令堆栈操作指令57/94 例例如如, 将将16位位通通用用寄寄存存器器CX的的内内容容压压入入堆堆栈栈, 然然后后, 弹弹出出栈栈顶顶至至CX中中, 已已知知: (SS)0200H, (SP)0008H, (CX)12FAH, 其其示意图如下图所示。示意图如下图所示。2.堆栈操作指令堆栈操作指令+20200SS0008SP12FACXSS段段首地址首地址新栈顶新栈顶原栈顶原栈顶12FAH200020062007 2008存储器存储器 12FA16PUS

59、H CX指令的操作过程指令的操作过程58/94PUSH指令的功能指令的功能微机原理及应用微机原理及应用 吴丽娟吴丽娟59/94 例如例如, 将将16位通用寄存器位通用寄存器CX的内容压入堆栈的内容压入堆栈, 然后然后, 弹出栈顶弹出栈顶至至CX中中, 已知已知: (SS)0200H, (SP)0008H, (CX)12FAH, 其其示意图如下图示意图如下图5.4和图和图5.5所示。所示。2.堆栈操作指令堆栈操作指令+20200SS0006SPSS段段首地址首地址原栈顶原栈顶12FAH新栈顶新栈顶200020062007 2008存储器存储器 12FA12FACX+16POP CX指令的操作过程

60、指令的操作过程60/94POP指令的功能指令的功能微机原理及应用微机原理及应用 吴丽娟吴丽娟61/94微机原理及应用微机原理及应用 吴丽娟吴丽娟n例例 设设SS=1234H, SP=0FEFEH, DX=0314H, AX=3010H。问:问: 1)当前栈顶的物理地址。当前栈顶的物理地址。 2)执行执行 PUSH DX PUSH AX POP AX 后后SP=? (1) MOV CX, AX MOV AX, BX MOV BX, CX (2)PUSH AX PUSH BX POP AX POP BX解:解: 1)SS16+SP=12340+0FEFE=2223EH 2)SP2 SP=0FEFC

61、H 例例 写出写出将将AX 和和 BX中内容互换有哪几种方法中内容互换有哪几种方法62/94微机原理及应用微机原理及应用 吴丽娟吴丽娟n例例 设堆栈指针设堆栈指针SP的初值为的初值为2000H, AX3000H, BX5000H, 试问:试问:n(1) 执行指令执行指令PUSH AX后后SP?n(2) 再执行再执行 PUSH BXn POP AXn后后 SP?AX?BX?解:解: 1) 执行指令执行指令PUSH AX后后 SP2000H2=1FFEH 2) SP=1FFEH , AX5000H, BX=5000H005000302000H63/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 3

62、. 交换指令交换指令 交交换换指指令令XCHG可可以以实实现现字字节节交交换换, 也也可可以以实实现现字字交交换换。交交换换过过程程可可以以在在CPU的的内内部部寄寄存存器器之之间间进进行行, 也也可可以以在在内内部部寄寄存存器器和和存存储储单单元元之间进行之间进行, 但但不能在两个存储单元之间执行数据交换过程不能在两个存储单元之间执行数据交换过程。例如:。例如: XCHGAL, BL ;AL和和BL之间进行字节交换之间进行字节交换 XCHGBX, CX ;BX和和CX之间进行字交换之间进行字交换 XCHG 2530, CX;CX和和2530, 2531两单元的内容交换两单元的内容交换 MOV

63、 AX, 5678H;(AX)=5678H MOV BX, 0FFFFH ;(BX)=0FFFFH XCHG AX, BX;(AX)=0FFFFH , ( BX)=5678H不能使用不能使用CS、IP作为操作数作为操作数64/94XCHG指令的功能指令的功能微机原理及应用微机原理及应用 吴丽娟吴丽娟65/94微机原理及应用微机原理及应用 吴丽娟吴丽娟4. 换码指令换码指令 XLAT是一条完成字节翻译功能的指令是一条完成字节翻译功能的指令, 称为换码指令。它可以称为换码指令。它可以使累加器中的一个值变换为内存表格中的某一个值使累加器中的一个值变换为内存表格中的某一个值, 一般用来实一般用来实现编

64、码制的转换。使用换码指令时现编码制的转换。使用换码指令时, 要求要求BX寄存器指向表的首寄存器指向表的首地址地址, AL中为表中某一项与表格首地址之间的偏移量中为表中某一项与表格首地址之间的偏移量, 指令执行指令执行时时, 会将会将BX和和AL中的值相加中的值相加, 把得到的值作为地址把得到的值作为地址, 然后将此地然后将此地址所对应的单元中的值取到址所对应的单元中的值取到AL中去。中去。66/94微机原理及应用微机原理及应用 吴丽娟吴丽娟图图5.6表示了换码指令的功能。表示了换码指令的功能。XLAT指令就是通过查表方式指令就是通过查表方式来完成翻译功能的来完成翻译功能的, 因此因此, 在执行

65、该指令之前在执行该指令之前, 必须建立好一张必须建立好一张翻译表翻译表, 该表的最大容量为该表的最大容量为256字节。字节。图图5.6换换码码指指令令的的功功能能67/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 执行执行XLAT指令可将任意一个十进制数翻译成指令可将任意一个十进制数翻译成7段显示码段显示码, 其操作步其操作步骤如下:骤如下:(1) 将译码表定位到某个逻辑段的一片连续地址中将译码表定位到某个逻辑段的一片连续地址中, 并将其表首址的偏并将其表首址的偏移地址置入移地址置入BX寄存器中。寄存器中。(2) 将待翻译的十进制数字送入将待翻译的十进制数字送入AL寄存器中。寄存器中。(3)

66、 执行执行XLAT指令。指令。 例如例如, 假设这段数据存放在偏移地址为假设这段数据存放在偏移地址为2000H开始的内存中开始的内存中, 取出取出“3”所对应的所对应的7段码段码, 用如下几条程序助记符即可完成:用如下几条程序助记符即可完成: MOVBX, 2000H MOVAL, 3 XLAT68/94XLAT指令的功能指令的功能微机原理及应用微机原理及应用 吴丽娟吴丽娟69/94微机原理及应用微机原理及应用 吴丽娟吴丽娟5.2.2 目标地址传送指令目标地址传送指令 这是一类专用于传送地址码的指令这是一类专用于传送地址码的指令, 用来传送操作数的段地址用来传送操作数的段地址或偏移地址或偏移地

67、址, 共包含以下共包含以下3条指令:条指令: 1. 取有效地址指令取有效地址指令 取有效地址指令取有效地址指令LEA的功能是将存储器地址送到一个寄存器的功能是将存储器地址送到一个寄存器. LEA指令格式中指令格式中, 要求源操作数必须为内存单元地址要求源操作数必须为内存单元地址, 目的操作目的操作数必须为一个数必须为一个16位的通用寄存器。位的通用寄存器。1取有效地址指令取有效地址指令 LEA2取偏移地址及数据段首址指令取偏移地址及数据段首址指令 LDS3取偏移地址及附加数据段指令取偏移地址及附加数据段指令 LES70/94微机原理及应用微机原理及应用 吴丽娟吴丽娟5.2.2 目标地址传送指令

68、目标地址传送指令这条指令常用来使一个寄存器作为地址指针。例如:这条指令常用来使一个寄存器作为地址指针。例如:LEAAX, 2728;将;将2728单元的偏移量送单元的偏移量送AX, 指令执行后指令执行后, AX=2728LEABX, BP+SI;指令执行后;指令执行后, BX中的内容为中的内容为BP+SI的值的值LEASP, 0482;使堆栈指针;使堆栈指针SP为为482例如:主存偏移地址的获取。例如:主存偏移地址的获取。MOV BX, 0100H;(BX)=0100HMOV SI, 0210H;(SI) =0210HLEA BX, 1234BX+SI ; (BX)=1544H注注: LEA

69、BX, 1234BX+SI等同于等同于LEA BX, BX+SI+123471/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 如如 LEA BX , 2700H ;将;将(相对于相对于DS)偏移地址偏移地址2700H送送 BX ;(BX)= 2700H例例:设:设 DS=3000H, BX=2000H, SI=1000H, 问问 (1)执行执行 LEA AX, BX+SI+1000H后后, AX=? (2)执行执行 MOV AX, BX+SI+1000H后后, AX=?8DH80H00H10H56H12HDS 30000HBX 2000HSI 1000H+ 1000H 34000H34000

70、HEA4000HAX操作码位移量代码段数据段LEA与与MOV指令的区别指令的区别4000H1256H即:即:MOV指令传送操作数的内容指令传送操作数的内容, LEA传送操作数的地址。传送操作数的地址。72/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 2. 将地址指针装到将地址指针装到DS和另一个寄存器的指令和另一个寄存器的指令 LDS指指令令的的功功能能是是把把4个个字字节节的的地地址址指指针针(其其中中包包括括一一个个段段地地址址和和一一个个偏偏移移量量)传传送送到到两两个个目目的的寄寄存存器器, 其其中中, 地地址址指指针针的的后后两两个字节即段地址一定送到个字节即段地址一定送到DS中

71、。中。 比比如如, 设设2130H2133H这这4个个单单元元中中存存放放着着一一个个地地址址, 2130H和和2131H中中为为地地址址的的偏偏移移量量, 2132H和和2133H中中为为地地址址的的段段值值, 执执行指令:行指令: LDS DI, 2130H 使使2130H和和2131H中中的的偏偏移移量量送送到到DI, 2132H和和2133H中中的的段段值送到值送到DS。73/94微机原理及应用微机原理及应用 吴丽娟吴丽娟2. 将地址指针装到将地址指针装到DS和另一个寄存器的指令和另一个寄存器的指令 设设1000H、1001H、1002H、1003H这四个存储单元存这四个存储单元存放的

72、地址分别为放的地址分别为12H 、34H、 56H 、78H, 则执行完则执行完 LDS DI, 1000H 后后, DS=?, DI=?答案:答案:DS=7856H, DI=3412H74/94微机原理及应用微机原理及应用 吴丽娟吴丽娟3. 将地址指针装到将地址指针装到ES和另一个寄存器的指令和另一个寄存器的指令 LES指令与指令与LDS指令的操作基本相同指令的操作基本相同, 所不同仅在于将源操作所不同仅在于将源操作数所指向地址指针中的段基址数所指向地址指针中的段基址(后两个字节后两个字节)传送到传送到ES段寄存器段寄存器, 而不是而不是DS段寄存器。段寄存器。75/94微机原理及应用微机原

73、理及应用 吴丽娟吴丽娟LDS或或LES指令将源操作数指定的指令将源操作数指定的4个连续字节单元内容分别送入个连续字节单元内容分别送入指令指定的寄存器以及指令指定的寄存器以及DS或或ES中。中。其中:低其中:低16位送到一个指定的字寄存器位送到一个指定的字寄存器, 高高16位送到位送到DS或或ES中。中。57H13H68H24H例:例:(DS)=C000H, (C2480H)=1357H, (C2482H)=2468HDS:2480HDS:2481HDS:2482HDS:2483H 13 57 SI 24 68 DSLDS SI, 248076/94微机原理及应用微机原理及应用 吴丽娟吴丽娟5.

74、2.3 标志位传送指令标志位传送指令 可完成标志位传送的指令共有可完成标志位传送的指令共有4条:条:1读取标志指令读取标志指令LAHF2设置标志指令设置标志指令SAHF3标志寄存器进栈指令标志寄存器进栈指令PUSHF4标志寄存器出栈指令标志寄存器出栈指令POPF77/94微机原理及应用微机原理及应用 吴丽娟吴丽娟图图5.7 LAHF指令的功能指令的功能1. 读取标志指令读取标志指令 读取标志指令读取标志指令LAHF被执行时被执行时, 将标志寄存器中的低将标志寄存器中的低8位位传送到传送到AH中中, 如图如图5.7所示。所示。D5 D3 D1三位任意!三位任意!78/94微机原理及应用微机原理及

75、应用 吴丽娟吴丽娟2. 设置标志指令设置标志指令 设置标志指令设置标志指令SAHF被执行时被执行时, 将将AH寄存器的相应位传送到标志寄存器的相应位传送到标志寄存器的低寄存器的低8位。用下图表示。位。用下图表示。79/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 3. 对标志寄存器的压入堆栈指令和弹出堆栈指令对标志寄存器的压入堆栈指令和弹出堆栈指令 PUSHF指指令令将将标标志志寄寄存存器器的的值值压压入入堆堆栈栈顶顶部部, 同同时时, 堆堆栈栈指指针针SP的值减的值减2, 此指令在执行时标志寄存器的值不变。此指令在执行时标志寄存器的值不变。 POPF指指令令的的功功能能正正好好相相反反,

76、此此指指令令在在执执行行时时从从堆堆栈栈中中弹弹出出一一个字送到标志寄存器中个字送到标志寄存器中, 同时堆栈指针同时堆栈指针SP的值加的值加2。PUSHFPOP AXOR AH, 01HPUSH AXPOPF利利用用这这两两条条指指令令可可以以方方便便的的修修改改FR中中某某一一位位。如如, 86/8088系系统统中中无无直直接接能能修修改改TF标标志志位位的的指指令令, 可用右边程序实现:可用右边程序实现:80/94微机原理及应用微机原理及应用 吴丽娟吴丽娟5.2.4 输入输入/输出数据传送指令输出数据传送指令输入输入/输出指令用来完成累加器输出指令用来完成累加器(AX/AL)与与I/O端口

77、之间的数据传送端口之间的数据传送. 执行执行输入输入指令时指令时, CPU可以从一个可以从一个8位端口读入一个字节到位端口读入一个字节到AL中中, 也可以从两个连续的也可以从两个连续的8位端口读一个字到位端口读一个字到AX中。中。 执行执行输出输出指令时指令时, CPU可以将可以将AL中的一个字节写到一个中的一个字节写到一个8位端位端口中口中, 或者将或者将AX中的一个字写到两个连续的中的一个字写到两个连续的8位端口中。位端口中。CPU外设外设I/OI/OPORT81/94 IN有四种形式:有四种形式:(1)语句格式:语句格式:IN AL, PORT 功能:功能:(PORT)AL(2)语句格式

78、:语句格式:IN AX, PORT 功能:功能:(PORT)AXINAL, 50H;将;将50H端口的字节读入端口的字节读入ALINAX, 70H;将;将70H、71H两端口的值读入两端口的值读入AX, 70H端口的内容端口的内容读入读入AL, 71H端口的内容读入端口的内容读入AH源操作数源操作数“50H、70H ”从形式上来说是立即数从形式上来说是立即数, 实际上是端口地址实际上是端口地址, 因而指令的寻址方式为因而指令的寻址方式为直接寻址。直接寻址。“MOV”指令中指令中, 直接寻址要加中括号直接寻址要加中括号, 输入输出指令不加。如输入输出指令不加。如 MOV AL, 2000H; I

79、N AL, 25H 这两句这两句: 直接直接IN指令指令(端口地址只能端口地址只能 8 位位)间接间接IN指令指令(口地址是口地址是16 位位, 也可也可8 位。位。) MOV DX, 0FFF2H IN AL , DX82/94微机原理及应用微机原理及应用 吴丽娟吴丽娟(3)语句格式:语句格式:IN AL, DX ;从从DX所指的端口中读取一个字节所指的端口中读取一个字节 功能:功能:(DX)AL(4)语语句句格格式式:IN AX, DX; 从从DX和和DX+1所所指指出出的的两两个个端端口口中中读读取取一一个个字字, 较较低低地地址址端端口口中中的的值值读读到到AL中中, 较较高高地地址址

80、端端口口中中的的值值读读到到AH中中; 功能:功能:(DX)AL注注意意: 这这两两条条指指令令为为寄寄存存器器间间接接寻寻址址, 但但对对DX不加中括号。如不加中括号。如 MOV AL, BX IN AL, DX83/94微机原理及应用微机原理及应用 吴丽娟吴丽娟OUT有四种形式:有四种形式:(1)语句格式:语句格式:OUT PORT, AL 功能:功能:(AL)PORT(2)语句格式:语句格式:OUT PORT, AX 功能:功能:(AX)PORTOUT44H, AL;将;将AL中的一个字节输出到中的一个字节输出到44H端口端口OUT80H, AX;将;将AX中的内容输出到中的内容输出到8

81、0H, 81H两端口两端口, AL中的中的内容输出到内容输出到80H, AH中的内容输出到中的内容输出到81Hn直接直接OUT指令指令n(端口地址只能(端口地址只能 8 位)位)84/94微机原理及应用微机原理及应用 吴丽娟吴丽娟(3)语句格式:语句格式:OUT DX, AL ;将将AL中的字节输出到中的字节输出到DX所指的端口所指的端口(4)语句格式:语句格式:OUT DX, AX ;将将AL中的字节输出到中的字节输出到DX所指的端口中所指的端口中, 同时将同时将AH中的字节输出到中的字节输出到DX+1所指的端口中所指的端口中n间接间接OUT指令指令(端口地址是端口地址是16 位位, 也可也

82、可8 位。位。)n MOV DX, 87FEH MOV DX , 80Hn MOV AL , 40H OUT DX , ALn OUT DX , AL例例1例例285/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 在在计计算算机机内内部部表表示示二二进进制制数数的的方方法法通通常常称称为为数数值值编编码码, 把把一一个个数数及及其符号在机器中的表示加以数值化其符号在机器中的表示加以数值化, 这样的数称为机器数。这样的数称为机器数。 机机器器数数有有两两个个基基本本特特点点, 其其一一, 数数的的符符号号数数值值化化。整整数数有有正正数数和和负负数数, 因因为为计计算算机机只只能能表表示示0、

83、1两两种种状状态态, 数数据据的的正正号号“+”或或负负号号“”, 在在机机器器里里就就用用一一位位二二进进制制的的0或或1来来区区别别。通通常常这这个个符符号号放放在在二二进进制制数数的的最最高高位位, 称称符符号号位位, 以以0代代表表符符号号“+”, 以以1代代表表符符号号“”, 这这样样正正负负符符号号就就被被数数值值化化了了。因因为为有有符符号号占占据据一一位位, 数数的的形形式式值值就就不不等等于于真真正正的数值的数值, 带符号位的机器数对应的数值称为机器数的真值。带符号位的机器数对应的数值称为机器数的真值。补充补充: 机器数机器数86/94微机原理及应用微机原理及应用 吴丽娟吴丽

84、娟 机机器器数数的的另另一一个个特特点点是是二二进进制制的的位位数数受受机机器器设设备备的的限限制制。机机器器内内部部设设备备一一次次能能表表示示的的二二进进制制位位数数叫叫机机器器的的字字长长, 一一台台机机器器的的字字长长是是固固定定的的。字字长长8位位叫叫一一个个字字节节(Byte), 现现在在机机器器字字长长一一般般都都是是字节的整数倍字节的整数倍, 如字长如字长8位、位、16位、位、32位、位、64位。位。 n 字长为字长为8位时位时, D7为符号位;字长为为符号位;字长为16位时位时, D15为符号位。如为符号位。如, 一个一个8位位字长的计算机中字长的计算机中, 带符号数的格式如

85、下:带符号数的格式如下:n D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0n正数正数 负数负数 n 其中其中, 最高位最高位D7是符号位是符号位, 其余其余D6 D0是数值位。是数值位。0187/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 1、机器数的范围、机器数的范围 机器数的范围由计算机的硬件决定。机器数的范围由计算机的硬件决定。 当当使使用用8位位寄寄存存器器的的时时候候, 字字长长为为8位位, 所所以以一一个个无无符符号号整整数数的的最最大值是大值是1111 1111B=255D, 此时称机器数的范围为此时称机器数的范围为0 255。

86、 当当使使用用16位位寄寄存存器器的的时时候候, 字字长长为为16位位, 所所以以一一个个无无符符号号整整数数的的最最大大值值是是1111 1111 1111 1111B=65535D=FFFFH, 此此时时称称机机器器数数的的范围为范围为0 65535。2、机器数中小数点的位置、机器数中小数点的位置 机机器器中中, 小小数数点点的的位位置置通通常常有有两两种种约约定定:一一种种规规定定小小数数点点的的位位置置固固定定不不变变, 这这时时的的机机器器数数称称为为“定定点点数数”;另另一一种种规规定定小小数数点点的位置可以浮动的位置可以浮动, 这时的机器数称为这时的机器数称为“浮点数浮点数”。8

87、8/94 机器数的三种表示方法机器数的三种表示方法:原码、反码、补码。:原码、反码、补码。 原码表示法原码表示法:正数的符号位用:正数的符号位用“0”表示表示, 负数的符号位用负数的符号位用“1”表示表示, 绝对值的编码与无符号数编码规则相同。绝对值的编码与无符号数编码规则相同。例:例:x = + 1010011, 即即x原原= 01010011 x = 1010011, 即即x原原= 11010011对于对于8 位二进制原码:位二进制原码:1、0有两种表示形式有两种表示形式 正零:正零:+0原原= 00000000 , 负零:负零:0原原= 100000002、8位二进制原码所能表示的数值范

88、围为位二进制原码所能表示的数值范围为127+127, 即:即: +127原原= 01111111 , 127原原= 11111111原码表示的整数范围是原码表示的整数范围是 (2n11) +(2n11 ), 其中其中n为机器字。则:为机器字。则:8位二进制原码所能表示的数值范围为位二进制原码所能表示的数值范围为127+12716位二进制原码所能表示的数值范围为位二进制原码所能表示的数值范围为32767+3276789/94 机器数的三种表示方法机器数的三种表示方法:原码、反码、补码。:原码、反码、补码。 反码表示法反码表示法:正数的反码表示与原码相同:正数的反码表示与原码相同, 最高位为符号位

89、最高位为符号位, 用用“0”表示表示, 其余位为数值位其余位为数值位, 如如+4反反= 00000100 。负数的反码。负数的反码, 表示为该数表示为该数对应的正数对应的正数按位取反按位取反(包括符号位包括符号位)。如:如: +4反反= 00000100 = +4原原= 00000100 4反反= 11111011对于对于8 位二进制反码:位二进制反码:1、0有两种表示形式有两种表示形式 正零:正零:+0反反= 00000000 , 负零:负零:0反反= 111111112、8位二进制反码所能表示的数值范围为位二进制反码所能表示的数值范围为127+127, 即:即: +127反反= 01111

90、111 , 127反反= 1000000090/94 机器数的三种表示方法机器数的三种表示方法:原码、反码、补码。:原码、反码、补码。 补码表示法补码表示法:除非特别声明,带符号数都默认由:除非特别声明,带符号数都默认由补码补码表示表示。 正数的补码表正数的补码表示与原码相同示与原码相同, 当当x0, 即即对于正数而言于正数而言, x补补=x反反=x原原, 最高位为符号位最高位为符号位, 用用“0”表示表示, 其余位为数值位其余位为数值位, 如如+4补补=0000 0100。 负数的补码等于其相应的反码加负数的补码等于其相应的反码加1, 即当即当x0时, x补补=x反反+1。如:如: 4补补=

91、 4反反+1=1111 1011+1=1111 1100对于对于8 位二进制补码:位二进制补码:1、0有表示是唯一的:有表示是唯一的:+0补补= 0补补=0000 0000是是 2n1 +(2n11 ), 其中其中n为机器字。则:为机器字。则:8位二进制补码所能表示的数值范围为位二进制补码所能表示的数值范围为: 无符号数无符号数0 255, 带符号数带符号数 2、8位二进制补码所能表示的数值范围为位二进制补码所能表示的数值范围为128+127, 即:即: +127补补= 0111 1111 , 128补补= 10000000补码表示的整数范围补码表示的整数范围128+12716位二进制补码所能

92、表示的数值范围为位二进制补码所能表示的数值范围为: 无符号数无符号数0 65535, 带符号数带符号数 32768+32767当运算结果超出这个范围时当运算结果超出这个范围时, 就不能正确表示数了就不能正确表示数了, 此时称溢出。此时称溢出。91/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 例例: (AX)=0400H, (BL)=94H, 作为无符号数和带符号数时作为无符号数和带符号数时, (AX)和和 (BL)十进制分别是多少?十进制分别是多少? 解解: (1) (AX) = 0000 0100 0000 0000= 1024(10)所以所以, (AX)为无符号数的为无符号数的1024

93、D, 带符号数的带符号数的+1024D。 (2) (BL)=94H = 1001 0100= 148(10) x = (001 0100求反求反+1)B = (110 1011+1)B = 110 1100 B = 108D所以所以, (BL)为无符号数的为无符号数的148D, 带符号数的带符号数的108D。92/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 例例:求求0D8H、0FFH作为无符号数和带符号数时作为无符号数和带符号数时, 十进制分别是多少?十进制分别是多少? 解解: (1)0D8H= 1101 1000B= 216(10) x = (101 1000求反求反+1)B = (0

94、10 0111+1)B = 010 1000 B = 40 所以作为用补码表示的带符号数所以作为用补码表示的带符号数, 0D8H表示的十进制是表示的十进制是40. (2)0FFH= 1111 1111B= 255(10) x = (111 1111求反求反+1)B = (000 0000+1)B = 000 0001 B = 1 所以作为用补码表示的带符号数所以作为用补码表示的带符号数, 0FFH表示的十进制是表示的十进制是1.93/94微机原理及应用微机原理及应用 吴丽娟吴丽娟 例例:设字长设字长8位,试写出位,试写出29的补码,并用十六进制表示。的补码,并用十六进制表示。 29补补= 29反反+1 = +29反反按位取反按位取反+1 = +29原原按位取反按位取反+1 = 0001 1101 B按位取反按位取反+1 = 1110 0010 B+1 = 1110 0011 B = 0E3 H94/94

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号