《IBMPC汇编程序设计第3章.ppt》由会员分享,可在线阅读,更多相关《IBMPC汇编程序设计第3章.ppt(146页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、IBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院第第3章章80 x86指令系统和寻址方式指令系统和寻址方式教学要求:教学要求:1.掌握指令系统的基本概念:指令格式、寻址方掌握指令系统的基本概念:指令格式、寻址方式、指令类型;掌握式、指令类型;掌握8086/8088指令系统中,各指指令系统中,各指令的格式、功能和注意事项。令的格式、功能和注意事项。2.了解其他的寻址方式和指令类型。了解其他的寻址方式和指令类型。IBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院相关概念相关概念一、什么是指令系统?一、什么是指令系统?计算机的
2、指令系统就是指该计算机能够执行的计算机的指令系统就是指该计算机能够执行的全部指令的集合。全部指令的集合。每种计算机都有它支持的指令集合。每种计算机都有它支持的指令集合。16位位8086指令系统是整个指令系统是整个Intel80 x86系列微处系列微处理器指令系统的基础。理器指令系统的基础。IBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院二、指令格式二、指令格式二、指令格式二、指令格式指令由操作码和操作数两部分组成。指令由操作码和操作数两部分组成。操作码操作码操作码操作码说明计算机要执行哪种操作,如传送、运算、说明计算机要执行哪种操作,如传送、运算、移位、跳
3、转等操作,它是指令中不可缺少的组成部分。移位、跳转等操作,它是指令中不可缺少的组成部分。操作数操作数操作数操作数是指令执行的参与者,即各种操作的对象。是指令执行的参与者,即各种操作的对象。有些指令不需要操作数,通常的指令都有一个或两个有些指令不需要操作数,通常的指令都有一个或两个操作数,也有个别指令有操作数,也有个别指令有3个甚至个甚至4个操作数,通常成为一个操作数,通常成为一地址指令、二地址指令、三地址指令、二地址指令、三操作码操作码操作数操作数 操作数操作数IBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院三、学习指令的注意事项三、学习指令的注意事项 指
4、令的功能指令的功能指令的功能指令的功能该指令能够实现何种操作。通常指令助该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或其缩写形式。记符就是指令功能的英文单词或其缩写形式。指令支持的寻址方式指令支持的寻址方式指令支持的寻址方式指令支持的寻址方式该指令中的操作数可以采用何该指令中的操作数可以采用何种寻址方式。种寻址方式。指令对标志的影响指令对标志的影响指令对标志的影响指令对标志的影响该指令执行后是否对各个标志位该指令执行后是否对各个标志位有影响,以及如何影响。有影响,以及如何影响。其他方面其他方面其他方面其他方面该指令其他需要特别注意的地方,如指令该指令其他需要特别注意的地方,如指
5、令执行时的约定设置、执行时的约定设置、必须预置的参数、隐含使用的寄存器必须预置的参数、隐含使用的寄存器必须预置的参数、隐含使用的寄存器必须预置的参数、隐含使用的寄存器等。等。IBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院3.180 x86寻址方式寻址方式寻址、寻址方式的概念寻址、寻址方式的概念指令中操作数字段实质上是指出操作数存放于何处。一指令中操作数字段实质上是指出操作数存放于何处。一般来说,般来说,操作数可以跟随在指令操作码之后操作数可以跟随在指令操作码之后操作数可以跟随在指令操作码之后操作数可以跟随在指令操作码之后,称为,称为立即数立即数;操作数也
6、可以存放在操作数也可以存放在操作数也可以存放在操作数也可以存放在CPUCPU内部的寄存器中内部的寄存器中内部的寄存器中内部的寄存器中,称为,称为寄存器操作寄存器操作数数。绝大多数的操作数存放在内存储器中绝大多数的操作数存放在内存储器中绝大多数的操作数存放在内存储器中绝大多数的操作数存放在内存储器中,称为,称为存储器操作存储器操作数数。指令指定操作数的位置,即给出地址信息,在执行时需。指令指定操作数的位置,即给出地址信息,在执行时需要根据这个地址信息找到需要的操作数。这种要根据这个地址信息找到需要的操作数。这种寻找操作数的寻找操作数的寻找操作数的寻找操作数的过程过程过程过程称为称为寻址寻址,而寻
7、找操作数的方法称为,而寻找操作数的方法称为寻址方式寻址方式。IBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院指令的助记符格式:指令的助记符格式:指令助忆符指令助忆符操作数操作数1,操作数操作数2,操作数操作数3;注释注释指令助忆符体现该指令的功能,它指令助忆符体现该指令的功能,它对应一条二进制编码的机器对应一条二进制编码的机器对应一条二进制编码的机器对应一条二进制编码的机器指令指令指令指令。指令的操作数个数由该指令确定,。指令的操作数个数由该指令确定,可以没有操作数,也可以可以没有操作数,也可以可以没有操作数,也可以可以没有操作数,也可以有一个、二个或三个
8、操作数。有一个、二个或三个操作数。有一个、二个或三个操作数。有一个、二个或三个操作数。绝大多数指令的操作数要显式的写出绝大多数指令的操作数要显式的写出来,但也有指令的操作数是隐含的,不需要在指令中写出。来,但也有指令的操作数是隐含的,不需要在指令中写出。注:注:当指令含有操作数,则在书写时必须遵守:当指令含有操作数,则在书写时必须遵守:v指令助记符和操作数之间要有分隔符,分隔符可以是若干个空格指令助记符和操作数之间要有分隔符,分隔符可以是若干个空格指令助记符和操作数之间要有分隔符,分隔符可以是若干个空格指令助记符和操作数之间要有分隔符,分隔符可以是若干个空格或或或或TABTAB键;键;键;键;
9、v如果指令含有多个操作数,那么,操作数之间要用逗号如果指令含有多个操作数,那么,操作数之间要用逗号如果指令含有多个操作数,那么,操作数之间要用逗号如果指令含有多个操作数,那么,操作数之间要用逗号,分开分开分开分开。vv指令后面还可以书写注释内容,不过,要在注释之前书写分号指令后面还可以书写注释内容,不过,要在注释之前书写分号指令后面还可以书写注释内容,不过,要在注释之前书写分号指令后面还可以书写注释内容,不过,要在注释之前书写分号“;”。IBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院3.1.1与数据有关的寻址方式与数据有关的寻址方式以以MOV指令为例:指
10、令为例:立即寻址立即寻址MOVAX,3069H寄存器寻址寄存器寻址MOVAL,BH直接寻址直接寻址MOVAX,2000H寄存器间接寻址寄存器间接寻址MOVAX,BX寄存器相对寻址寄存器相对寻址MOVAX,COUNTSI基址变址寻址基址变址寻址MOVAX,BPDI相对基址变址寻址相对基址变址寻址MOVAX,MASKBXSIIBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院1.立即寻址方式立即寻址方式定定义义:操操作作数数作作为为指指令令的的一一部部分分而而直直接接写写在在指指令令中中,这这种种操操作作数数称称为为立立即即数数,这这种种寻寻址址方方式式也也就就称
11、称为为立立立立即即即即数数数数寻址方式。寻址方式。汇汇编编格格式式:n n(n n为为立立即即操操作作数数,是是用用用用8 8 8 8位位位位或或或或16161616位位位位二二二二进进进进制制制制补码表示的有符号数补码表示的有符号数补码表示的有符号数补码表示的有符号数)功功能能:操操作作数数存存放放在在存存储储器器,指指令令下下一一单单元元的的内内容容为为立立即操作数即操作数n n。图形表示:图形表示:操作数操作数 n指令指令IBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院【例【例3.1】MOVAX,4576H执行后(执行后(AX)=?该该例例中中源源操
12、操作作数数为为立立即即寻寻址址方方式式,立立即即数数为为4576H,存存放放在指令的下一单元。在指令的下一单元。执行:执行:4576HAX执行后:(执行后:(AX)=4576H76HOP45HDSMOVAX,4576H指令的存储形式指令的存储形式4576AXIBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院2.寄存器寻址方式寄存器寻址方式定定义义:指指指指令令令令所所所所要要要要的的的的操操操操作作作作数数数数已已已已存存存存储储储储在在在在某某某某寄寄寄寄存存存存器器器器中中中中,或或或或把把把把目目目目标标标标操操操操作作作作数数数数存存存存入入入入寄寄
13、寄寄存存存存器器器器。把把在在指指令令中中指指出出所所使使用用寄寄存存器器(即即:寄存器的助记符)的寻址方式称为寄存器寻址方式。寄存器的助记符)的寻址方式称为寄存器寻址方式。汇编格式:汇编格式:R R 其中其中R R表示寄存器名。表示寄存器名。功能:功能:操作数直接存放在寄存器操作数直接存放在寄存器R R中。中。图形表示:图形表示:寄存器寄存器 R指令指令操作数操作数寄存器寄存器IBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院指令中可以引用的寄存器及其符号名称如下:指令中可以引用的寄存器及其符号名称如下:8位位寄寄存存器器有有:AHAH、ALAL、BHBH
14、、BLBL、CHCH、CLCL、DHDH和和和和DLDL等;等;16位位寄寄存存器器:AXAX、BXBX、CXCX、DXDX、SISI、DIDI、SPSP、BPBP和和和和段段段段寄存器寄存器寄存器寄存器等;等;v源操作数是寄存器寻址方式源操作数是寄存器寻址方式如:如:ADDVARW,AXMOVVARB,BH等。等。其中:其中:VARW和和VARB是字和字节类型的内存变量。是字和字节类型的内存变量。v目的操作数是寄存器寻址方式目的操作数是寄存器寻址方式如:如:ADDBH,78hADDAX,1234hv源和目的操作数都是寄存器寻址方式源和目的操作数都是寄存器寻址方式如:如:MOVAXAX,BXB
15、XMOVDHDH,BLBL等。等。IBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院注注:由由由由于于于于指指指指令令令令所所所所需需需需的的的的操操操操作作作作数数数数已已已已存存存存储储储储在在在在寄寄寄寄存存存存器器器器中中中中,或或或或操操操操作作作作的的的的结结结结果果果果存存存存入入入入寄寄寄寄存存存存器器器器,这这这这样样样样,在在在在指指指指令令令令执执执执行行行行过过过过程程程程中中中中,会会会会减减减减少少少少读读读读/写写写写存存存存储储储储器器器器单单单单元元元元的的的的次次次次数数数数,所所所所以以以以,使使使使用用用用寄寄寄寄存存
16、存存器器器器寻寻寻寻址址址址方方方方式式式式的的的的指指指指令令令令具具具具有有有有较较较较快快快快的的的的执执执执行行行行速速速速度度度度。通通常常情情况况下下,提提倡倡在在编编写写汇汇汇汇编编语语言言程程序序时时,应应尽尽可可能能地地使使用用寄寄存存器寻址方式,但也不要把它绝对化。器寻址方式,但也不要把它绝对化。IBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院【例【例3.2】下列程序执行后,(】下列程序执行后,(AX)=?,(?,(BX)=?MOVAX,1234HMOVBX,5678HADDAX,BX解解释释:该该程程序序中中MOV指指令令为为数数据据
17、传传送送指指令令操操作作符符,ADD指指令令为为加加法法指指令令操操作作符符,三三条条指指令令皆皆为为双双操操作作数数指指令令。第第一一、二二条条指指令令AX、BX皆皆为为目目的的操操作作数数地地址址,为为寄寄存存器器寻寻址址方方式式。第第三三条条指指令令中中,AX为为目目的的操操作作数数地地址址,BX为为源源操操作作数数地地址址。源地址和目的地址皆为寄存器寻址方式。源地址和目的地址皆为寄存器寻址方式。执行:执行:1234HAX5678HBX(AX)+(BX)AX执行后:(执行后:(AX)=68ACH,(,(BX)=5678HIBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙
18、江财经学院信息学院3.直接寻址方式直接寻址方式定定义义:指指指指令令令令所所所所要要要要的的的的操操操操作作作作数数数数存存存存放放放放在在在在内内内内存存存存中中中中,在在在在指指指指令令令令中中中中直直直直接接接接给给给给出该操作数的有效地址出该操作数的有效地址出该操作数的有效地址出该操作数的有效地址,这种寻址方式为直接寻址方式。,这种寻址方式为直接寻址方式。汇编格式:汇编格式:含有变量的地址表达式含有变量的地址表达式含有变量的地址表达式含有变量的地址表达式。功能:功能:指令下一字单元的内容是操作数的偏移地址指令下一字单元的内容是操作数的偏移地址EA。图形表示:图形表示:EA指令指令操作数
19、操作数存储器存储器段基地址段基地址IBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院【例【例3.3】执行指令:】执行指令:MOVBX,1234H设(设(DS)=2000H。执行后:(执行后:(AX)=?图示:图示:执行:(执行:(21234H)BX执行后:(执行后:(BX)=5312HIBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院 在通常情况下,操作数存放在数据段中,所以,在通常情况下,操作数存放在数据段中,所以,其物理地其物理地其物理地其物理地址将由数据段寄存器址将由数据段寄存器址将由数据段寄存器址将由数据段寄存器D
20、SDSDSDS和指令中给出的有效地址直接形成和指令中给出的有效地址直接形成和指令中给出的有效地址直接形成和指令中给出的有效地址直接形成,但,但如果使用段超越前缀,那么,操作数可存放在其它段。如果使用段超越前缀,那么,操作数可存放在其它段。例如:例如:MOVMOVESES:1000H:1000H,AX AX 注意:注意:立即寻址方式和直接寻址方式的书写格式不同立即寻址方式和直接寻址方式的书写格式不同立即寻址方式和直接寻址方式的书写格式不同立即寻址方式和直接寻址方式的书写格式不同,直接寻,直接寻址的地址要写在括号址的地址要写在括号“”,“”“”内。在程序中,内。在程序中,直接地址通直接地址通直接地
21、址通直接地址通常用内存变量名来表示常用内存变量名来表示常用内存变量名来表示常用内存变量名来表示,如:,如:MOV BX,VARWMOV BX,VARW,其中,其中,VARWVARW是内存字变量。是内存字变量。试比较下列指令中源操作数的寻址方式(试比较下列指令中源操作数的寻址方式(VARWVARW是内存字是内存字变量):变量):MOVAX,1234H MOVAX,1234H 前者是立即寻址,后者是直接寻址前者是立即寻址,后者是直接寻址MOVAX,VARW MOVAX,VARW两者是等效的,均为直接寻址两者是等效的,均为直接寻址IBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江
22、财经学院信息学院4.寄存器间接寻址方式寄存器间接寻址方式定定 义义:操操操操作作作作数数数数在在在在存存存存储储储储器器器器中中中中,操操作作数数的的有有效效地地址址用用SI、DI、BX和和BP等等四四个个寄寄存存器器之之一一来来指指定定,称称这这种种寻寻址址方方式式为为寄寄存存器间接寻址方式。器间接寻址方式。汇编格式:汇编格式:R功功能能:操操作作数数存存放放在在存存储储器器,寄寄存存器器R存存放放操操作作数数的的偏偏移移地址地址EA。图形表示:图形表示:EA寄存器寄存器操作数操作数存储器存储器段基地址段基地址基址或变址寄存器基址或变址寄存器指令指令IBM-PC汇编语言程序设计汇编语言程序设
23、计 浙江财经学院信息学院浙江财经学院信息学院【例【例3.4】假设有指令:】假设有指令:MOVBX,DI,在执行时,在执行时,(DS)=1000H,(,(DI)=2345H,存储单元,存储单元12345H的内容是的内容是4354H。问执行指令后,。问执行指令后,BX的值是什么?的值是什么?解:寄存器解:寄存器DI的值不是操作数,而是操作数的地址。的值不是操作数,而是操作数的地址。该操作数的物理地址应由该操作数的物理地址应由DS和和DI的值形成,即:的值形成,即:PA=PA=(DSDS)*16+DI=1000H*16+2345H=12345H*16+DI=1000H*16+2345H=12345H
24、。所以,该指令的执行效果是:所以,该指令的执行效果是:把从物理地址为把从物理地址为12345H开始的开始的一个字的值传送给一个字的值传送给BX。OPCSDS54H43H10000H12345HDS:1000HDI:2345H12345H4354BXIBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院在不使用段超越前缀的情况下,有下列规定:在不使用段超越前缀的情况下,有下列规定:v若有效地址用若有效地址用SI、DI和和BX等之一来指定,则其缺省的段寄存等之一来指定,则其缺省的段寄存器为器为DS;v若有效地址用若有效地址用BP来指定,则其缺省的段寄存器为来指定,则
25、其缺省的段寄存器为SS(即:堆即:堆栈段)。栈段)。该寻址方式物理地址的计算方法如下:该寻址方式物理地址的计算方法如下:BXBX物理地址物理地址物理地址物理地址PA=16DS+SIPA=16DS+SIDIDI或或物理地址物理地址物理地址物理地址PA=16SS+BPPA=16SS+BPIBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院5.寄存器相对寻址方式寄存器相对寻址方式定定 义义:操操作作数数在在存存储储器器中中,其其有有效效地地址址是是一一个个基基址址寄寄存存器器(BX、BP)或或变变址址寄寄存存器器(SI、DI)的的内内容容和和指指令令中中的的8位位/
26、16位偏移量之和。位偏移量之和。汇汇编编格格式式:XR(X表表示示位位移移量量,是是8位位或或16位位二二进进制制补补码码表表示示的的有符号数)有符号数)功功 能能:操操作作数数存存放放在在存存储储器器,寄寄存存器器R的的内内容容加加位位移移量量X为为操作数的偏移地址操作数的偏移地址EA。图形表示如下:图形表示如下:地址地址寄存器寄存器操作数操作数存储器存储器段基地址段基地址基址或变址寄存器基址或变址寄存器 位移量位移量指令指令EAIBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院【例【例3.5】假设指令:】假设指令:MOVBX,SI+100H,在执行它时,
27、在执行它时,(DS)=1000H,(,(SI)=2345H,内存单元,内存单元12445H的内容为的内容为2715H,问该指令执行后,问该指令执行后,BX的值是什么?的值是什么?解:解:EA=(SI)+100H=2345H+100H=2445HPA=(DS)*16+EA=1000H*16+2445H=12445H。所以,该指令的执行效果是:所以,该指令的执行效果是:把从物理地址为把从物理地址为12445H开始开始的一个字的值传送给的一个字的值传送给BX。OPCSDS15H27H10000H12445HSI:2345H100HEA:2445HDS:1000H12445H2715BXIBM-PC汇
28、编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院6.基址变址寻址方式基址变址寻址方式定定 义义:操操作作数数在在存存储储器器中中,其其有有效效地地址址是是一一个个基基址址寄寄存存器器(BX、BP)和一个变址寄存器和一个变址寄存器(SI、DI)的内容之和。的内容之和。汇编格式:汇编格式:BR+IR功功 能能:操操作作数数存存放放在在存存储储器器,BR的的内内容容加加IR的的内内容容是是操操作作数数的的偏偏移移地地址址EA。图形表示:图形表示:操作数操作数 存储器存储器段基地址段基地址基址寄存器基址寄存器 变址寄存器变址寄存器指令指令基址值基址值基址寄存器基址寄存器变址值变
29、址值变址寄存器变址寄存器EAIBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院【例例 3.6】假假 设设 指指 令令:MOV BX,BX+SI,在在 执执 行行 时时,(DS)=1000H,(BX)=2100H,(SI)=0011H,内内存存单单元元12111H的的内容为内容为1234H。问该指令执行后,。问该指令执行后,BX的值是什么?的值是什么?解:操作数的物理地址解:操作数的物理地址PA为:为:PA=(DS)*16+(BX)+(SI)=1000H*16+2100H+0011H=12111H所以,该指令的执行效果是:所以,该指令的执行效果是:把从物理地址
30、为把从物理地址为12111H开始开始的一个字的值传送给的一个字的值传送给BX。OPCSDS34H12H10000H12111HBX:2100HSI:0011HEA:2111HDS:1000H12111H1234BXIBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院7.相对基址变址寻址方式相对基址变址寻址方式定定 义义:操操作作数数在在存存储储器器中中,其其有有效效地地址址是是一一个个基基址址寄寄存存器器(BX、BP)的的值、一个变址寄存器值、一个变址寄存器(SI、DI)的值和指令中的的值和指令中的8位位/16位偏移量之和。位偏移量之和。汇编格式:汇编格式:X
31、BR+IR功功 能能:操操作作数数存存放放在在存存储储器器,BR内内容容加加IR内内容容加加位位移移量量X是是操操作作数数的的偏偏移移地址地址EA。图形表示:图形表示:存储器存储器基址值基址值基址寄存器基址寄存器操作数操作数段基地址段基地址基址寄存器基址寄存器 变址寄存器变址寄存器 位移量位移量指令指令变址值变址值变址寄存器变址寄存器EAIBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院【例例 3.7】假假 设设 指指 令令:MOV AX,BX+SI+200H,在在 执执 行行 时时,(DS)=1000H,(BX)=2100H,(SI)=0010H,内内存存
32、单单元元12310H的内容为的内容为1234H。问该指令执行后,。问该指令执行后,AX的值是什么?的值是什么?解:该操作数的物理地址应由解:该操作数的物理地址应由DS和和EA的值形成,即:的值形成,即:PA=12310H所以,该指令的执行效果是:所以,该指令的执行效果是:把从物理地址为把从物理地址为12310H开始开始的一个字的值传送给的一个字的值传送给AX。OPCSDS34H12H10000H12310HBX:2100HSI:0010H0200HEA:2310HDS:1000H12310H1234AXIBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院v跨段
33、越问题跨段越问题凡凡是是使使用用寄寄存存器器为为BX、SI、DI时时,其其默默认认段段为为DS,使使用用BP时时,默默认认段段为为SS。该该规规定定为为系系统统默默认认状状态态。当当要要否否定定默默认认状状态态,到到非非约约定定段段寻寻找找操操作作数数时,必须用跨段前缀指明操作数的段寄存器名。时,必须用跨段前缀指明操作数的段寄存器名。汇编格式:汇编格式:段寄存器名:操作数地址。段寄存器名:操作数地址。段寄存器名:操作数地址。段寄存器名:操作数地址。功能:功能:冒号冒号“:”之前的段寄存器名指明操作数所在的段。之前的段寄存器名指明操作数所在的段。【例【例3.8】MOVAX,DS:BPMOVCX,
34、SS:SI该该例例中中,DS:,SS:均均为为跨跨段段前前缀缀,此此时时默默认认状状态态无无效效,操操作作数数的的物物理理地地址址PA由由段段寄寄存存器器内内容容左左移移4位位加加偏偏移移EA形形成成。上上述述2条条指指令令的的源源操操作作数数物理地址分别为:物理地址分别为:PA1=(DS)左移)左移4位位+BPPA2=(SS)左移)左移4位位+SIIBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院3.1.2与转移地址有关的寻址方式与转移地址有关的寻址方式用来确定转移指令及转子(用来确定转移指令及转子(call)指令的转向地址。转移)指令的转向地址。转移地址
35、是由各种寻址方式得到的有效地址和段地址相加而成的,地址是由各种寻址方式得到的有效地址和段地址相加而成的,有效地址存入有效地址存入IP寄存器中,段地址指定为寄存器中,段地址指定为CS段寄存器内容。段寄存器内容。段内寻址段内寻址段内直接寻址段内直接寻址JMPNEARPTRNEXTJMPNEARPTRNEXT段内间接寻址段内间接寻址JMPTABLEBXJMPTABLEBX段间寻址段间寻址段间直接寻址段间直接寻址JMPFARPTRNEXTJMPFARPTRNEXT段间间接寻址段间间接寻址JMPDWORDPTRBXJMPDWORDPTRBXIBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学
36、院浙江财经学院信息学院(1)段内直接寻址段内直接寻址转向的有效地址转向的有效地址=当前(当前(IP)+位移量(位移量(8bit/16bit)位移量位移量IP寄存器寄存器EAIBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院【例例3.8】(1)JMPSHORTQUEST其中其中QUEST表示转移的符号地址,操作符表示转移的符号地址,操作符SHORT表示是个表示是个8位带符号数,数的范围是位带符号数,数的范围是80H7FH,即,即-128+127。它只能。它只能相对于当前相对于当前IP(转移指令的下一条指令的首地址)所指的位置作(转移指令的下一条指令的首地址)所
37、指的位置作-128+127范围内跳转,所以称为范围内跳转,所以称为短跳转短跳转短跳转短跳转。(2)JMPNEARPTRPROGA其中其中PROGA表示转移的符号地址,操作符表示转移的符号地址,操作符NEARPRT表示表示是个是个16位带符号数,数的范围是位带符号数,数的范围是8000H7FFFH,即,即-32768+32767。它只能相对于当前。它只能相对于当前IP所指的位置作所指的位置作-32768+32767范围范围内跳转,所以称为内跳转,所以称为近跳转近跳转。IBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院(2)段内间接寻址段内间接寻址转向的有效地址
38、是一个寄存器或存储单元的内容。可用转向的有效地址是一个寄存器或存储单元的内容。可用除立即数以外的任何一种数据寻址方式得到,所得到的转向除立即数以外的任何一种数据寻址方式得到,所得到的转向的有效地址取代的有效地址取代IP寄存器的内容。寄存器的内容。转向的有效地址转向的有效地址指令指令数据寻址方式数据寻址方式或或根据数据寻址根据数据寻址方式计算出方式计算出EA值值转向的有效地址转向的有效地址存储单元存储单元IBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院【例【例3.9】已知已知TABLE=20A2H,(,(BX)=1256H,(,(SI)=528EH,(DS)
39、=2000H,(,(232F8H)=3280H,(,(264E4H)=2450HJMPBX;(IP)=1256HJMPWORDPTRTABLEBX;(IP)=3280HJMPWORDPTRBXSI;(IP)=2450HIBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院(3)段间直接寻址段间直接寻址用指令中提供的转向段地址和偏移地址取代用指令中提供的转向段地址和偏移地址取代CS和和IP。指令指令偏移地址偏移地址IP寄存器寄存器段地址段地址CS寄存器寄存器IBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院【例【例3.9】JMP
40、FARPTRNEXTROUNT32EA01001010CS=0000HCS0000002000IPIP=2000HCSCS=1000HNEXTROUNTIP=0132H1013210000新新IP新新CSIBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院(4)段间间接寻址段间间接寻址用存储器中的两个相继字的内容取代用存储器中的两个相继字的内容取代CS和和IP,存储,存储单元的地址可用存储器寻址方式得到。单元的地址可用存储器寻址方式得到。指令指令数据寻址方式数据寻址方式根据数据寻址根据数据寻址方式计算出方式计算出EA值值转向的有效地址转向的有效地址转向的有效地
41、址转向的有效地址存储器中的两个相继字存储器中的两个相继字IPCSIBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院【例【例3.10】JMPDWORDPTRINTERS+BX如如DS=3000H,BX=1200H,INTERS=0020H,则存储单元的物理地址则存储单元的物理地址PA=30000+0020+1200=31200H指令执行前,指令执行前,CS=0000H,IP=1000H,(,(31220H)=40H,(31221)=01H,(,(31222H)=00H,(,(31223)=10H。指令执行后,指令执行后,CS=1000H,IP=0140H,(,
42、(31220H)=40H,(31221)=01H,(,(31222H)=00H,(,(31223)=10H。IBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院指令存储和执行情况:指令存储和执行情况:JMPDWORDPTRINTERBXCS=0000HCS0000001000IPIP=1000HCSCS=1000HIPIP=0140H1014010000代码段代码段01400010DS=3000HDS3000031220INTER+BX数据段数据段新新IP新新CS312213122231223IBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙
43、江财经学院信息学院3.2程序占有的空间和执行时间程序占有的空间和执行时间IBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院3.80 x86的指令系统的指令系统80X86指令系统分为以下指令系统分为以下6组:组:数据传送指令数据传送指令数据传送指令数据传送指令串处理指令串处理指令串处理指令串处理指令算术指令算术指令算术指令算术指令控制转移指令控制转移指令控制转移指令控制转移指令逻辑指令逻辑指令逻辑指令逻辑指令处理机控制与杂项操作指令处理机控制与杂项操作指令处理机控制与杂项操作指令处理机控制与杂项操作指令 在学习汇编指令时,指令的功能是我们学习和掌握的重点,但在
44、学习汇编指令时,指令的功能是我们学习和掌握的重点,但要准确、有效地运用这些指令,我们还要熟悉系统对每条指令的一要准确、有效地运用这些指令,我们还要熟悉系统对每条指令的一些规定或约束。因此,对指令要掌握以下几个方面内容:些规定或约束。因此,对指令要掌握以下几个方面内容:vv指令操作数的寻址方式;指令操作数的寻址方式;指令操作数的寻址方式;指令操作数的寻址方式;vv指令对标志位的影响、标志位对指令的影响;指令对标志位的影响、标志位对指令的影响;指令对标志位的影响、标志位对指令的影响;指令对标志位的影响、标志位对指令的影响;vv指令的执行时间,对可完成同样功能的指令,要选用执行时间短指令的执行时间,
45、对可完成同样功能的指令,要选用执行时间短指令的执行时间,对可完成同样功能的指令,要选用执行时间短指令的执行时间,对可完成同样功能的指令,要选用执行时间短的指令的指令的指令的指令。IBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院3.3.数据传送指令数据传送指令数据传送指令数据传送指令数据传送指令数据传送指令负责把数据、地址或立即数传送到寄存器、负责把数据、地址或立即数传送到寄存器、负责把数据、地址或立即数传送到寄存器、负责把数据、地址或立即数传送到寄存器、存储器或端口号寄存器存储器或端口号寄存器存储器或端口号寄存器存储器或端口号寄存器。它相对于高级语言里的赋
46、值语句。它相对于高级语言里的赋值语句。通用数据传送通用数据传送通用数据传送通用数据传送:MOVPUSHPOP 累加器专用传送(输入输出)累加器专用传送(输入输出)累加器专用传送(输入输出)累加器专用传送(输入输出):INOUTXLAT 地址传送地址传送地址传送地址传送:LEALDSLES 标志寄存器传送标志寄存器传送标志寄存器传送标志寄存器传送:LAHFSAHFPUSHFPOPF 类型转换指令类型转换指令类型转换指令类型转换指令:CBWCWDIBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院vMOV传送指令传送指令格格式:式:MOVReg/MemMOVReg
47、/Mem,Reg/Mem/ImmReg/Mem/Imm其中:其中:RegRegister(寄存器),(寄存器),MemMemory(存储器),(存储器),ImmImmediate(立即数),它们(立即数),它们可以是可以是8位、位、16位。位。功功能:能:指令的功能是指令的功能是把源操作数(第二操作数)的值传给目把源操作数(第二操作数)的值传给目的操作数(第一操作数)。的操作数(第一操作数)。指令执行后,目的操作数的值被改变,指令执行后,目的操作数的值被改变,而源操作数的值不变。在存储单元是该指令的一个操作数时,该而源操作数的值不变。在存储单元是该指令的一个操作数时,该操作数的寻址方式可以是任
48、意一种存储单元寻址方式。操作数的寻址方式可以是任意一种存储单元寻址方式。IBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学院浙江财经学院信息学院段寄存器段寄存器CS、DS、SS、ES通用寄存器通用寄存器8位或者位或者16位位存储器存储器立即数立即数8位或者位或者16位位在汇编语言中,主要的数据传送方式如下图所在汇编语言中,主要的数据传送方式如下图所示。虽然一条示。虽然一条MOV指令能实现其中大多数的数据传指令能实现其中大多数的数据传送方式,但也存在送方式,但也存在MOV指令不能实现的传送方式。指令不能实现的传送方式。IBM-PC汇编语言程序设计汇编语言程序设计 浙江财经学院信息学
49、院浙江财经学院信息学院对对MOV指令有以下几条具体规定,其中有些规定对其它指令指令有以下几条具体规定,其中有些规定对其它指令也同样有效。也同样有效。(1)两个操作数的数据类型要相同两个操作数的数据类型要相同两个操作数的数据类型要相同两个操作数的数据类型要相同,要同为,要同为8位、位、16位,位,如:如:MOVBL,AX等是不正确的;等是不正确的;(2)两个操作数不能同时为段寄存器两个操作数不能同时为段寄存器两个操作数不能同时为段寄存器两个操作数不能同时为段寄存器,如:,如:MOVES,DS等;等;(3)代码段寄存器代码段寄存器代码段寄存器代码段寄存器CSCS不能为目的操作数,但可作为源操作数不
50、能为目的操作数,但可作为源操作数不能为目的操作数,但可作为源操作数不能为目的操作数,但可作为源操作数,如:指令如:指令MOVCS,AX等不正确,但指令等不正确,但指令MOVAX,CS等等是正确的;是正确的;(4)立即数不能直接传给段寄存器立即数不能直接传给段寄存器立即数不能直接传给段寄存器立即数不能直接传给段寄存器,如:如:MOVDS,100H等;等;(5)立即数不能作为目的操作数立即数不能作为目的操作数立即数不能作为目的操作数立即数不能作为目的操作数,如:,如:MOV100H,AX等;等;(6)指令指针指令指针指令指针指令指针IPIP,不能作为,不能作为,不能作为,不能作为MOVMOV指令的