版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第1页共页共228页页2022-3-25第3章 指令系统和寻址方式 3.1 指令系统概述指令系统概述 3.2 8088/8086 CPU的寻址方式的寻址方式 3.3 8088/8086 CPU的指令系统的指令系统 习题习题3 第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第2页共页共228页页2022-3-253.1 指令系统概述指令系统概述 程序程序是指令的有序集合,是指令的有序集合,指令指令是程序的组成元素,通常一是程序的组成元素,通常一条指令对应着一种基本操作。一台计算机能执行什么样的操作,条指令对应着一种基本
2、操作。一台计算机能执行什么样的操作,能做多少种操作,是由该计算机的能做多少种操作,是由该计算机的指令系统指令系统决定的。一台计算决定的。一台计算机的指令集合,就是该计算机的指令系统。每种计算机都有自机的指令集合,就是该计算机的指令系统。每种计算机都有自己固有的指令系统,互不兼容。但是己固有的指令系统,互不兼容。但是同一系列的计算机其指令同一系列的计算机其指令系统是向上兼容的。系统是向上兼容的。 第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第3页共页共228页页2022-3-25 操作码字段操作码字段:用来说明该指令所要完成的操作。:用来说明该指令所要完成的操作。 地址码字段地
3、址码字段:用来描述该指令的操作对象。一般是直接:用来描述该指令的操作对象。一般是直接给出操作数,或者给出操作数存放的寄存器编号,或者给出给出操作数,或者给出操作数存放的寄存器编号,或者给出操作数存放的存储单元的地址或有关地址的信息。操作数存放的存储单元的地址或有关地址的信息。 例如例如: : ADD AX, BX OR AL, BL 每条指令由两部分组成:操作码字段和地址码字段,每条指令由两部分组成:操作码字段和地址码字段,格式如图格式如图3.1所示。所示。图图3.1 指令格式指令格式操作码操作码操作数操作数( (地址码地址码) )第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章
4、第4页共页共228页页2022-3-25 根据地址码字段所给出地址的个数,根据地址码字段所给出地址的个数,指令格式可分为零地指令格式可分为零地址、一地址、二地址、三地址和多地址指令格式址、一地址、二地址、三地址和多地址指令格式。大多数指令。大多数指令需要双操作数,分别称两个操作数为需要双操作数,分别称两个操作数为源操作数源操作数和和目的操作数目的操作数,指令运算结果存入目的操作数的地址中。这样,目的操作数的指令运算结果存入目的操作数的地址中。这样,目的操作数的原有数据将被取代。原有数据将被取代。Intel 8086/8088的双操作数运算指令就采用的双操作数运算指令就采用这种二地址指令。这种二
5、地址指令。 指令中用于确定操作数存放地址的方法,称为寻址方式指令中用于确定操作数存放地址的方法,称为寻址方式。如果地址码字段直接给出了操作数,这种寻址方式叫如果地址码字段直接给出了操作数,这种寻址方式叫立即寻址立即寻址;如果地址码字段指出了操作数所在的寄存器编号,叫如果地址码字段指出了操作数所在的寄存器编号,叫寄存器寻寄存器寻址址;如果操作数存放在存储器中,则地址码字段通过各种方式;如果操作数存放在存储器中,则地址码字段通过各种方式给出存储器地址,叫给出存储器地址,叫存储器寻址存储器寻址。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第5页共页共228页页2022-3-25 指
6、令有指令有机器指令机器指令和和汇编指令汇编指令两种形式。前一种形式由基两种形式。前一种形式由基2 2码码( (二进制二进制) )组成,它是机器所能直接理解和执行的指令。但这组成,它是机器所能直接理解和执行的指令。但这种指令不好记忆,不易理解,难写难读。因此,人们就用一些种指令不好记忆,不易理解,难写难读。因此,人们就用一些助记符来代替这种基助记符来代替这种基2 2码表示的指令,这就形成了汇编指令。码表示的指令,这就形成了汇编指令。 汇编指令中的汇编指令中的助记符助记符通常用英文单词的缩写来表示,如加通常用英文单词的缩写来表示,如加法用法用ADD、减法用减法用SUB、传送用传送用MOV等等,这些
7、符号化了的指等等,这些符号化了的指令使得书写程序、阅读程序、修改程序变得简单方便了。但计令使得书写程序、阅读程序、修改程序变得简单方便了。但计算机不能直接识别和执行汇编指令,在把它交付给计算机执行算机不能直接识别和执行汇编指令,在把它交付给计算机执行之前,必须翻译成计算机所能识别的机器指令。汇编指令与机之前,必须翻译成计算机所能识别的机器指令。汇编指令与机器指令是一一对应的,本书中的指令都使用汇编指令形式书写,器指令是一一对应的,本书中的指令都使用汇编指令形式书写,便于学习和理解。便于学习和理解。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第6页共页共228页页2022-3-
8、253.2 8088/8086 CPU的寻址方式的寻址方式 寻找和获得操作数、操作数存放地址或指令转移地址的方寻找和获得操作数、操作数存放地址或指令转移地址的方法称为寻址方式法称为寻址方式。8088/8086 CPU的寻址分为两类,即的寻址分为两类,即数据寻址数据寻址和和指令寻址指令寻址。指令寻址方式将在。指令寻址方式将在3.3.5节结合控制转移指令加以节结合控制转移指令加以讨论。讨论。 机器执行指令的目的就是对指定的操作数完成规定的操作,机器执行指令的目的就是对指定的操作数完成规定的操作,将操作结果存入规定的地方。因此,如何获得操作数的存放地将操作结果存入规定的地方。因此,如何获得操作数的存
9、放地址及操作结果的存放地址就是一个很关键的问题。址及操作结果的存放地址就是一个很关键的问题。 8088/8086 CPU有多种方法来获取操作数的存放地址及操有多种方法来获取操作数的存放地址及操作结果的存放地址,这些方法统称为作结果的存放地址,这些方法统称为数据寻址方式数据寻址方式。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第7页共页共228页页2022-3-25 操作数及操作结果存放的地点有三处:存放在指令的地址操作数及操作结果存放的地点有三处:存放在指令的地址码字段中;存放在寄存器中;存放在存储器的数据段、堆栈段码字段中;存放在寄存器中;存放在存储器的数据段、堆栈段或附加
10、数据段中。与其对应的三种操作数是:或附加数据段中。与其对应的三种操作数是:立即操作数、寄立即操作数、寄存器操作数存器操作数和和存储器操作数存储器操作数。 寻找这些操作数有三种基本寻址方式,寻找这些操作数有三种基本寻址方式,立即寻址方式立即寻址方式、寄寄存器寻址方式存器寻址方式和和存储器寻址方式存储器寻址方式。其中,存储器寻址又包括多。其中,存储器寻址又包括多种寻址方式。下面分别介绍这些寻址方式。种寻址方式。下面分别介绍这些寻址方式。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第8页共页共228页页2022-3-253.2.1 立即寻址方式立即寻址方式 立即寻址方式寻找的操作数
11、紧跟在指令操作码之后立即寻址方式寻找的操作数紧跟在指令操作码之后。这种这种寻址方式在汇编语言格式中表示为:寻址方式在汇编语言格式中表示为: 操作码操作码 数字表达式数字表达式 其中,这个数字表达式的值可以是一个其中,这个数字表达式的值可以是一个8位整数,也可以是位整数,也可以是一个一个16位整数位整数,这种寻址方式主要用于给寄存器、存储单元赋这种寻址方式主要用于给寄存器、存储单元赋初值。初值。【例例3-1】MOV AX,267;常数常数MOV AL,10010011B AND 0FEH ;表达式;表达式MOV AL,PORT1 ;变量名变量名MOV AX,DATA1;段地址段地址第第3章章 指
12、令系统和寻址方式指令系统和寻址方式 第第3章第章第9页共页共228页页2022-3-25 【例例3-2】 MOV AL,0FFH 操作的示意图如图操作的示意图如图3.2所示所示。 【例例3-3】MOV AX,1234H 操作的示意图如图操作的示意图如图3.3所示所示。OP0FFH代码段AL图图3.2 8位立即寻址操作示意图位立即寻址操作示意图OP34H代码段AX12H图图3.3 16位立即寻址操作示意图位立即寻址操作示意图注意注意:这种寻址方式不能用于单操作数指令。若用于双操作数:这种寻址方式不能用于单操作数指令。若用于双操作数指令,也只能用于源操作数字段,不能用于目的操作数字段。指令,也只能
13、用于源操作数字段,不能用于目的操作数字段。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第10页共页共228页页2022-3-253.2.2 寄存器寻址方式寄存器寻址方式 寄存器寻址是指寻找的操作数在某个寄存器中寄存器寻址是指寻找的操作数在某个寄存器中。这种寻址。这种寻址方式在汇编语言格式中表示为:方式在汇编语言格式中表示为: 操作码操作码 寄存器名寄存器名比如比如AL,BX,CX,DS、IP等等。等等。 【例例3-4】MOV AX,BX MOV AL,BL其中其中AX,BX是是16位寄存器寻址方式;位寄存器寻址方式;AL,BL是是8位寄存器寻位寄存器寻址方式。址方式。第第3章
14、章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第11页共页共228页页2022-3-25 这种寻址方式的这种寻址方式的优点优点是:寄存器数量一般在几个到几十个,是:寄存器数量一般在几个到几十个,比存储器单元少很多,因此它的地址码短,从而缩短了指令长比存储器单元少很多,因此它的地址码短,从而缩短了指令长度,节省了程序存储空间;另一方面,从寄存器里取数比从存度,节省了程序存储空间;另一方面,从寄存器里取数比从存储器里取数的速度快得多,从而提高了指令执行速度。储器里取数的速度快得多,从而提高了指令执行速度。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第12页共页共228页页
15、2022-3-253.2.3 存储器寻址方式存储器寻址方式 当操作数放在存储器中的某个单元时,当操作数放在存储器中的某个单元时,CPU要访问存储器要访问存储器才能获得该操作数。如果存储器的存储单元地址是才能获得该操作数。如果存储器的存储单元地址是20位,把通位,把通过各种方法算出过各种方法算出段内偏移地址段内偏移地址( (有效地址有效地址) ),结合段地址形成,结合段地址形成20位物理地址找到操作数的方法,统称为存储器寻址方式。位物理地址找到操作数的方法,统称为存储器寻址方式。 1. 直接寻址方式直接寻址方式 直接寻址方式是指寻找的操作数的地址在指令中直接给出。直接寻址方式是指寻找的操作数的地
16、址在指令中直接给出。这种寻址方式在汇编格式中表示为这种寻址方式在汇编格式中表示为 操作码操作码 地址表达式地址表达式 ( (或或 地址表达式地址表达式) 操作码操作码 数字表达式数字表达式 第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第13页共页共228页页2022-3-25 【例例3-5】 假设假设TABLE是在数据段定义的一个字节数组的是在数据段定义的一个字节数组的首地址标号首地址标号(变量名变量名),其偏移地址为,其偏移地址为1000H,则指令则指令MOV AL,TABLE 或或 MOV AL,TABLE+2或或MOV AL,TABLE 或或 MOV AL,TABLE+
17、2或或MOV AL,1000H 或或 MOV AL,1000H+2是等效的。其中是等效的。其中TABLE、TABLE、1000H、TABLE+2、TABLE+2和和1000H+2都是直接寻址方式。都是直接寻址方式。思考:思考:MOV AX, 1000H 与与 MOV AX, 1000H的区别?的区别? 假设假设1000H单元内容为单元内容为25H, 1001H单元内容为单元内容为89H,则上面两条指令执行后则上面两条指令执行后AX的内容分别为什么?的内容分别为什么?第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第14页共页共228页页2022-3-25 【例例3-6】 MOV
18、AX,1000H 如果如果(DS)=3000H,(31000H)=12H,(31001H)=34H,则指,则指令执行完以后,令执行完以后,(AX)=3412H。 直接寻址方式默认的段寄存器是直接寻址方式默认的段寄存器是DS。IBM-PC机允许在汇机允许在汇编指令中指定除编指令中指定除DS寄存器以外的段寄存器作为操作数的段地址,寄存器以外的段寄存器作为操作数的段地址,这就是这就是段超越前缀段超越前缀,其其汇编格式汇编格式为:为: 段寄存器名:地址表达式段寄存器名:地址表达式 或:段寄存器名:数字表达式或:段寄存器名:数字表达式或或 段寄存器名:段寄存器名: 地址表达式地址表达式 或:段寄存器名:
19、或:段寄存器名: 数字表达式数字表达式 第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第15页共页共228页页2022-3-25 【例例3-7】 假设假设TABLE是在附加数据段定义的一个字节数是在附加数据段定义的一个字节数组的首地址标号,其偏移地址为组的首地址标号,其偏移地址为1000H,则指令,则指令MOV AL,ES:TABLE 或或MOV AL,ES:TABLE 或或MOV AL,ES:1000H或或MOV AL,ES:1000H 是等效的,都表示将存放在附加段的字节数组的第一个数组元是等效的,都表示将存放在附加段的字节数组的第一个数组元素送入素送入AL寄存器中。寄存器
20、中。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第16页共页共228页页2022-3-25 2. 寄存器间接寻址方式寄存器间接寻址方式 在计算机中通常将在计算机中通常将BX、BP称为称为基址寄存器基址寄存器,SI、DI称为称为变址寄存器变址寄存器,寻址时操作数的地址被放在这些寄存器中。,寻址时操作数的地址被放在这些寄存器中。 寄存器间接寻址方式在汇编格式中表示为:寄存器间接寻址方式在汇编格式中表示为: 基址寄存器名或变址寄存器名基址寄存器名或变址寄存器名 【例例3-8】MOV AX,BXMOV AX,SI MOV DI, BX其中,其中,BX、SI、DI都是寄存器间接寻址方式
21、。都是寄存器间接寻址方式。注意:寄存器寻址和寄存器间接寻址的区别:注意:寄存器寻址和寄存器间接寻址的区别: MOV AX, BX MOV AX, BX ,假设假设(BX)=1000H, 则这两条指令则这两条指令执行后的结果?执行后的结果?1000H1234第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第17页共页共228页页2022-3-25 如果指令中指定的寄存器是如果指令中指定的寄存器是BX、SI、DI,则操作数,则操作数默认在数据段中,取默认在数据段中,取DS寄存器的值作为操作数的段地址值;寄存器的值作为操作数的段地址值;如果指令中指定的寄存器是如果指令中指定的寄存器是B
22、P,则操作数默认在堆栈段中,则操作数默认在堆栈段中,取取SS寄存器的值作为操作数的段地址值,从而算得操作数寄存器的值作为操作数的段地址值,从而算得操作数的的20位物理地址,继而访问到操作数。位物理地址,继而访问到操作数。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第18页共页共228页页2022-3-25 【例例3-9】 MOV AX,BX 如果如果(DS)=3000H,(BX)=1010H,(31010H)=12H,(31011H)=24H,则操作数的则操作数的20位物理地址为:位物理地址为:30000H+1010H=31010H。操作的示意图如图操作的示意图如图3.4所示
23、。所示。12H存储器存储器30000H24H数据段数据段31010HAX图图3.4 寄存器间接寻址操作图寄存器间接寻址操作图 指令执行完以后,指令执行完以后,(AX)=2412H。 1224第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第19页共页共228页页2022-3-25 这种寻址方式也允许指定段超越前缀来取得其他段中的数这种寻址方式也允许指定段超越前缀来取得其他段中的数据。据。 【例例3-10】 MOV AX,ES:BX 它表示将附加数据段偏移量它表示将附加数据段偏移量(BX)处的字数据送到处的字数据送到AX寄存寄存器中去。器中去。 寄存器间接寻址方式一般用于访问表格,
24、执行完一条寄存器间接寻址方式一般用于访问表格,执行完一条指令后,通过修改指令后,通过修改SI、DI、BX或或BP的内容就可访问到表格的内容就可访问到表格的下一数据项的存储单元。的下一数据项的存储单元。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第20页共页共228页页2022-3-25 3. 寄存器相对寻址寄存器相对寻址 操作数的偏移地址是指定寄存器的值与一个整数之和。这操作数的偏移地址是指定寄存器的值与一个整数之和。这种寻址方式的汇编格式为:种寻址方式的汇编格式为: 变量名变量名 基址寄存器名或变址寄存器名基址寄存器名或变址寄存器名 或或 变量名变量名+ +基址寄存器名或变
25、址寄存器名基址寄存器名或变址寄存器名 符号名符号名 基址寄存器名或变址寄存器名基址寄存器名或变址寄存器名 或或 基址寄存器名或变址寄存器名基址寄存器名或变址寄存器名+ +符号名符号名 基址寄存器名或变址寄存器名基址寄存器名或变址寄存器名数字表达式数字表达式 第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第21页共页共228页页2022-3-25 【例例3-11】 TABLE是在数据段定义的一个字节数组的首地是在数据段定义的一个字节数组的首地址标号址标号(也称变量名也称变量名),则有如下程序:,则有如下程序: MOV SI,5 MOV AL,TABLESI ;可以写为:可以写为:
26、MOV AL,TABLE+SI ABC EQU 5 LEA SI,TABLE ;LEA是取偏址指令,本句是把是取偏址指令,本句是把TABLE偏址偏址SI MOV AL,ABCSI ;可以写为:可以写为:MOV AL,ABC+SI如:如:BX+6、BP-100H、SI+OFFSET TABLE都是寄存器相对都是寄存器相对寻址方式。寻址方式。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第22页共页共228页页2022-3-25 如果指令中指定的寄存器是如果指令中指定的寄存器是BX、SI、DI,则操作数默认,则操作数默认在数据段中,取在数据段中,取DS寄存器的值作为操作数的段地址值
27、;如果寄存器的值作为操作数的段地址值;如果指令中指定的寄存器是指令中指定的寄存器是BP,则操作数默认在堆栈段中,取,则操作数默认在堆栈段中,取SS寄存器的值作为操作数的段地址值,从而算得操作数的寄存器的值作为操作数的段地址值,从而算得操作数的20位位物理地址,继而访问到操作数。物理地址,继而访问到操作数。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第23页共页共228页页2022-3-25 【例例3-12】 TABLE是数据段中定义的一个变量,假设它在是数据段中定义的一个变量,假设它在数据段中的偏移地址为数据段中的偏移地址为0100H,有指令:,有指令:MOV AX,TABL
28、ESI 若若(DS)=2000H,(SI)=00A0H,(201A0H)=12H,(201A1H)=34H,则源操作数则源操作数20位物理地址位物理地址=20000H+0100H+00A0H=20000H+01A0H=201A0H。 当然,也可用段超越前缀重新指定段寄存器,例如:当然,也可用段超越前缀重新指定段寄存器,例如:MOV AL,ES:TABLESI 20000 0100 + 00A0 201A0H 这种寻址方式一般用于访问表格,表格首地址可设置为变量这种寻址方式一般用于访问表格,表格首地址可设置为变量名,通过修改名,通过修改SI、DI、BX或或BP的内容来访问表格的任一数据项的内容来
29、访问表格的任一数据项的存储单元。的存储单元。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第24页共页共228页页2022-3-254. 基址变址寻址基址变址寻址 操作数的偏移地址是两个指定寄存器的值之和。这种寻址操作数的偏移地址是两个指定寄存器的值之和。这种寻址方式在汇编格式中表示为:方式在汇编格式中表示为: 基址寄存器名基址寄存器名变址寄存器名变址寄存器名 或或 基址寄存器名基址寄存器名+ +变址寄存器名变址寄存器名 【例例3-13】MOV AX,BX SI 或写或写为为 MOV AX,BX+SI其中,其中,BXSI、BX+SI都是基址变址寻址方式。都是基址变址寻址方式。
30、当机器执行含有这种寻址方式的指令时,依据地址码字段当机器执行含有这种寻址方式的指令时,依据地址码字段的值访问得到基址寄存器和变址寄存器的值,将其相加,和作的值访问得到基址寄存器和变址寄存器的值,将其相加,和作为操作数的偏移地址。为操作数的偏移地址。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第25页共页共228页页2022-3-25 【例例3-14】 MOV AX,BX SI 若:若:(DS)=2000H,(BX)=0500H,(SI)=0010H 则:则: 偏移地址偏移地址=0500H+0010H=0510H 20位物理地址位物理地址=20000H+0510H=20510H
31、如如(20510H)=12H,(20511H)=34H,操作的示意图如图,操作的示意图如图3.5 所示。所示。12H存储器20000H34H数据段20510HAX代码段图图3.5 基址变址寻址操作示意图基址变址寻址操作示意图1234第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第26页共页共228页页2022-3-25 当然也可用段超越前缀重新指定段寄存器,例如:当然也可用段超越前缀重新指定段寄存器,例如:MOV AL,ES:BXSI 这种寻址方式同样用于访问表格或数组。将表格或数组这种寻址方式同样用于访问表格或数组。将表格或数组首地址存入基址寄存器,通过修改变址寄存器内容可访
32、问到表首地址存入基址寄存器,通过修改变址寄存器内容可访问到表格或数组的任一数据项的存储单元。由于这种寻址方式两个寄格或数组的任一数据项的存储单元。由于这种寻址方式两个寄存器内容都可修改,因此它比寄存器相对寻址更灵活。存器内容都可修改,因此它比寄存器相对寻址更灵活。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第27页共页共228页页2022-3-25 5. 相对基址变址寻址相对基址变址寻址 操作数偏移地址是指定寄存器的值与相对偏移量之和。操作数偏移地址是指定寄存器的值与相对偏移量之和。这这种寻址方式在汇编中表示为种寻址方式在汇编中表示为: : 变量名变量名 基址寄存器名基址寄存
33、器名变址寄存器名变址寄存器名 或或变量名变量名 基址寄存器名基址寄存器名+ +变址寄存器名变址寄存器名 或或 变量名变量名+ +基址寄存器名基址寄存器名+ +变址寄存器名变址寄存器名 符号名符号名 基址寄存器名基址寄存器名变址寄存器名变址寄存器名 或或符号名符号名 基址寄存器名基址寄存器名+ +变址寄存器名变址寄存器名 或或 符号名符号名+ +基址寄存器名基址寄存器名+ +变址寄存器名变址寄存器名 基址寄存器名基址寄存器名+ +变址寄存器名变址寄存器名数字表达式数字表达式 第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第28页共页共228页页2022-3-25 【例例3-15】
34、 MOV AL,TABLEBXSI其中其中“TABLE BXSI”是相对基址变址寻址方式,也可写成:是相对基址变址寻址方式,也可写成:MOV AL,TABLEBX+SI或或MOV AL,TABLE+BX+SI 如果指令中指定的基址寄存器是如果指令中指定的基址寄存器是BX,则操作数默认,则操作数默认在数据段中,取在数据段中,取DS寄存器的值作为操作数的段地址值;寄存器的值作为操作数的段地址值; 如果指令中指定的基址寄存器是如果指令中指定的基址寄存器是BP,则操作数默认在堆,则操作数默认在堆栈段中,取栈段中,取SS寄存器的值作为操作数的段地址值,从而寄存器的值作为操作数的段地址值,从而算得操作数的
35、算得操作数的20位物理地址,访问到操作数。位物理地址,访问到操作数。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第29页共页共228页页2022-3-25 【例例3-16】 TABLE是数据段中定义的一个符号地址,假设是数据段中定义的一个符号地址,假设它在数据段中的偏移地址是它在数据段中的偏移地址是1000H。 MOV AX,TABLEBXDI若:若:(DS)=2000H,(BX)=0100H,(DI)=0020H则:偏移地址则:偏移地址=1000H+0100H+0020H=1120H 20位物理地址位物理地址=20000H+1120H=21120H 12H34存储器存储器A
36、X34H1210H00HOP代码段代码段偏移量偏移量 TABLE数据段数据段21120H20000HOP执行完指令以后,执行完指令以后,(AX)=3412H。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第30页共页共228页页2022-3-25第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第31页共页共228页页2022-3-253.3 8088/8086 CPU的指令系统的指令系统3.3.1数据传送指令数据传送指令 8086/8088有四类传送指令,分别是:通用传送指令、累加有四类传送指令,分别是:通用传送指令、累加器专用传送指令、地址传送指令和标志传送指令
37、。器专用传送指令、地址传送指令和标志传送指令。 1. 通用传送指令通用传送指令表表3-1 通用传送指令通用传送指令操作码操作码MOVPUSHPOPPUSHFPOPFXCHG操作功操作功能能通用传通用传送送入栈入栈出栈出栈标志压栈标志压栈标志出栈标志出栈交换交换 8086指令系统按功能可分为指令系统按功能可分为6 6类:数据传送类、算术运算类:数据传送类、算术运算类、逻辑运算类、串操作类、程序控制类、处理机控制类。类、逻辑运算类、串操作类、程序控制类、处理机控制类。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第32页共页共228页页2022-3-25 1) 通用传送指令通用传送
38、指令MOV 可实现寄存器之间、寄存器和存储器之间传送数据,还可可实现寄存器之间、寄存器和存储器之间传送数据,还可实现将立即数送至寄存器或存储单元的操作。实现将立即数送至寄存器或存储单元的操作。 汇编格式:汇编格式:MOV 目的操作数,源操作数目的操作数,源操作数 执行的操作:执行的操作:( (目的操作数目的操作数)源操作数源操作数 功能:将源操作数存入目的操作数的寄存器或存储单元中去。功能:将源操作数存入目的操作数的寄存器或存储单元中去。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第33页共页共228页页2022-3-25 注意:注意: 目的操作数不能是立即寻址方式。目的操作
39、数不能是立即寻址方式。 源操作数与目的操作数不能同时为存储器寻址方式,即源操作数与目的操作数不能同时为存储器寻址方式,即两个内存单元之间不能直接传送数据。两个内存单元之间不能直接传送数据。 立即数不能直接送段寄存器,即段寄存器只能通过寄存立即数不能直接送段寄存器,即段寄存器只能通过寄存器或存储单元传送数据。器或存储单元传送数据。 两个段寄存器之间不允许直接传送数据。两个段寄存器之间不允许直接传送数据。 不允许给不允许给CS、IP、FLAG三个寄存器传送数据,即这三个寄存器传送数据,即这3个个寄存器的值用户无权改变。寄存器的值用户无权改变。 源操作数和目的操作数必须字长相等源操作数和目的操作数必
40、须字长相等。 MOV指令不影响标志位。指令不影响标志位。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第34页共页共228页页2022-3-25【例例3-17】DATA是用户定义的一个数据段的段名。则:是用户定义的一个数据段的段名。则:MOV AX,DATAMOV DS,AX两条指令完成对两条指令完成对DS段寄存器的赋值。若写成:段寄存器的赋值。若写成: MOV DS,DATA 则是错误的。则是错误的。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第35页共页共228页页2022-3-25 如果把如果把CPU内部的寄存器细分为段寄存器和寄存器的话,则内部的寄存器
41、细分为段寄存器和寄存器的话,则MOV指令指令有九种形式:有九种形式: 从寄存器到寄存器;从寄存器到寄存器; MOV AX, BX 从寄存器到段寄存器;从寄存器到段寄存器; MOV DS, AX 从寄存器到存储器;从寄存器到存储器; MOV SI, AX 从段寄存器到寄存器;从段寄存器到寄存器; MOV BX, DS 从存储器到寄存器;从存储器到寄存器; MOV CX, BUFFDI 从段寄存器到存储器;从段寄存器到存储器; MOV BXSI, ES 从存储器到段寄存器;从存储器到段寄存器; MOV SS, SI, 从立即数到寄存器;从立即数到寄存器; MOV CL, 64H 从立即数到存储器。
42、从立即数到存储器。 MOV TABLEBXSI, 7856HCSDS、SS、ES通用寄存器AX、BX、CX、DX、SI、DI、BP、SP立即数存储器数图图3.7 MOV指令的九种形式指令的九种形式第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第36页共页共228页页2022-3-25 2) 进栈指令进栈指令PUSH及出栈指令及出栈指令POP 堆栈是由若干个连续存储单元组成的堆栈是由若干个连续存储单元组成的“后进先出后进先出”或或“先进先进后出后出”存储区域,存储区域,它的段地址存于它的段地址存于SS寄存器中,它只有一个数寄存器中,它只有一个数据出入口,堆栈指针寄存器据出入口,堆
43、栈指针寄存器SP任何时候都指向当前的栈顶,入任何时候都指向当前的栈顶,入栈出栈都必须通过栈出栈都必须通过SP来确定。如果有数据来确定。如果有数据PUSH压入或压入或POP弹弹出,出,SP必须及时修改,以保证必须及时修改,以保证(SP)始终指向当前的栈顶位置。始终指向当前的栈顶位置。 在子程序调用和中断处理过程中,分别需要保存返回地址在子程序调用和中断处理过程中,分别需要保存返回地址和断点地址,即将当前和断点地址,即将当前CS和和IP的值压栈;在进入子程序和中断的值压栈;在进入子程序和中断处理后,还需要保存通用寄存器的值;子程序和中断处理程序处理后,还需要保存通用寄存器的值;子程序和中断处理程序
44、将要返回时,则要恢复通用寄存器的值;子程序和中断处理程将要返回时,则要恢复通用寄存器的值;子程序和中断处理程序返回时,要将返回地址或断点地址出栈。这些功能都要通过序返回时,要将返回地址或断点地址出栈。这些功能都要通过堆栈指令来实现。堆栈指令来实现。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第37页共页共228页页2022-3-25SSSPSP 56 784512SPPUSH AXPUSH BXPOP BXPOP AX123456789101012345678912121212310123456789SP第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第38页共
45、页共228页页2022-3-25 PUSH指令指令汇编格式:汇编格式:PUSH源操作数源操作数执行的操作:执行的操作:(SP)(SP)2 先修改指针先修改指针 (SP)+1,(SP)操作数操作数功能:将功能:将16位寄存器、段寄存器、位寄存器、段寄存器、16位存储单元数据压入堆栈。位存储单元数据压入堆栈。 POP指令指令汇编格式:汇编格式:POP目的操作数目的操作数执行操作:执行操作:(操作数操作数)(SP)+1,(SP) (SP)(SP)+2 后修改指针后修改指针第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第39页共页共228页页2022-3-25 功能:将堆栈中的功能:将
46、堆栈中的16位数据送入位数据送入16位寄存器、段寄存器、位寄存器、段寄存器、16位存储单元中。位存储单元中。 说明:说明: 在在8086/8088中,中,PUSH、POP指令的操作数不能使用指令的操作数不能使用立即寻址方式。立即寻址方式。POP指令的操作数还不能使用指令的操作数还不能使用CS寄存器。寄存器。 PUSH 1234H POP CS 均是错误的指令均是错误的指令 堆栈中数据的压入、弹出必须以字为单位,所以堆栈中数据的压入、弹出必须以字为单位,所以PUSH和和POP指令只能作字操作。指令只能作字操作。 PUSH AL PUSH DL POP CL POP BH 均是错误指令均是错误指令
47、 这两条堆栈指令不影响标志位。这两条堆栈指令不影响标志位。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第40页共页共228页页2022-3-25 【例例3-18】 MOV AX,1234H PUSH AX 设执行前设执行前(SS)=2000H, (SP)=00FEH,指令执行过程如图,指令执行过程如图3.8所示,执行后所示,执行后(SS)=2000H, (SP)=00FCH。图图3.8 压栈操作示意图压栈操作示意图(a) 指令执行前情况指令执行前情况;(b) 指令执行后情况指令执行后情况2000:0000H2000:0001H2000:00FEH2000:00FFH(SP)(
48、a)2000:0000H2000:0001H2000:00FCH2000:00FDH(SP)(b)34H12H2000:00FEH2000:00FFH第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第41页共页共228页页2022-3-253) PUSHF指令指令汇编格式:汇编格式:PUSHF执行的操作:执行的操作:(SP)(SP)2(SP)+1,(SP)FLAGS功能:将标志寄存器内容压入堆栈。功能:将标志寄存器内容压入堆栈。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第42页共页共228页页2022-3-254) POPF指令指令汇编格式:汇编格式:POPF
49、执行的操作:执行的操作:(FLAGS)(SP)+1,(SP) (SP)(SP)+2 功能:将功能:将16位堆栈数据弹出送入标志寄存器中。位堆栈数据弹出送入标志寄存器中。 说明:说明:8086/8088指令系统中没有设置改变指令系统中没有设置改变TF标志位的指令。标志位的指令。若要改变若要改变TF值,先用值,先用PUSHF指令将标志压栈,然后设法改变对指令将标志压栈,然后设法改变对应应TF标志位的位值,再用标志位的位值,再用POPF指令弹出送给指令弹出送给FLAGS,即可完,即可完成改变成改变FLAG中中TF标志位的值。标志位的值。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第
50、43页共页共228页页2022-3-25PUSHFPOP AXOR AH,01H ;修改修改TF位位PUSH AXPOPF思考题:若想设置思考题:若想设置TF=0,程序如何设计?,程序如何设计?D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0 OFDFIFTFSFZF AF PF CFAND AH, 0FEH【例例3-19】 若想设置若想设置TF=1,程序段如下:,程序段如下:第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第44页共页共228页页2022-3-25 5) XCHG指令指令 互换指令互换指令XCHG可以实现字互换或字节互换。互换可以在可
51、以实现字互换或字节互换。互换可以在寄存器之间进行,也可以在寄存器和存储单元之间进行。寄存器之间进行,也可以在寄存器和存储单元之间进行。 汇编格式:汇编格式:XCHG 目的操作数,源操作数目的操作数,源操作数 执行的操作:互换源、目的两个操作数的存放位置。执行的操作:互换源、目的两个操作数的存放位置。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第45页共页共228页页2022-3-25 说明:说明: 源、目的操作数的寻址方式不允许是立即寻址方式。源、目的操作数的寻址方式不允许是立即寻址方式。 两个寻址方式中,必须有一个是寄存器寻址,即两个两个寻址方式中,必须有一个是寄存器寻址,
52、即两个存储单元之间不能直接互换数据。存储单元之间不能直接互换数据。 所有的段寄存器以及所有的段寄存器以及IP寄存器不允许使用本条指令与寄存器不允许使用本条指令与其他寄存器互换数据。其他寄存器互换数据。 此指令不影响标志位。此指令不影响标志位。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第46页共页共228页页2022-3-25 【例例3-20】 XCHG BX,BP+SI 指令执行前,指令执行前,(BX)=1234H,(BP)=0100H,(SI)=0020H,(SS)=1F00H,(1F120H)=5678H,则则 源操作数物理地址源操作数物理地址=1F00H10H+010
53、0H+0020H =1F00H10H+0120H=1F120H 1F120H1F121H12 34BX指令执行后:指令执行后:(BX)=5678H,(1F120H)=1234H34781256比较比较 MOV BX, BPSI执行后,执行后,BX寄存器的内容是什么?寄存器的内容是什么?或者或者 MOV BPSI,BX 第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第47页共页共228页页2022-3-25 2. 累加器专用传送指令累加器专用传送指令 这类指令都仅限于这类指令都仅限于I/O端口或存储单元与累加器端口或存储单元与累加器AL(AX)之间传送数据。具体包括之间传送数据。
54、具体包括IN输入指令、输入指令、OUT输出指令和输出指令和XLAT换码指令。换码指令。 1) IN输入指令输入指令 汇编格式:汇编格式:IN AL,I/O口地址表达式口地址表达式 或或 IN AX,I/O口地址表达式口地址表达式 执行的操作:执行的操作: AL(I/O口地址表达式口地址表达式) 或或 AX(I/O口地址表达式口地址表达式+1),(I/O口地址表达式口地址表达式) 例如例如: IN AL, 21H IN AL, DXMOV AL, 21H 区别区别MOV AL, DX 类型不匹配类型不匹配第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第48页共页共228页页202
55、2-3-25 说明:说明: 该指令的目的操作数仅限于累加器,即该指令的目的操作数仅限于累加器,即8位操作采用位操作采用AL,16位操作采用位操作采用AX,不能由其他任何寄存器代替。,不能由其他任何寄存器代替。 如果如果I/O寻址的口地址号在寻址的口地址号在8位以内,可以用直接寻址方位以内,可以用直接寻址方式,地址表达式则由一个式,地址表达式则由一个8位立即数表示;如果位立即数表示;如果I/O寻址的口地寻址的口地址号在址号在16位以内,可以用寄存器间接寻址方式,所寻址的地址位以内,可以用寄存器间接寻址方式,所寻址的地址口号则装入口号则装入DX,间接寻址仅可以使用间接寻址仅可以使用DX。例如例如:
56、 MOV DX, 256H; IN AL, DX;IN AL,256H第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第49页共页共228页页2022-3-252) OUT输出指令输出指令 汇编格式:汇编格式:OUT 地址表达式,地址表达式,AL或或OUT 地址表达式,地址表达式,AX 执行的操作:执行的操作:I/O口地址口地址(AL)或或 (I/O口地址口地址+1),(I/O口地址口地址)(AX) 说明:同说明:同1)。例如例如: OUT 60H, AX OUT DX, ALMOV 60H,AX ?MOV DX, AL ?第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3
57、章第章第50页共页共228页页2022-3-25 3) XLAT换码指令换码指令汇编格式:汇编格式:XLAT 或或XLAT 地址标号地址标号执行的操作:执行的操作:(AL)(BX)+(AL) XLAT指令是将指令是将AL的内容替换成存储单元中的一个数,的内容替换成存储单元中的一个数,建立表格往往用于代码转换,例如,把数字和字符转换成建立表格往往用于代码转换,例如,把数字和字符转换成ASCII码或者把十六进制数码或者把十六进制数0F转换成七段数码管显示代码,转换成七段数码管显示代码,平方、立方表等。平方、立方表等。 使用此指令前,利用存储地址的连续性和规律性先在数据使用此指令前,利用存储地址的连
58、续性和规律性先在数据段建立一个表格,表格首地址存入段建立一个表格,表格首地址存入BX寄存器,欲取代码的表寄存器,欲取代码的表内位移量存入内位移量存入AL寄存器中。寄存器中。 XLAT指令将指令将(AL)值扩展成值扩展成16位,与位,与(BX)相加形成一个段相加形成一个段内偏移地址,段地址取内偏移地址,段地址取(DS),据此读出代码送入,据此读出代码送入AL寄存器。寄存器。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第51页共页共228页页2022-3-25 该指令有两种格式,第二种格式中的地址标号是指代码该指令有两种格式,第二种格式中的地址标号是指代码表的表首地址。它只是为提
59、高程序可读性而设置的,指令执行表的表首地址。它只是为提高程序可读性而设置的,指令执行时只使用预先存入时只使用预先存入BX中的代码表首地址,而并不用汇编格式中中的代码表首地址,而并不用汇编格式中指定的地址标号。指定的地址标号。 (AL)是一个是一个8位无符号数位无符号数,所以表格中最多只能存放,所以表格中最多只能存放 256个代码。个代码。 此指令的执行结果不影响标志位。此指令的执行结果不影响标志位。第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第52页共页共228页页2022-3-25 【例例3-21】 一个七段一个七段LED显示显示代码转换表存于代码转换表存于TABLE开始的
60、存储开始的存储区,则区,则:MOVAL,5MOVBX,OFFSET TABLEXLAT adgbcef g f e d c b ad6 d5 d4 d3 d2 d1 d0 3F065B4F666D7D03TABLE01234567共阴极数码管显示原理及字型表共阴极数码管显示原理及字型表1 1 0 1 1 0 1 完成了将完成了将 5 的的BCD码转换成七段码转换成七段LED显显示代码的工作。示代码的工作。AL6D=6DH第第3章章 指令系统和寻址方式指令系统和寻址方式 第第3章第章第53页共页共228页页2022-3-25 3. 地址传送指令地址传送指令 这组指令都是将地址送到指定的寄存器中,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论