第3部分80x86指令系统和寻址方式

上传人:枫** 文档编号:568575738 上传时间:2024-07-25 格式:PPT 页数:148 大小:699KB
返回 下载 相关 举报
第3部分80x86指令系统和寻址方式_第1页
第1页 / 共148页
第3部分80x86指令系统和寻址方式_第2页
第2页 / 共148页
第3部分80x86指令系统和寻址方式_第3页
第3页 / 共148页
第3部分80x86指令系统和寻址方式_第4页
第4页 / 共148页
第3部分80x86指令系统和寻址方式_第5页
第5页 / 共148页
点击查看更多>>
资源描述

《第3部分80x86指令系统和寻址方式》由会员分享,可在线阅读,更多相关《第3部分80x86指令系统和寻址方式(148页珍藏版)》请在金锄头文库上搜索。

1、 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言第第3章章80x86指令系统和寻址方式指令系统和寻址方式教学要求:教学要求:1.1.掌握一般指令系统的基本概念:指令格式、掌握一般指令系统的基本概念:指令格式、功能和注意事项。功能和注意事项。2.2.重点掌握重点掌握8086/80888086/8088指令系统中,各指令的格指令系统中,各指令的格式、寻址方式、指令类型式、寻址方式、指令类型 。3. 3. 了解其他(奔腾等)的寻址方式和指令类型。了解其他(奔腾等)的寻址方式和指令类型。注俘且戮乍娠膝肄垃高翻厉晌形贡务斯横荔声咨础屎翁砌酝据厚群僵听抽第

2、3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式1 1 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言3.1指令系统的基本概念指令系统的基本概念计算机的指令系统就是指该计算机能够执行计算机的指令系统就是指该计算机能够执行的的全部指令的集合全部指令的集合。 每种计算机都有它支持的指每种计算机都有它支持的指令集合。令集合。 16 16位位80868086指令系统是整个指令系统是整个Intel 80x86 Intel 80x86 系列微处理器指令系统的基础。系列微处理器指令系统的基础。3.1.1 3.1.1 指令系统指令系统憨募

3、狸蛊疚霞茨贸针敝脾撒鸽剖剿宰比虎瞪赖遗游讼绰狠殆倒畏沦驰胳蝉第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式2 2 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言 操作码操作码 说明计算机要执行哪种操作,如传送、说明计算机要执行哪种操作,如传送、运算、移位、跳转等操作,它是指令中不可缺少的组成部运算、移位、跳转等操作,它是指令中不可缺少的组成部分。分。 操作码操作码操作数操作数 操作数操作数指令由指令由操作码操作码和和操作数操作数两部分组成。两部分组成。 操作数操作数 是指令执行的参与者,即各种操作的对象。是指令执行的参

4、与者,即各种操作的对象。 有些指令不需要操作数,通常的指令都有一个或有些指令不需要操作数,通常的指令都有一个或两个操作数,也有个别指令有两个操作数,也有个别指令有3 3个甚至个甚至4 4个操作数,通常称个操作数,通常称为一地址指令、二地址指令、三为一地址指令、二地址指令、三3.1.2 3.1.2 指令格式指令格式瞥亨惩惭绢贪喘镐蚀封钧陵圣乓倦唉件韵顾洪曝凭曝戳柯症让瀑翁挨沼蹲第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式3 3 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言指令的功能指令的功能该指令能够实现何种操作。通

5、常指该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或其缩写形式。令助记符就是指令功能的英文单词或其缩写形式。指令支持的寻址方式指令支持的寻址方式该指令中的操作数可以采该指令中的操作数可以采用何种寻址方式。用何种寻址方式。指令对标志的影响指令对标志的影响该指令执行后是否对各个标该指令执行后是否对各个标志位(志位(OVOV、Z Z、C C、P P等)有影响,以及如何影响。等)有影响,以及如何影响。3.1.3 3.1.3 学习指令的注意事项学习指令的注意事项骋垢岿诣愚陌佬昔垂属了碑葛附柒禽濒综爪火姿岩猎华示狭正盾锚币椭烦第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻

6、址方式4 4 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言3.280x86寻址方式寻址方式 操作数可以跟随在指令操作码之后操作数可以跟随在指令操作码之后,称为,称为立即数立即数;操作数也可以存放在操作数也可以存放在CPUCPU内部的寄存器中内部的寄存器中,称为,称为寄存器操作寄存器操作数数。绝大多数的操作数存放在内存储器中绝大多数的操作数存放在内存储器中,称为,称为存储器操存储器操作数作数。指令指定操作数的位置,即给出地址信息,在执行。指令指定操作数的位置,即给出地址信息,在执行时需要根据这个地址信息找到需要的操作数。时需要根据这个地址信息找

7、到需要的操作数。3.2.1 3.2.1 寻址、寻址方式的概念寻址、寻址方式的概念寻址就是寻址就是寻找操作数的地址。寻找操作数的地址。寻址方式就是寻址方式就是寻找操作数的方法。寻找操作数的方法。奸涤尾挂没输捌郝塘钥夯磨着伯庞浮玖唆刀伺誓拽衷汛褒灸宠模憨怕穿胞第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式5 5 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言 指令助记符体现该指令的功能,它指令助记符体现该指令的功能,它对应一对应一条二进制编码的机器指令条二进制编码的机器指令。 指令的操作数个数由该指令确定,指令的操作数个数

8、由该指令确定,可以没可以没有操作数,也可以有一个、二个或三个操作数。有操作数,也可以有一个、二个或三个操作数。3.2.2 80X863.2.2 80X86的指令格式的指令格式指令助记符指令助记符操作数操作数1,操作数操作数2,操作数操作数3;注释注释休循稿碌杖佃凯龚粘叠瑶满辆完练眩俐镊妄缔渔巢龟港棍村勘晚肤缩邹镶第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式6 6 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言3.2.3 3.2.3 与数据有关的寻址方式与数据有关的寻址方式 以以 MOVMOV 指令为例:指令为例:立即

9、寻址立即寻址 MOV AX , 3069H MOV AX , 3069H寄存器寻址寄存器寻址 MOV AL , BH MOV AL , BH直接寻址直接寻址 MOV AX , MOV AX , 2000H 2000H 寄存器间接寻址寄存器间接寻址 MOV AX , BX MOV AX , BX 寄存器相对寻址寄存器相对寻址 MOV AX , COUNT SI MOV AX , COUNT SI 基址变址寻址基址变址寻址 MOV AX , BP MOV AX , BP DI DI 相对基址变址寻址相对基址变址寻址 MOV AX , MASK BX MOV AX , MASK BX SI SI 篇

10、狡删晋蚕椽院剔船叛但筛横婉级什帜拳另左钳术草喻叮向豆扑漏爹俏娠第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式7 7 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言1 1) 立即寻址方式立即寻址方式图形表示:图形表示:操作数操作数 n指令指令定义:定义:操作数作为指令的一部分而直接写在指令中,这种操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为操作数称为立即数,这种寻址方式也就称为立即数立即数寻址方寻址方式。式。 汇编格式:汇编格式:n n(n n为立即操作数,是为立即操作数,是用用8

11、8位或位或1616位二进制补位二进制补码表示的有符号数码表示的有符号数)功能:功能:操作数存放在存储器,指令下一单元的内容为立即操作数存放在存储器,指令下一单元的内容为立即操作数操作数n n。绪翟勺讣帝正骆汾享撕另扁邪事圣姜念伯牧贺邢陀截版杂堕厦竣邮臀择扫第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式8 8 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言【例【例3.13.1】 MOV AX MOV AX, 4576H 4576H 执行后(执行后(AXAX)= =?CSMOVAX,4576H指令的存储形式指令的存储形式A

12、XOP76H45H7645 该例中源操作数为立即寻址方式,立即数为该例中源操作数为立即寻址方式,立即数为4576H4576H,存放在指令的下一单元。,存放在指令的下一单元。执行:执行:4576HAX4576HAX执行后:(执行后:(AXAX)=4576H=4576H豺狄末豫钻赠妊诉偏矢臃踏搪扼扮辞惠伦黎钦犁精扯包烂棕赠活丢邪裕岸第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式9 9 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言 2 2) 寄存器寻址方式寄存器寻址方式定定义义:指指令令所所要要的的操操作作数数已已存存储储

13、在在某某寄寄存存器器中中,或或把把目目标标操操作作数数存存入入寄寄存存器器。把把在在指指令令中中指指出出所所使使用用寄寄存存器器(即即:寄寄存存器的助记符器的助记符)的寻址方式称为寄存器寻址方式。的寻址方式称为寄存器寻址方式。 寄存器寄存器 R指令指令操作数操作数寄存器寄存器汇编格式:汇编格式:R R (其中(其中R R表示寄存器名,如表示寄存器名,如AXAX、BXBX等。)等。)功能:功能:操作数直接存放在寄存器操作数直接存放在寄存器R R中。中。图形表示:图形表示:伙论胜词弄蛮诚镜而连又辑力骇入墅肄合茨豺龄糕运张惭件佬枫爬焚悉宴第3部分80x86指令系统和寻址方式第3部分80x86指令系统

14、和寻址方式1010 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言指令中可以引用的寄存器及其符号名称如下:指令中可以引用的寄存器及其符号名称如下: 8 8位寄存器有:位寄存器有:AHAH、ALAL、BHBH、BLBL、CHCH、CLCL、DHDH和和DLDL等;等; 1616位位寄寄存存器器:AXAX、BXBX、CXCX、DXDX、SISI、DIDI、SPSP、BPBP和和段段寄存器寄存器等;等;注注:由由于于指指令令所所需需的的操操作作数数已已存存储储在在寄寄存存器器中中,或或操操作作的的结结果果存存入入寄寄存存器器,这这样样,在在指指令令执

15、执行行过过程程中中,会会减减少少读读/ /写写存存储储器器单单元元的的次次数数,所所以以,使使用用寄寄存存器器寻寻址址方方式式的的指指令令具具有有较较快快的的执执行行速速度度。通通常常情情况况下下,提提倡倡在在编编写写汇汇编编语语言言程程序序时时,应应尽可能地使用寄存器寻址方式,但也不要把它绝对化。尽可能地使用寄存器寻址方式,但也不要把它绝对化。冀砌易淡户歼吹逆周蚂季物朗泼顶歧裕过怖耗钵伞驰特谣晶戚痢配那伴状第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式1111 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言【例【例3

16、.23.2】下列程序执行后,(】下列程序执行后,(AXAX)= =?,(?,(BXBX)= =? MOV AX MOV AX,1234H1234H MOV BX MOV BX,5678H5678H ADD AX ADD AX,BXBX执行:执行:1234HAX执行后:(执行后:(AX)=68ACH,(,(BX)=5678H5678HBX(AX)+(BX)AX滔数搏弘农旬屹窒酱罗蜗睦杰谰杖赡彤镭疲约床愁疮照悼袖泼麓捉汕所勋第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式1212 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语

17、言 3 3) 直接寻址方式直接寻址方式定定义义:指指令令所所要要的的操操作作数数存存放放在在内内存存中中,在在指指令令中中直直接接给给出该操作数的有效地址出该操作数的有效地址,这种寻址方式为直接寻址方式。,这种寻址方式为直接寻址方式。 EA指令指令操作数操作数存储器存储器段基地址段基地址汇编格式:汇编格式:含有变量的地址表达式含有变量的地址表达式。功能:功能:指令下一字单元的内容是操作数的偏移地址指令下一字单元的内容是操作数的偏移地址EAEA。图形表示:图形表示:料成贵措易税劫庚大砖眠怕抡株吠撑油喝狙冻酪碉肖绝创悯卞婚斟轴跃饶第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址

18、方式1313 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言【例【例3.33.3】 执行指令:执行指令:MOV BX MOV BX ,1234H1234H 设(设(DSDS)=2000H=2000H。 执行后:(执行后:(BXBX)=?=?BXDS:2000H1234H21234HOPCSDS13H52H20000H21234H34H12H执行:(执行:(21234H)BX执行后:(执行后:(BX)=5213H1352绿厘访钥槐咆苦共笋钝洒忻瞬雀啃潜浸拒偷娟老僚羊芯乘惋蔚囊嗓病梧贞第3部分80x86指令系统和寻址方式第3部分80x86指令系统和

19、寻址方式1414 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言 在通常情况下,操作数存放在数据段中,所以,在通常情况下,操作数存放在数据段中,所以,其其物理地址将由数据段寄存器物理地址将由数据段寄存器DSDS和指令中给出的有效地和指令中给出的有效地址直接形成址直接形成,但如果使用段超越前缀,那么,操作数,但如果使用段超越前缀,那么,操作数可存放在其它段。可存放在其它段。 例如:例如:MOVMOVESES:1000H:1000H, AX AX 闹唯仔售京胃疏完妄莫讼逗欠侣疡净橙囊臆瓤跨宋映介咒剩后泞客面辰涎第3部分80x86指令系统和寻址方式第

20、3部分80x86指令系统和寻址方式1515 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言注意:注意:立即寻址方式和直接寻址方式的书写格式不同立即寻址方式和直接寻址方式的书写格式不同,直,直接寻址的地址要写在括号接寻址的地址要写在括号“”,“”“”内。在程序中,内。在程序中,直直接地址通常用内存变量名来表示接地址通常用内存变量名来表示,如:,如:MOV BX, VARWMOV BX, VARW,其,其中,中,VARWVARW是内存字变量。是内存字变量。 试比较下列指令中源操作数的寻址方式(试比较下列指令中源操作数的寻址方式(VARWVARW是内

21、是内存字变量):存字变量): MOVAX,1234H MOVAX,1234H1234H 前者是立即寻址,后者是直接寻址前者是立即寻址,后者是直接寻址MOVAX,VARWMOVAX,VARWVARW两者是等效的,均为直接寻址两者是等效的,均为直接寻址作业作业芯爹喊澄饼贼握惨亮显眉吃霍劲菱砒衡撑冬悉矽抗芒胁锄犊耽窝棺擅楔崩第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式1616 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言4 4) 寄存器间接寻址方式寄存器间接寻址方式定定 义义:操操作作数数在在存存储储器器中中,操操作作数

22、数的的有有效效地地址址用用SISI、DIDI、BXBX和和BPBP等等四四个个寄寄存存器器之之一一来来指指定定,称称这这种种寻寻址址方方式式为为寄存器间接寻址方式。寄存器间接寻址方式。 EA寄存器寄存器操作数操作数存储器存储器段基地址段基地址基址或变址寄存器基址或变址寄存器指令指令汇编格式:汇编格式:RR功功 能:能:操作数存放在存储器,寄存器操作数存放在存储器,寄存器R R存放操作数的存放操作数的偏移地址偏移地址EAEA。图形表示:图形表示:媒后届荣天竖陪湃筏它撞景废螺磐华澡拘挝蔷润贩部狗氛抿绍考知损禁哺第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式1717 安徽理

23、工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言【例例3.43.4】假假设设有有指指令令:MOV MOV BX, BX, DIDI,在在执执行行时时,(DSDS)=1000H=1000H,(DIDI)=2345H=2345H,存存储储单单元元12345H12345H的的内内容容是是4354H4354H。问执行指令后,问执行指令后,BXBX的值是什么?的值是什么?BXDS:1000HDI:2345H12345H解:寄存器解:寄存器DIDI的值不是操作数,而是操作数的地址。该操作的值不是操作数,而是操作数的地址。该操作数的物理地址应由数的物理地址应由DSD

24、S和和DIDI的值形成,即:的值形成,即: PA=PA=PA=PA=(DSDSDSDS)*16+DI=1000H*16+2345H=12345H*16+DI=1000H*16+2345H=12345H*16+DI=1000H*16+2345H=12345H*16+DI=1000H*16+2345H=12345H。该指令的执行效果是:该指令的执行效果是:把从物理地址为把从物理地址为12345H12345H开始的开始的一个字的值传送给一个字的值传送给BXBX。4354OPCSDS54H43H10000H12345H敲呵假镣门躬蒙彭考而翔垃灭走堵板戚刑惹巴案侥啄贝梅赏摹绊汁蕴如籍第3部分80x86指

25、令系统和寻址方式第3部分80x86指令系统和寻址方式1818 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言 在不使用段超越前缀的情况下,有下列规定:在不使用段超越前缀的情况下,有下列规定: v若有效地址用若有效地址用SISI、DIDI和和BXBX等之一来指定,则其缺省的等之一来指定,则其缺省的段寄存器为段寄存器为DSDS;v若有效地址用若有效地址用BPBP来指定,则其缺省的段寄存器为来指定,则其缺省的段寄存器为SSSS(即:堆栈段)。(即:堆栈段)。 该寻址方式物理地址的计算方法如下:该寻址方式物理地址的计算方法如下: BX BX 物理地址物

26、理地址PA=16DS + SI PA=16DS + SI DI DI或或 物理地址物理地址PA=16SS+ BPPA=16SS+ BP掏陡旱元坎眺厢颗葬开妨暗游灯刁龚植稳报溺兄骚钝镐唱哑葬侥六娟逞中第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式1919 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言作业作业教材教材P1073.13.23.41)2)3)窿圈逻揪歧险灶不嘲晕诺细罩蹲虑灌应邢跨躺邱文勾绕拿惠墩卸该钓碾询第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式2020 安徽理工大学安徽理工大学

27、第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言5.寄存器相对寻址方式寄存器相对寻址方式定定 义义:操操作作数数在在存存储储器器中中,其其有有效效地地址址是是一一个个基基址址寄寄存存器器(BX、BP)或或变变址址寄寄存存器器(SI、DI)的的内内容容和和指指令令中中的的8位位/16位偏移量之和。位偏移量之和。汇汇编编格格式式:XR(X表表示示位位移移量量,是是8位位或或16位位二二进进制制补补码码表表示示的有符号数)的有符号数)功功 能能:操操作作数数存存放放在在存存储储器器,寄寄存存器器R的的内内容容加加位位移移量量X为操作数的偏移地址为操作数的偏移地址EA。图形表示

28、如下:图形表示如下:地址地址寄存器寄存器操作数操作数存储器存储器段基地址段基地址基址或变址寄存器基址或变址寄存器 位移量位移量指令指令EA闹辫荆抒旅开矮打悍慢灼录睛七墟踪绪滔煌盈蚤篮杭猴绊签抹邯存考摸凿第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式2121 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言10000H12345HDSCS10000H12345HOPCSDS15H27H10000H12445H奴署爸涌孪葬虑板珠勃醋睦贺唬褥针百耀砰窥命愤涩坞角真玩柄强侨或剔第3部分80x86指令系统和寻址方式第3部分80x8

29、6指令系统和寻址方式2222 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言【例【例3.5】假设指令:】假设指令:MOVBX,SI+100H,在执行它时,在执行它时,(DS)=1000H,(,(SI)=2345H,内存单元,内存单元12445H的内容为的内容为2715H,问该指令执行后,问该指令执行后,BX的值是什么?的值是什么?解:解:EA=(SI)+100H=2345H+100H=2445HPA=(DS)*16+EA=1000H*16+2445H=12445H。所以,该指令的执行效果是:所以,该指令的执行效果是:把从物理地址为把从物理地址为

30、12445H开始开始的一个字的值传送给的一个字的值传送给BX。OPCSDS15H27H10000H12445HSI:2345H100HEA:2445HDS:1000H12445H2715BX鞠硼扫伏会砸溃胆嘘给驮刚绳奈糜夜粘跋也侨鞭讽惩盔帮暑排李积篙沏苗第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式2323 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言6.基址变址寻址方式基址变址寻址方式定定 义义:操操作作数数在在存存储储器器中中,其其有有效效地地址址是是一一个个基基址址寄寄存存器器(BX、BP)和一个变址寄存器和一

31、个变址寄存器(SI、DI)的内容之和。的内容之和。 汇编格式:汇编格式:BR+IR功功 能能:操操作作数数存存放放在在存存储储器器,BR的的内内容容加加IR的的内内容容是是操操作作数数的的偏偏移移地址地址EA。图形表示:图形表示:操作数操作数 存储器存储器段基地址段基地址基址寄存器基址寄存器 变址寄存器变址寄存器指令指令基址值基址值基址寄存器基址寄存器变址值变址值变址寄存器变址寄存器EA挎哗口脐窘炒俺报箱数吊垫售吭匙琐裔友氨疗轨坛爪出炭蔫进莆扔灵福屉第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式2424 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指

32、令系统和寻址方式汇编语言汇编语言【 例例 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所以,该指令的执行效果是:所以,该指令的执行效果是:把从物理地址为把从物理地址为12111H开始开始的一个字的值传送给的一个字的值传送

33、给BX。OPCSDS34H12H10000H12111HBX:2100HSI:0011HEA:2111HDS:1000H12111H1234BX赵御昆荷诗别聋踩土均玉纯贫抿台止苛漾卵绿乌将校烬证川扳鲸磷坎魄拓第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式2525 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言7.相对基址变址寻址方式相对基址变址寻址方式定定 义义:操操作作数数在在存存储储器器中中,其其有有效效地地址址是是一一个个基基址址寄寄存存器器(BX、BP)的值、一个变址寄存器的值、一个变址寄存器(SI、DI)的值

34、和指令中的的值和指令中的8位位/16位偏移量之和。位偏移量之和。汇编格式:汇编格式:XBR+IR功功 能能:操操作作数数存存放放在在存存储储器器,BR内内容容加加IR内内容容加加位位移移量量X是是操操作作数数的的偏偏移地址移地址EA。图形表示:图形表示:存储器存储器基址值基址值基址寄存器基址寄存器操作数操作数段基地址段基地址基址寄存器基址寄存器 变址寄存器变址寄存器 位移量位移量指令指令变址值变址值变址寄存器变址寄存器EA杀娇佳糙汗土幅呜盼谚谗迄辞蕴瓦返厨祈涕遣辊莽范嫁像瑰氟啼惹铬融屹第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式2626 安徽理工大学安徽理工大学第第

35、3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言【例例3.7】假假设设指指令令:MOV AX, BX+SI+200H,在在执执行行时时,( DS) =1000H, ( BX) =2100H, ( SI) =0010H, 内内 存存 单单 元元12310H的内容为的内容为1234H。问该指令执行后,。问该指令执行后,AX的值是什么?的值是什么?解:该操作数的物理地址应由解:该操作数的物理地址应由DS和和EA的值形成,即:的值形成,即:PA=12310H所以,该指令的执行效果是:所以,该指令的执行效果是:把从物理地址为把从物理地址为12310H开始开始的一个字的值传送给的一个字

36、的值传送给AX。OPCSDS34H12H10000H12310HBX:2100HSI:0010H0200HEA:2310HDS:1000H12310H1234AX羞嵌败观戈缨厩掳亲幂鹰陶尾蛤佐牙渡灼影悦龋辱寐麦膜炳葛议眨嘛缆珊第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式2727 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v跨段越问题跨段越问题凡凡是是使使用用寄寄存存器器为为BX、SI、DI时时,其其默默认认段段为为DS,使使用用BP时时,默默认认段段为为SS。该该规规定定为为系系统统默默认认状状态态。当当要要否否

37、定定默默认认状状态态,到到非非约约定定段段寻寻找找操操作数时,必须用跨段前缀指明操作数的段寄存器名。作数时,必须用跨段前缀指明操作数的段寄存器名。汇编格式:汇编格式:段寄存器名:操作数地址。段寄存器名:操作数地址。功能:功能:冒号冒号“:”之前的段寄存器名指明操作数所在的段。之前的段寄存器名指明操作数所在的段。【例【例3.8】MOVAX,DS:BPMOVCX,SS:SI该该例例中中,DS:,SS:均均为为跨跨段段前前缀缀,此此时时默默认认状状态态无无效效,操操作作数数的的物物理理地地址址PA由由段段寄寄存存器器内内容容左左移移4位位加加偏偏移移EA形形成成。上上述述2条条指指令令的的源源操操作

38、数物理地址分别为:作数物理地址分别为:PA1=(DS)左移)左移4位位+BPPA2=(SS)左移)左移4位位+SI策具堂瓜梢鼠忌呈岂涤讹召堰丧世褐竣敖繁霓悟驮窜田矮细痔隙顽靴捅芯第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式2828 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言3.1.2与转移地址有关的寻址方式与转移地址有关的寻址方式用来确定转移指令及转子(用来确定转移指令及转子(call)指令的转向地址。转)指令的转向地址。转移地址是由各种寻址方式得到的有效地址和段地址相加而成移地址是由各种寻址方式得到的有效地址和

39、段地址相加而成的,有效地址存入的,有效地址存入IP寄存器中,段地址指定为寄存器中,段地址指定为CS段寄存器内段寄存器内容。容。段内寻址段内寻址段内直接寻址段内直接寻址JMPNEARPTRNEXTJMPNEARPTRNEXT段内间接寻址段内间接寻址JMPTABLEBXJMPTABLEBX段间寻址段间寻址段间直接寻址段间直接寻址JMPFARPTRNEXTJMPFARPTRNEXT段间间接寻址段间间接寻址JMPDWORDPTRBXJMPDWORDPTRBX堕漏但值郁芳摹囊酉赃烛衡卒尿椿勇渔榨品荫掺脯抹粕绸户摩燃蔫茨仟池第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式2929

40、安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言(1)段内直接寻址段内直接寻址转向的有效地址转向的有效地址=当前(当前(IP)+位移量(位移量(8bit/16bit)位移量位移量IP寄存器寄存器EA钻狸菜洲嗓权虱孵辅瞎钻翼缔澎滴蝴馅滇书寇榆撂乱饶堑缎硷前仲善园陌第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式3030 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言【例例3.8】(1)JMPSHORTQUEST其中其中QUEST表示转移的符号地址,操作符表示转移的符号地址,操

41、作符SHORT表示是表示是个个8位带符号数,数的范围是位带符号数,数的范围是80H7FH,即,即-128+127。它。它只能相对于当前只能相对于当前IP(转移指令的下一条指令的首地址)所指的(转移指令的下一条指令的首地址)所指的位置作位置作-128+127范围内跳转,所以称为范围内跳转,所以称为短跳转短跳转。(2)JMPNEARPTRPROGA其中其中PROGA表示转移的符号地址,操作符表示转移的符号地址,操作符NEARPRT表表示是个示是个16位带符号数,数的范围是位带符号数,数的范围是8000H7FFFH,即,即-32768+32767。它只能相对于当前。它只能相对于当前IP所指的位置作所

42、指的位置作-32768+32767范围内跳转,所以称为范围内跳转,所以称为近跳转近跳转。串弦部治霄筒范菊捅靠匿也娩曳庚狞扫点曲握润奶绊笔颇晕稻涯黑怖洛弘第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式3131 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言(2)段内间接寻址段内间接寻址转向的有效地址是一个寄存器或存储单元的内容。转向的有效地址是一个寄存器或存储单元的内容。可可用除立即数以外的任何一种数据寻址方式得到用除立即数以外的任何一种数据寻址方式得到,所得到的,所得到的转向的有效地址取代转向的有效地址取代IP寄存器的

43、内容。寄存器的内容。转向的有效地址转向的有效地址指令指令数据寻址方式数据寻址方式或或根据数据寻址根据数据寻址方式计算出方式计算出EA值值转向的有效地址转向的有效地址存储单元存储单元诬沪跋股贪韭颗举卑各艰墅胞抬袋替春祟拐鲸足挟路呜攻剧召摇拙播习煎第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式3232 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言【例【例3.9】已知已知TABLE=20A2H,(,(BX)=1256H,(,(SI)=528EH,(DS)=2000H,(,(232F8H)=3280H,(,(264E4H)=

44、2450HJMPBX;(IP)=1256HJMPWORDPTRTABLEBX;(IP)=3280HJMPWORDPTRBXSI;(IP)=2450H块弄摧株款誊非愤松署常芽圭笼由歹儒捕壶谨垃尘却否僚剩采堂斩衣俘欲第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式3333 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言(3)段间直接寻址段间直接寻址用指令中提供的转向段地址和偏移地址取代用指令中提供的转向段地址和偏移地址取代CS和和IP。指令指令偏移地址偏移地址IP寄存器寄存器段地址段地址CS寄存器寄存器淋弓擞就袭罩忠瞄番效塞

45、涎泪仰目豁璃孙踪鱼唆蛛始彼鸦堰蕉次彦挞怂滞第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式3434 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言【例【例3.9】JMPFARPTRNEXTROUNT32EA01001010CS=0000HCS0000002000IPIP=2000HCSCS=1000HNEXTROUNTIP=0132H1013210000新新IP新新CS添巴晋跨崇聋昭蹋曝判围驯扳护昌躺弓庆蜂奈昨战足寥娘馅聊份逐凛事双第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式3535 安徽理工

46、大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言(4)段间间接寻址段间间接寻址用存储器中的两个相继字的内容取代用存储器中的两个相继字的内容取代CS和和IP,存储存储单元的地址可用存储器寻址方式得到单元的地址可用存储器寻址方式得到。指令指令数据寻址方式数据寻址方式根据数据寻址根据数据寻址方式计算出方式计算出EA值值转向的有效地址转向的有效地址转向的有效地址转向的有效地址存储器中的两个相继字存储器中的两个相继字IPCS噎掉堰现公夸啊椰善扯论麓执肮泽胺晕沼动缺没炼移蔑迂炯炬岸树哲室陕第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式363

47、6 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言【例【例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,(,(31220H)=40H,(31221)=01H,

48、(,(31222H)=00H,(,(31223)=10H。薄天增佯厂鸟涤泛候亩帆最怔蚜候演诡箕避馁谤琶铱氖时筷阉增梆饮澄谴第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式3737 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言指令存储和执行情况:指令存储和执行情况:JMPDWORDPTRINTERBXCS=0000HCS0000001000IPIP=1000HCSCS=1000HIPIP=0140H1014010000代码段代码段01400010DS=3000HDS3000031220INTER+BX数据段数据段新新IP

49、新新CS312213122231223跪染翰管诀垢擒佰僚霜盲须悦装显难揪逮坛肺早厉高寄逊拟衔坛差矿阀翼第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式3838 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言3.2程序占有的空间和执行时间程序占有的空间和执行时间洛廷牧取酣舰睹哨哟著短煽舆过线阅惑迢拔肤碱嗡墟砖夏涎胃漱城碉篡纲第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式3939 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言3.80x86的指令系统

50、的指令系统80X86指令系统分为以下指令系统分为以下6组:组:数据传送指令数据传送指令串处理指令串处理指令算术指令算术指令控制转移指令控制转移指令逻辑指令逻辑指令处理机控制与杂项操作指令处理机控制与杂项操作指令 在学习汇编指令时,指令的功能是我们学习和掌握的重点,在学习汇编指令时,指令的功能是我们学习和掌握的重点,但要准确、有效地运用这些指令,我们还要熟悉系统对每条指令但要准确、有效地运用这些指令,我们还要熟悉系统对每条指令的一些规定或约束。因此,对指令要掌握以下几个方面内容:的一些规定或约束。因此,对指令要掌握以下几个方面内容:v指令操作数的寻址方式;指令操作数的寻址方式;v指令对标志位的影

51、响、标志位对指令的影响;指令对标志位的影响、标志位对指令的影响;v指令的执行时间,对可完成同样功能的指令,要选用执行时间指令的执行时间,对可完成同样功能的指令,要选用执行时间短的指令短的指令。裤雍蘑苑复舵若聘糙皆邦舔趋阵薪火淤男违绎交秘键前函沿途献祝素常刘第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式4040 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言3.数据传送指令数据传送指令数据传送指令数据传送指令负责把数据、地址或立即数传送到寄存负责把数据、地址或立即数传送到寄存器、存储器或端口号寄存器器、存储器或端口号寄存

52、器。它相对于高级语言里的赋值它相对于高级语言里的赋值语句。语句。通用数据传送通用数据传送:MOVPUSHPOP累加器专用传送(输入输出)累加器专用传送(输入输出):INOUTXLAT地址传送地址传送:LEALDSLES标志寄存器传送标志寄存器传送:LAHFSAHFPUSHFPOPF类型转换指令类型转换指令:CBWCWD钥癣晶谩拖告棘期借奢骡醋轩溺净渭沿数抵喜祟逊肠后搂壕离恋腹干棋商第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式4141 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言vMOV传送指令传送指令格格式:式:M

53、OVReg/Mem,Reg/Mem/Imm其中:其中:RegRegister(寄存器),(寄存器),MemMemory(存储器),(存储器),ImmImmediate(立即数),它们(立即数),它们可可以是以是8位、位、16位。位。功功能:能:指令的功能是指令的功能是把源操作数(第二操作数)的值传给把源操作数(第二操作数)的值传给目的操作数(第一操作数)。目的操作数(第一操作数)。指令执行后,目的操作数的值被指令执行后,目的操作数的值被改变,而源操作数的值不变。在存储单元是该指令的一个操作改变,而源操作数的值不变。在存储单元是该指令的一个操作数时,该操作数的寻址方式可以是任意一种存储单元寻址方

54、式。数时,该操作数的寻址方式可以是任意一种存储单元寻址方式。类行昂粒腿赶涉氨具夏驻妆阜回碰糙干蔚式刑垒合普沈谈陡拘迸塑魂嘴妙第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式4242 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言段寄存器段寄存器CS、DS、SS、ES通用寄存器通用寄存器8位或者位或者16位位存储器存储器立即数立即数8位或者位或者16位位在汇编语言中,主要的数据传送方式如下图所在汇编语言中,主要的数据传送方式如下图所示。虽然一条示。虽然一条MOV指令能实现其中大多数的数据传指令能实现其中大多数的数据传送方式

55、,但也存在送方式,但也存在MOV指令不能实现的传送方式。指令不能实现的传送方式。哲众喳绢份慧塌补呵护瘪痘雅蜘啼杉犬狄寿檄汀腹夸讼荧尼给漏箩我赘刺第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式4343 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言对对MOV指令有以下几条具体规定,其中有些规定对其它指指令有以下几条具体规定,其中有些规定对其它指令也同样有效。令也同样有效。(1)两个操作数的数据类型要相同两个操作数的数据类型要相同,要同为,要同为8位、位、16位,位,如:如:MOVBL,AX等是不正确的;等是不正确的;(2

56、)两个操作数不能同时为段寄存器两个操作数不能同时为段寄存器,如:,如:MOVES,DS等;等;(3)代码段寄存器代码段寄存器CS不能为目的操作数,但可作为源操作数不能为目的操作数,但可作为源操作数,如:指令如:指令MOVCS,AX等不正确,但指令等不正确,但指令MOVAX,CS等是正确的;等是正确的;(4)立即数不能直接传给段寄存器立即数不能直接传给段寄存器,如:如:MOVDS,100H等;等;(5)立即数不能作为目的操作数立即数不能作为目的操作数,如:,如:MOV100H,AX等;等;(6)指令指针指令指针IP,不能作为,不能作为MOV指令的操作数指令的操作数;(7)两个操作数不能同时为存储

57、单元两个操作数不能同时为存储单元,如:如:MOVVARA,VARB等,其中等,其中VARA和和VARB是同数据是同数据类型的内存变量。类型的内存变量。沮淮阻磨铱至挝绒惹壹晚光棵模阿谜妒碟呵喻瞳郡赔鹊败吨撞吃矩汹晃憋第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式4444 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言vPUSH进栈指令进栈指令 堆栈是一个重要的数据结构,它具有堆栈是一个重要的数据结构,它具有“先进后出先进后出”的特点,的特点,通常用来保存程序的返回地址通常用来保存程序的返回地址。它主要有两。它主要有两大类

58、操作:大类操作:进栈操作和出栈操作进栈操作和出栈操作。指令格式:指令格式:PUSHReg/Mem一个字进栈,系统自动完成两步操作:一个字进栈,系统自动完成两步操作:SPSP-2,(,(SP)操作数操作数;功功能:能:将寄存器、段寄存器或存储器中的一将寄存器、段寄存器或存储器中的一个字数据压入堆栈,堆栈指针减个字数据压入堆栈,堆栈指针减2。哑肪具砍批栖赖垛徒澳氧躯咀青呛筛吃樊木伊狐堡伤诞连尹棉柞械珠炽枪第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式4545 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言【例】【例】PUS

59、HAX2816A7SS=5000HSS50000堆栈段堆栈段525005250152502SP=2500HSP3125AX283116A7SS=5000HSS50000堆栈段堆栈段525005250152502SP=24FEHSP253125AX525FF525FE(1)执行前)执行前(2)执行后)执行后冀企雹飞吝凋以荐率雇窟稳品冀京涸侩屠痈慈丈彭努澈鹰架颅逸怒茧梭陈第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式4646 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言vPOP进栈指令进栈指令指令格式指令格式:POPRe

60、g/Mem弹出一个字,系统自动完成两步操作:弹出一个字,系统自动完成两步操作:操作数操作数(SP),SPSP+2;功功能能:将栈顶元素弹出送至某一寄存器、段寄将栈顶元素弹出送至某一寄存器、段寄存器(除存器(除CS外)或存储器,堆栈指针加外)或存储器,堆栈指针加2。孔忙旋俺筋柠碟由单谰屋哺炸翔湛抬颈砾桑瘤爆驾弱淖刽奢麻晴姆垫犯骸第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式4747 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言【例】【例】POPBX(1)执执行行前前(2)执执行行后后486B9A28SS50000堆堆栈

61、栈段段510015100251003SP=1000HSP75C1BX51000486B9A28SS50000堆堆栈栈段段510015100251003SP=1002HSP486BBX51000乘塞批汐认惠缴嗓堑磨栓秦沁僚糟剃医虐挥奔骋秉鸣括醛饵痛饥癣框那隔第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式4848 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言vIN输入指令输入指令输入指令用来输入指令用来从指定的外设寄存器取信息送入累从指定的外设寄存器取信息送入累加器加器。它有几种形式:。它有几种形式:长格式:长格式:IN

62、AL,PORT(字节)(字节)INAX,PORT(字)(字)执行操作:(执行操作:(AL)(PORT)(字节)(字节)(AX)(PORT+1,PORT)(字)(字)短格式:短格式:INAL,DX(字节)(字节)INAX,DX(字)(字)执行操作:(执行操作:(AL)(DX)(字节)(字节)(AX)(DX)+1,(DX)(字)(字)舷希油亭范之臂摧孤响喷厕紫己侗梧籍俘杜番粳舷贡椎枣劝惹饯连甭锻隐第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式4949 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言注意:注意:该指令的作用是

63、从端口中读入一个字节该指令的作用是从端口中读入一个字节或字,并保存在寄存器或字,并保存在寄存器AL或或AX中。中。如果某输如果某输入设备的端口地址在入设备的端口地址在0255范围之内,那么,范围之内,那么,可在指令可在指令IN中直接给出,否则,要把该端口地中直接给出,否则,要把该端口地址先存入寄存器址先存入寄存器DX中,然后在指令中由中,然后在指令中由DX来来给出其端口地址。给出其端口地址。座罢幸冗劝唬肾迎掏焚耕赤摔颤押低隅浩爽拭酿拨缮琳宪醒残梗粤与萝蚜第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式5050 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方

64、式指令系统和寻址方式汇编语言汇编语言例如:例如:INAL,60H;从端口;从端口60H读入一个字节到读入一个字节到AL中中INAX,20H;把把端端口口20H、21H按按“高高高高低低低低”组组成成的的字读入字读入AXMOVDX,2F8HINAL,DX;从端口;从端口2F8H读入一个字节到读入一个字节到AL中中INAX,DX;把把端端口口2F8H、2F9H按按“高高高高低低低低”组组成成的字读入的字读入AX绊掉晌霖酗衬英备切冻萝琅姆寐刽域板鳖徽跃傅谭莉吊架跟萝幽犁科皑谨第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式5151 安徽理工大学安徽理工大学第第3章章80x86

65、指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言vOUT输出指令输出指令输出指令用来输出指令用来把累加器的内容送往指定的外设存储器把累加器的内容送往指定的外设存储器,它有,它有几种形式:几种形式:v长格式:长格式:OUTPORT,AL(字节)(字节)OUTPORT,AX(字)(字)执行操作:执行操作:(PORT)(AL)(字节)(字节)(PORT+1,PORT)(AX)()(字)字)v短格式:短格式:OUTDX,AL(字节)(字节)OUTDX,AX(字)(字)执行操作:执行操作:(DX)(AL)(字节)(字节)(DX)+1,(DX)(AX)()(字)字)禄阳莲埋哆律照漓农旧期馋携钮金煮红丙

66、僵响鸿苞征臭谭楔词琉各澈迫木第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式5252 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言注意:注意:该指令的作用是把寄存器该指令的作用是把寄存器AL或或AX的内容输出到指定端的内容输出到指定端口。如果某输出设备的端口地址在口。如果某输出设备的端口地址在0255范围之内,那么,可范围之内,那么,可在指令在指令OUT中直接给出,否则,要把该端口地址先存入寄存中直接给出,否则,要把该端口地址先存入寄存器器DX中,然后在指令中由中,然后在指令中由DX来给出其端口地址。来给出其端口地址。

67、例如:例如:OUT61H,AL;把;把AL的内容输出到端口的内容输出到端口61H中中OUT20H,AX;把;把AX的内容输出到端口的内容输出到端口20H、21H中中MOVDX,3C0HOUTDX,AL;把;把AL的内容输出到端口的内容输出到端口3C0H中中OUTDX,AX;把把AX的的内内容容输输出出到到端端口口3C0H、3C1H中中斩景值眨邱追员踪醋壁所滥疫勒堆辑异疾柠诈吮举邵路舞簧辨过旋季信咬第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式5353 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言vXLAT换码指令换码

68、指令转换指令有转换指令有两个隐含操作数两个隐含操作数BX和和AL。格格式式:XLATOPR或或XLAT执行操作执行操作:(AL)(BX)+(AL)功功能能:其功能是:其功能是把把BX的值作为内存字节数的值作为内存字节数组首地址、下标为组首地址、下标为AL的数组元素的值传送的数组元素的值传送给给AL。酥矾氖滤辉鹅全拄厕姜濒戊境腿耙柜光耗往亢下险卉公殖各城豁忻峡踏凌第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式5454 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言n例:例:MOV BX,offset table ; (B

69、X)=0040H MOV AL,3 XLAT 指令执行后指令执行后 (AL)=33H32H31H33HDS=F000HDS数据段数据段F0040F0041(AL)=3table30H(BX)F0042F0043把把BX的值作为内存字的值作为内存字节数组首地址、下标节数组首地址、下标为为AL的数组元素的值的数组元素的值传送给传送给AL。饵碳舒惹报攘顺漠水溉仪去镐匈搅相劝伙搬沥文绵冉霍誉耳离顽距产浴册第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式5555 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v地址传送指令地址传送

70、指令取有效地址指令取有效地址指令LEA:指指令令LEA是是把把一一个个内内存存变变量量的的有有效效地地址址送送给给指指定定的的寄寄存存器器。其指令格式如下:。其指令格式如下:LEAReg,Mem该指令该指令通常用来对通常用来对指针或变址寄存器指针或变址寄存器BX、DI或或SI等置初值之用等置初值之用。取取段寄存器指令:段寄存器指令:该该组组指指令令的的功功能能是是把把内内存存单单元元的的一一个个“低低字字”传传送送给给指指令令中中指指定定的的16位位寄寄存存器器,把把随随后后的的一一个个“高高字字”传传给给相相应应的的段段寄寄存器存器(DS、ES)。其指令格式如下:。其指令格式如下:LDS/L

71、ESReg,Mem篷楷译喘甥孕琼投繁锨贵船凭疽授患技碴沽军莎惜墟馈供窜人堰胃普临盲第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式5656 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言例:例:LEABX,BX+SI+0F62H LDSSI,10HLESDI,BXMOVBXMOVBX,TABLETABLE; ;(BXBX)=0040H=0040HMOVBXMOVBX,OFFSETTABLEOFFSETTABLE ; ;(BXBX)=1000H=1000HLEABXLEABX,TABLETABLE; ;(BXBX)=100

72、0H=1000HLDSBXLDSBX,TABLETABLE; ;(BXBX)=0040H=0040H; ;(DSDS)=3000H=3000HLESBXLESBX,TABLETABLE; ;(BXBX)=0040H=0040H; ;(ESES)=3000H=3000H40H00H00H30HTABLE3000H:1000H受芳晰嘴徐惜搐碱月赫棉蓑僚饼享牛淑坎偏菇春徐书其真骚谨泞站颐轧猖第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式5757 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v标志寄存器传送指令标志寄存器传送

73、指令标志送标志送AH指令:指令:LAHF执行操作:(执行操作:(AH)(FLAGS的低字节)的低字节)AH送标志寄存器指令:送标志寄存器指令:SAHF执行操作:执行操作:(FLAGS的低字节的低字节)(AH)标志进栈指令:标志进栈指令:PUSHF执行操作:执行操作:(SP)(SP)-2(SP)+1,(SP)(FLAGS)标志出栈标志出栈指令:指令:POPF执行操作:执行操作:(FLAGS)(SP)+1,(SP)(SP)(SP)+2虹柯森红袋露阳愤芽饱段绥改狗呼揩革坯看岔吗致戮乏床咆铡嘘鞭岛樱哦第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式5858 安徽理工大学安徽理工

74、大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v类型转换指令指令类型转换指令指令CBWALAX执行操作:执行操作:若(若(AL)的最高有效位为)的最高有效位为0,则(,则(AH)=00H若(若(AL)的最高有效位为)的最高有效位为1,则(,则(AH)=FFHCWDAX(DX,AX)执行操作:执行操作:若(若(AX)的最高有效位为)的最高有效位为0,则(,则(DX)=0000H若(若(AX)的最高有效位为)的最高有效位为1,则(,则(DX)=FFFFH例例:(AX)=0BA45HCBW;(AX)=0045HCWD;(DX)=0FFFFH(AX)=0BA45H橇啊胶悔

75、苟强牧货繁揣诫冻伴义察陨诲维徊甜喻戒老恒痉炽晕与讽自勒攀第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式5959 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言3.算术指算术指令令算算术术运运算算指指令令是是反反映映CPU计计算算能能力力的的一一组组指指令令,也也是是编编程程时时常常使使用用的的一一组组指指令令。它它包包括括:加加、减减、乘乘、除除及及其其相相关关的的辅辅助助指指令。令。该该组组指指令令的的操操作作数数可可以以是是8位位、16位位。当当存存储储单单元元是是该该类类指指令令的的操操作作数数时时,该该操操作作

76、数数的的寻寻址址方方式式可可以以是是任任意意一一种种存存储储单单元元寻寻址址方方式式。v加法加法指令指令ADD、ADC、INCv减法减法指令指令SUB、SBB、DEC、NEG、CMPv乘法乘法指令指令MUL、IMULv除法除法指令指令DIV、IDIVv十十进进制制调调整整指指令令DAA、DAS、AAA、AAS、AAM、AAD枉渝林瞄质州因描塑唤笔鹰端悟韭声放冒兑吏俏禁须玖嗡枉吕两瘪掐雄磊第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式6060 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言1. .加法指令加法指令v加法指

77、令:加法指令:ADDDST,SRC功功能能:将将目目的的操操作作数数与与源源操操作作数数相相加加,结结果果存存入入目目的的地地址址中中,源源地址的内容不改变。地址的内容不改变。执行操作:执行操作:(DST)(SRC)+(DST)v带进位加法指令:带进位加法指令:ADCDST,SRC功功能能:将将目目的的操操作作数数加加源源操操作作数数再再加加低低位位进进位位,结结果果送送目目的的地地址址。执行操作:执行操作:(DST)(SRC)+(DST)+CFv加加1指令:指令:INCOPR功能:将目的操作数加功能:将目的操作数加1,结果送目的地址。,结果送目的地址。执行操作:执行操作:(OPR)(OPR)

78、+1注意注意:除除INC指令不影响指令不影响CF标志外,均对条件标志位有影响。标志外,均对条件标志位有影响。集彪漂取禄度了闲陌撅偷捻尹瘴樊晾觉篮绿荡扫很妓戒蔽捕镐泰啥召脯芯第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式6161 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v标志寄存器标志寄存器FLAGS的介绍的介绍指令的执行与标志有很大关系。指令的执行与标志有很大关系。标志分成两类:标志分成两类:n状态标志状态标志用来记录程序运行结果的状态信息,许多指令用来记录程序运行结果的状态信息,许多指令的执行都将相应地设置它。

79、它们分别是:的执行都将相应地设置它。它们分别是:CFZFSFPFOFAFn控制标志控制标志可由程序根据需要用指令设置,用于控制处理可由程序根据需要用指令设置,用于控制处理器执行指令的方式。它们分别是:器执行指令的方式。它们分别是:DFIFTF1514131211109876543210OFDFIFTFSFZFAFPFCF基鸵俞逮贪氏赠厉励搪凤侯猎铝赏撮检苦崎壮爷垢捣讶寒毗汇乃索陈搁痉第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式6262 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v进位标志进位标志CF(CarryF

80、lag)当运算结果的最高有效位有进位(加法)或借位当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置(减法)时,进位标志置1,即,即CF=1;否则;否则CF=0。例如:例如:3AH+7CHB6H,没有进位:,没有进位:CF=0AAH+7CH(1)26H,有进位:,有进位:CF=1搀东喷据招茫取顺苔澄宅泌践踪溯砖晓腹蹭倚萧搽雇亦刽莎唆击勒汹武旨第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式6363 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v零标志零标志ZF(ZeroFlag)若运算结果为若运算结果为0

81、,则,则ZF=1,否则,否则ZF=0。例如:例如:3AH+7CHB6H,结果不是零:,结果不是零:ZF=086H+7CH(1)00H,结果是零:,结果是零:ZF=1注意:注意:ZF为为1表示的结果是表示的结果是0。哪官腥谍坟苔册款尘快纂丽袒蚁怨桅澡火垢翼瓦专范毅俘派及监掷砸栖橱第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式6464 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v符号标志符号标志SF(SignFlag)运算结果最高位为运算结果最高位为1,则,则SF=1;否则;否则SF=0。例如:例如:3AH+7CHB6

82、H,最高位,最高位D71:SF=186H+7CH(1)00H,最高位,最高位D70:SF=0注意:有符号数据利用最高有效位表示数据的符号。所注意:有符号数据利用最高有效位表示数据的符号。所以,最高有效位就是符号标志的状态。以,最高有效位就是符号标志的状态。衍稻烙秋磷怖铱烫廉槛涂丸纶吁搅公铅涸秤驾酷租袋熊仁慈集费优异赦锚第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式6565 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v奇偶标志奇偶标志PF(ParityFlag)当运算结果最低字节中当运算结果最低字节中“1”的个数为零

83、或偶数时,的个数为零或偶数时,PF=1;否则;否则PF=0。例如:例如:3AH+7CHB6H10110110B,结果中有结果中有5个个1,是奇数:,是奇数:PF=0注意:注意:PF标志仅反映最低标志仅反映最低8位中位中“1”的个数是偶或奇,的个数是偶或奇,即使是进行即使是进行16位字操作。位字操作。靳挽潮眶堰钮健晌细祸诡仙益抒市扳敷辣埂粕泊寝犬肤湍捌镭倚稻绽倪噶第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式6666 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v辅助进位标志辅助进位标志AF(AuxiliaryCarr

84、yFlag)运算时运算时D3位(低半字节)有进位或借位时,位(低半字节)有进位或借位时,AF=1;否则;否则AF=0。例如:例如:3AH+7CHB6H,D3有进位:有进位:AF=1注意:这个标志主要由处理器内部使用,用于十进制算注意:这个标志主要由处理器内部使用,用于十进制算术运算指令中,用户一般不必关心。术运算指令中,用户一般不必关心。署阉翘弘笋眩寒袖畦旨馁悔磅宾驳云椎祖诲缓创苏宛骸玫翔跳学品菱亮屯第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式6767 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v溢出标志溢出标志

85、OF(OverflowFlag)若算术运算的结果有溢出,则若算术运算的结果有溢出,则OF=1;否则;否则OF0。例如:例如:3AH+7CHB6H,产生溢出:,产生溢出:OF=1AAH+7CH(1)26H,没有溢出:,没有溢出:OF=0问题:问题:什么是溢出?什么是溢出?溢出和进位有什么区别?溢出和进位有什么区别?如何判断是否溢出?如何判断是否溢出?账雹钉令箩都藻冶剩鲤廉甩亏弗毁验碌燃卸阉消虎卧额亢鼻贼彪吸筛心膨第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式6868 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言举例举例

86、:n=8bit带符号数(带符号数(-128127),无符号数(无符号数(0255)00000100+0000101100001111带:带:(+4)+(+11)=+15OF=0无:无:4+11=15CF=0带符号数和无符号数都不溢出带符号数和无符号数都不溢出00001001+0111110010000101带带:(+9)+(+124)=-133OF=1无无:9+124=133CF=0带符号数溢出带符号数溢出无符号数溢出无符号数溢出00000111+11111011100000010带:带:(+7)+(-5)=+2OF=0无:无:7+251=258CF=1带符号数和无符号数都溢出带符号数和无符号

87、数都溢出10000111+11110101101111100带:带:(-121)+(-11)=+134OF=1无:无:135+245=124CF=1CF位表示无符号数相加的溢出。位表示无符号数相加的溢出。OF位表示带符号数相加的溢出。位表示带符号数相加的溢出。哑厌粗救符蓖燕拣纹剩粕易讽棚蓉扇辽堵掏天咱耕阎炸赎萌绦既欧慕币胸第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式6969 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言【例【例1】加】加1指令。指令。INCBX;(;(BX)+1BX。【例例2】双双字字加加法法运运算

88、算,设设目目的的操操作作数数存存放放在在DX和和AX寄寄存存器器中中,其其中中DX放放高高位位字字,源源操操作作数数存存放放在在BX和和CX寄寄存存器器中中,其其中中BX放放高高位位字字,指指令令执执行行前前:(DX)=0020H,(AX)=0F365H,(,(BX)=0005H,(,(CX)=0E024H。ADDAX,CX;(;(AX)=0D389H,CF=1ADCDX,BX;(;(DX)=0008H,CF=0桔鼻您祷蓑带隔挖沂额吹眺电型智文熊傻乓沏纱田棵皋孽临君锚袁婚缔技第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式7070 安徽理工大学安徽理工大学第第3章章80

89、x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言2. .减法指令减法指令v减法指令:减法指令:SUBDST,SRC功功能能:目目的的操操作作数数减减去去源源操操作作数数,结结果果存存于于目目的的地地址址,源源地地址址的内容不变。的内容不变。执行操作:执行操作:(DST)(DST)-(SRC)v带借位减法指令:带借位减法指令:SBBDST,SRC功功能能:目目的的操操作作数数减减源源操操作作数数再再减减低低位位借借位位CF,结结果果送送目目的的地地址址执行操作:执行操作:(DST)(DST)-(SRC)-CFv减减1指令:指令:DECOPR功能:将目的操作数减功能:将目的操作数减1,结

90、果送目的地址。,结果送目的地址。执行操作:执行操作:(OPR)(OPR)-1扬苍毙饱悲忿拄闷啥零炒颠肪煞挠淄葫衔漓室立甫魔垫陀铸霜管膛炬异畔第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式7171 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v减法指令对条件标志位的影响:减法指令对条件标志位的影响:CF位表示无符号数减法的溢出。位表示无符号数减法的溢出。OF位表示带符号数减法的溢出。位表示带符号数减法的溢出。1被减数的最高有效位有向高位的借位被减数的最高有效位有向高位的借位0否则否则CF=1两个操作数符号相反,而结果的

91、符号与减数相同两个操作数符号相反,而结果的符号与减数相同0否则否则OF=存抵阂沉姨肤敏盆女吱庄邦狄记轨掐陨剔馆傈楔汪胸娶且哈硕贱探铃高厂第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式7272 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言2. .减法指令减法指令v求补指令:求补指令:NEGOPR功功能能:将将目目的的操操作作数数的的每每一一位位求求反反(包包括括符符号号位位)后后加加1,结结果果送目的地址。送目的地址。执行操作:执行操作:(OPR)-(OPR)v比较指令:比较指令:CMPOPR1,OPR2功功能能:目目

92、的的操操作作数数减减源源操操作作数数,结结果果只只影影响响标标志志位位,不不送送入入目目的的地址。地址。执行操作:执行操作:(OPR1)-(OPR2)注意注意:除除DEC指令不影响指令不影响CF标志外,均对条件标志位有影响。标志外,均对条件标志位有影响。垛浚尝钻碰骇哀惮孵凝啤邪贪息六受勉灶霜射女灵询溶狗汽辉债哟鉴过口第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式7373 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言【例【例1】求补运算。】求补运算。MOVDX,6780HNEGDX;(;(DX)=9880H【例【例2】

93、比较】比较AL的内容数值大小。的内容数值大小。CMPAL,50;(;(AL)-50JBBellow;(;(AL)=50,(,(AL)50ALINCAH;(;(AH)+1AHBellow: 0000H-)6780HCF19880H猿爪扼聂威呼镰霸约袖普监撮争膏委总鬃仍唁傲横秩淖惑绪涯美泳张罩失第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式7474 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言3. .乘法指令乘法指令v无符号数乘法指令:无符号数乘法指令:MULSRCv带符号数乘法指令:带符号数乘法指令:IMULSRC功功

94、能能:若若是是字字节节数数据据相相乘乘,(AL)与与SRC相相乘乘得得到到字字数数据据存存入入AX中中;若若是是字字数数据据相相乘乘,则则(AX)与与SRC相相乘乘得得到到双双字数据,高字存入字数据,高字存入DX、低字存入、低字存入AX中中。执行操作:执行操作:字节操作数字节操作数(AX)(AL)(SRC)字操作数字操作数(DX,AX)(AX)(SRC)注注:IMUL指指令令除除计计算算对对象象是是带带符符号号二二进进制制数数外外,其其他他都都与与MUL一样,但计算结果不同。一样,但计算结果不同。痕墙犊哩弘寥匹皆女纬库靳翔胀香轮晤牡瓶瞒刑滔囱穷娱咯副拐惠那葵荚第3部分80x86指令系统和寻址方

95、式第3部分80x86指令系统和寻址方式7575 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v乘法指令如下影响乘法指令如下影响OF和和CF标志:标志:MUL指令指令若乘积的高一半(若乘积的高一半(AH或或DX)为)为0,则则OF=CF=0;否则;否则OF=CF=1。(用来检查字节相乘的。(用来检查字节相乘的结果是字节还是字,或字相乘的结果是字还是双字)结果是字节还是字,或字相乘的结果是字还是双字)IMUL指令指令若乘积的高一半是低一半的若乘积的高一半是低一半的符号扩符号扩展展,则,则OF=CF=0;否则均为;否则均为1。v乘法指令对其他状态标

96、志没有定义:乘法指令对其他状态标志没有定义:指令执行后这些标志是任意的、不可预测(就是谁指令执行后这些标志是任意的、不可预测(就是谁也不知道是也不知道是0还是还是1)。)。对标志没有影响是指令的执行不改变标志的状态。对标志没有影响是指令的执行不改变标志的状态。公蚤登漳联潭价蹄郝世语毁遁图忍鲜瞬硫溺硫杖苗撕惫榷底岳菲薪认宿锡第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式7676 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言例:例:无符号乘法:无符号乘法:MOVAL,0B4H;AL=B4H=180MOVBL,11H;BL

97、=11H=17MULBL;AX=OBF4H=3060,;,;OF=CF=1;AX高高8位不为位不为0有符号乘法:有符号乘法:MOVAL,0B4H;AL=B4H=76MOVBL,11H;BL=11H=17IMULBL;AX=FAF4H=1292,;,;OF=CF=1;AX高高8位含有效数字位含有效数字脊努凤费噪浪菊怎韧誓酱帕驻驳爹泛上廊迢抽壁尸枣备库哟啄尸痛淡宵君第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式7777 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言编写程序段,完成下面计算公式,并把所得的商和余数分别存入编

98、写程序段,完成下面计算公式,并把所得的商和余数分别存入X和和Y中中(其中:其中:A,B,C,X和和Y都是有符号的字变量都是有符号的字变量)。(C-120+A*B)/C解:解:ADW?BDW?CDW?XDW?YDW?MOVAX,CSUBAX,120D;书写指令书写指令“ADDAX,-120D”也可以也可以CWDMOVCX,DXMOVBX,AX;(CX,BX)(DX,AX),调度寄存器,为作乘法准备必要的寄存器,调度寄存器,为作乘法准备必要的寄存器MOVAX,AIMULB;(DX,AX)A*BADDAX,BX ;计算计算32位二进制之和,为作除法作准备位二进制之和,为作除法作准备ADCDX,CXI

99、DIVC;AX是商,是商,DX是余数是余数MOVX,AX;分别保存商和余数到指定的字变量单元里分别保存商和余数到指定的字变量单元里MOVY,DX黔序敌枫旷戒徘栏诅咽昌桓呀搜矽爪灌烹詹大陌楔铲瓶萧叠跌在颜帮羞账第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式7878 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言4. .除法指令除法指令v无符号数除法指令:无符号数除法指令:DIVSRCv带符号数除法指令:带符号数除法指令:IDIVSRC执行操作:执行操作:字节操作字节操作(AL)(AX)/(SRC)的商)的商(AH)(AX

100、)/(SRC)的余数的余数字操作字操作(AX)(DX,AX)/(SRC)的商)的商(DX)(DX,AX)/(SRC)的的余数余数注注意意:除除法法指指令令DIV和和IDIV虽虽然然对对标标志志的的影影响响未未定定义义,但但可可产生溢出。产生溢出。简舒奴值损亏嘴押番恰寄矩塞狰啸硼动斗绎婚喜烂暇巧泄构窘郭摩抵筏垒第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式7979 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言例:例:无符号除法:无符号除法:MOVAX,0400H;AX=400H=1024MOVBL,0B4H;BL=B4

101、H=180DIVBL;商;商AL05H5;余数;余数AH7CH124有符号除法:有符号除法:MOVAX,0400H;AX=400H=1024MOVBL,0B4H;BL=B4H=76IDIVBL;商;商ALF3H13;余数;余数AH24H36注:带符号除法的余数符号和被除数符号相同。注:带符号除法的余数符号和被除数符号相同。院买榆柬他怎洞孵棠汪玄站析漳痘柴孤鹅裸怜凭急埃淋粳瓷榨树桨袋锁势第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式8080 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言当被除数远大于除数时,所得的商就有

102、可能超出它所当被除数远大于除数时,所得的商就有可能超出它所能表达的范围。如果存放商的寄存器能表达的范围。如果存放商的寄存器AL/AX不能表达,不能表达,便产生溢出,便产生溢出,8086CPU中就产生编号为中就产生编号为0的内部中断的内部中断除法错中断。除法错中断。说明:说明:(1)对)对DIV指令,除数为指令,除数为0,或者在字节除时商超过,或者在字节除时商超过8位,或者在字除时商超过位,或者在字除时商超过16位,则发生除法溢出。位,则发生除法溢出。(2)对)对IDIV指令,除数为指令,除数为0,或者在字节除时商不在,或者在字节除时商不在-128127范围内,或者在字除时商不在范围内,或者在字

103、除时商不在-3276832767范围内,则发生除法溢出。范围内,则发生除法溢出。缨薯蹦立罩嘉绥兼陆挨遁员谈陆峭螺树圾拒渠拴拿桶关衙哪咱父段措原了第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式8181 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言5. .十进制调整指令十进制调整指令BCD码(码(8421码):用二进制编码的十进制数,又称二码):用二进制编码的十进制数,又称二-十进制数。十进制数。压缩的压缩的BCD码:用码:用4位二进制数表示位二进制数表示1位十进制数。位十进制数。例例:(59)10(01011001)B

104、CD非压缩的非压缩的BCD码:用码:用8位二进制数表示位二进制数表示1位十进制数位十进制数例:(例:(59)10(0000010100001001)BCD尺谚履匡挞建翟劣绑碌蜘蹋耍象撵痴圣骇酵刺总述划蹿弊韦蚀谩侦彩刃荐第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式8282 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言问题的提出:问题的提出:19000110012700100001+110=00100111+08+00001000(00100111)BCDAF=112000100103500110101+23+0010

105、0011(00110101)BCD思考:思考:51+83=?针扩好吩牺菇另驮园养饱铀坪涤苦蚁借淄廷结慷秽妆黔惭纳逝郁喳拧罐掸第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式8383 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言5. .十进制调整指令十进制调整指令(1)压缩的)压缩的BCD码调整指令码调整指令vDAA加法的十进制调整指令加法的十进制调整指令vDAS减法的十进制调整指令减法的十进制调整指令(2)非压缩的)非压缩的BCD码调整指令码调整指令vAAA加法的加法的ASCII码调整指令码调整指令vAAS减法的减法的

106、ASCII码调整指令码调整指令vAAM乘法的乘法的ASCII码调整指令码调整指令vAAD除法的除法的ASCII码调整指令码调整指令荚晤守懒蓄腑铸屑肯丛谢埋远天隋氰舞捕歧蔚音猎倡钟吼丰则眩初允屹嫂第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式8484 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v 加法的十进制调整指令加法的十进制调整指令DAADAA语句格式:语句格式:DAA如如果果AL寄寄存存器器中中低低4位位大大于于9或或辅辅助助进进位位AF=1,则则AL=AL+6且且AF=1;如如果果AL=0A0H或或CF=1,

107、则则AL=AL+60H且且CF=1。同同时时,SF、ZF、PF均有影响。均有影响。【例】压缩【例】压缩BCD码的加法运算。码的加法运算。MOVAL,68H ;(;(AL)=68H,表示压缩,表示压缩BCD码码68MOVBL,28H ;(;(BL)=28H,表示压缩,表示压缩BCD码码28ADDAL,BL;二进制加法:(;二进制加法:(AL)=68H+28H=90HDAA;十进制调整:(;十进制调整:(AL)=96H;实现压缩;实现压缩BCD码加法:码加法:68+28=96注注:使使用用DAADAA或或DASDAS指指令令前前,应应先先执执行行以以ALAL为为目目的的操操作作数数的的加加法法或或

108、减减法法指指令。令。垫诌迅絮旬澎未媚恕皿度喧营情美骆炒欧滚混僳纫咬点茂级逗糟轧湘师老第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式8585 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v 减法的十进制调整指令减法的十进制调整指令DASDAS语句格式:语句格式:DAS具具体体实实现现:如如果果AF=1或或AL寄寄存存器器中中低低4位位大大于于9,则则AL=AL6且且AF=1;如如果果AL=0A0H或或CF=1,则则AL=AL60H且且CF=1。同同时时SF、ZF、PF均受影响。均受影响。【例】压缩【例】压缩BCD码的减

109、法运算。码的减法运算。MOVAL,68H;(;(AL)=68H,表示压缩,表示压缩BCD码码68MOVBL,28H;(;(BL)=28H,表示压缩,表示压缩BCD码码28SUBAL,BL;二进制减法:(;二进制减法:(AL)=68H28H=40HDAS;十进制调整:(;十进制调整:(AL)=40H;实现压缩;实现压缩BCD码减法:码减法:6828=40穗淘识甸题酚屑错拄豢岸琼伙椒嫡递釜薛咀备霸奶衬盂狱侮惟猛铬喉增莎第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式8686 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v加

110、法的加法的ASCII调整指令调整指令AAA语句格式:语句格式:AAA功能:如果功能:如果AL的低的低4位大于位大于9或或AF=1,则:,则:AL=AL+6,AH=AH+1,AF=CF=1,且且AL高高4位清零。位清零。否则:否则:CF=AF=0,AL高高4位清零。位清零。【例】【例】MOVAX,0608H;AX=0608H,非非压压缩缩BCD码码表表示示真真值值68MOVBL,09H ;BL=09H,非压缩,非压缩BCD码表示真值码表示真值9ADDAL,BL;二进制加法:;二进制加法:AL=08H+09H=11HAAA;十进制调整:;十进制调整:AX=0707H;实现非压缩;实现非压缩BCD码

111、加法:码加法:68977朴戒楼缕眩纪太枉这桨下耀嚷阉级姜悦栽北娥拿真息为独掖仆境识倡贰弛第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式8787 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v减法的减法的ASCII调整指令调整指令AAS语句格式:语句格式:AAS功能:如果功能:如果AL的低的低4位大于位大于9或或AF=1,则:,则:AL=AL6,AH=AH1,AF=CF=1,AL高高4位清零。位清零。否则:否则:CF=AF=0,AL高高4位清零。位清零。其他标志位其他标志位OF、PF、SF、ZF不确定。不确定。【例】【

112、例】MOVAX,0608H;AX=0608H,非压缩,非压缩BCD码表示真值码表示真值68MOVBL,09H ;BL=09H,非压缩,非压缩BCD码表示真值码表示真值9SUBAL,BL;二进制减法:;二进制减法:AL=08H09H=FFHAAS;十进制调整:;十进制调整:AX=0509H;实现非压缩;实现非压缩BCD码减法:码减法:680959注注:使使用用DAADAA或或DASDAS指指令令前前,应应先先执执行行以以ALAL为为目目的的操操作作数数的的加加法法或或减减法法指令。指令。舜评覆议畔噬拉节晴糊井派般禹偿市豢仓律誉陋狮绪嫌晕乃桐涸谁夹鸡讼第3部分80x86指令系统和寻址方式第3部分8

113、0x86指令系统和寻址方式8888 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言3.逻辑指逻辑指令令逻辑指令包括逻辑指令包括逻辑运算指令逻辑运算指令和和移位操作指令移位操作指令两大类。两大类。其中其中逻辑运算指令逻辑运算指令是一组重要的指令,它包括:是一组重要的指令,它包括:逻辑与逻辑与(AND)、逻辑或()、逻辑或(OR)、逻辑非(、逻辑非(NOT)和异或指令)和异或指令(XOR),逻辑运算指令也是经常使用的指令。,逻辑运算指令也是经常使用的指令。移位操作指令移位操作指令是另一组经常使用的指令,它包括是另一组经常使用的指令,它包括算术移位、

114、算术移位、逻辑移位逻辑移位、双精度移位、循环移位和带进位的循环移位双精度移位、循环移位和带进位的循环移位等五大等五大类。类。校绿究劝概淘橱该橙橱蠕民植到稚锄叉峨仅兹沿苔若釜纱阅畔专刨牟方戈第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式8989 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言1.逻辑运算指令逻辑运算指令v逻辑与指令:逻辑与指令:ANDDST,SRC功功能:把源操作数中的每位二进制与目的操作数中的相应二进能:把源操作数中的每位二进制与目的操作数中的相应二进制进行逻辑制进行逻辑“与操作与操作”,操作结果存入目

115、标操作数中。,操作结果存入目标操作数中。执行操作:执行操作:(DST)(DST) (SRC)用途:用途:该指令用于清除目的操作数中与源操作数置该指令用于清除目的操作数中与源操作数置0的对应位的对应位。【例】已知(【例】已知(BH)=67H,要求把其的第,要求把其的第0、1和和5位置为位置为0。解解:可可以以构构造造一一个个立立即即数数,其其第第0、1和和5位位的的值值为为0,其其它它位位的的值为值为1,该立即数即为:,该立即数即为:0DCH或或11011100B,然后用指令,然后用指令“ANDBH,0DCH“来实现此功能。来实现此功能。顾敬罩蛙王锁痒戊翰硼捧氧眨掇丫礁孤驾舞柔丛郑孵矾但丰察爬忍

116、货括腥第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式9090 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v逻辑或指令:逻辑或指令:ORDST,SRC功功能:把源操作数中的每位二进制与目的操作数中的相应二能:把源操作数中的每位二进制与目的操作数中的相应二进制进行逻辑进制进行逻辑或操作或操作,操作结果存入目标操作数中。,操作结果存入目标操作数中。执行操作:执行操作:(DST)(DST) (SRC)用途:用途:该指令用于设置目的操作数中与源操作数置该指令用于设置目的操作数中与源操作数置1的对应位。的对应位。【例】已知(【

117、例】已知(BL)=46H,要求把其的第,要求把其的第1、3、4和和6位置为位置为1。解解:构构造造一一个个立立即即数数,使使其其第第1、3、4和和6位位的的值值为为1,其其它它位位的值为的值为0,该立即数即为:,该立即数即为:5AH或或01011010B,然后用指令,然后用指令“ORBL,5AH来实现此功能。来实现此功能。剖宋谦残岂威猪踏瑶匿缔飞玄被勉海陀骆搞脾册创舱快畏踩屁货汗粟宠榜第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式9191 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v逻辑非指令:逻辑非指令:NOTO

118、PR*OPR不能为立即不能为立即数数功能:将目的地址中的内容逐位取反后送入目的地址。功能:将目的地址中的内容逐位取反后送入目的地址。执行操作:执行操作:(OPR) (OPR)【例】逻辑非运算【例】逻辑非运算。MOVAX,878AH ;(;(AX)=878AHNOTAX, ;(;(AX)=7875H倾谷烬熏列仕琵靖榷鸥绅逻褐蛮柄占使让见麻岿爪李净由嘴归哥棺堕孽澄第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式9292 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v异或指令:异或指令:XORDST,SRC功能:把源操作数中

119、的每位二进制与目的操作数中的相应功能:把源操作数中的每位二进制与目的操作数中的相应二进制进行逻辑二进制进行逻辑“异或操作异或操作”,操作结果存入目标操作数,操作结果存入目标操作数中。中。执行操作:执行操作:(DST)(DST) (SRC)【例】已知(【例】已知(AH)=46H,要求把其的第,要求把其的第0、2、5和和7位的二位的二进制值变反进制值变反。解解:构构造造一一个个立立即即数数,使使其其第第0、2、5和和7位位的的值值为为1,其其它它位位的的值值为为0,该该立立即即数数即即为为:0A5H或或10100101B,然然后后再再用用指令指令“XORAH,0A5H”来实现此功能。来实现此功能。

120、泼匣尽辙舞雁仪股赋辟蜘掺瘪靛镶合倚忙抱怎昧程招宇芥凭椅磐祸寡哟舀第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式9393 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v测试指令:测试指令:TESTOPR1,OPR2功能:功能:把二个操作数进行把二个操作数进行逻辑逻辑“与与”操作,并根据操作,并根据运算运算结果设置相应的标志位结果设置相应的标志位,但,但并不保存该运算结并不保存该运算结果果,所以,不会改变指令中的操作数。,所以,不会改变指令中的操作数。执行操作:执行操作:(OPR1) (OPR2)【例】【例】测试测试AX

121、中的第中的第12位是否为位是否为0,不为,不为0则转则转L。TESTAX,1000HJNELL:寐衣圆慨划蹿百钟旨喀碟擅郑维哑盎摸种视辕角变亏箩帚抛须沼滔眶篮剪第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式9494 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言2.移位指令移位指令移移位位指指令令包包括括算算术术移移位位指指令令、逻逻辑辑移移位位指指令令和和循循环环移移位位指指令令,分分别别进进行行左左移移和和右右移移操操作作。这这些些指指令令均均有有统统一的语句格式:一的语句格式:标号标号:操作符操作符OPR,1或或

122、标号标号:操作符操作符OPR,CL其其功功能能为为将将目目的的操操作作数数的的所所有有位位按按操操作作符符规规定定的的方方式式移移动动1位位或或按按寄寄存存器器CL规规定定的的次次数数(0255)移移动动,结结果果送送入入目目的的地地址址。目目的的操操作作数数是是8位位(或或16位位)的的寄寄存存器器数据或存储器数据。数据或存储器数据。达储膳由糠替睁抓屁冬沂裸采询钉艇抄仍惺仓歇缸泊软目剂闯贬酒执佩涣第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式9595 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言算算术术移移位位指指

123、令令有有:算算术术左左移移SAL(ShiftAlgebraicLeft)和和算算术术右移右移SAR(ShiftAlgebraicRight)。它们的指令格式如下:)。它们的指令格式如下:SAL/SAROPR,CL/Imm受影响的标志位:受影响的标志位:CF、OF、PF、SF和和ZF(AF无定义)无定义)。功能功能:算算术术左左移移SAL把把目目的的操操作作数数的的低低位位向向高高位位移移,空空出出的的低低位位补补0;算算术术右右移移SAR把把目目的的操操作作数数的的高高位位向向低低位位移移,空空出出的的高高位位用用最高位(符号位)填补最高位(符号位)填补。CFOPR0CFOPR算术左算术左移移

124、算术左算术左移移算术移位指令算术移位指令常用于带符号数常用于带符号数*2或或/2霓呻际宫百肩刽神校暑膛瞩戴非灭暴旭踩祈摩吵夹蛹廖为啃菜全绥伺猴杀第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式9696 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言逻逻辑辑左左移移SHL(ShiftLogicalLeft)和和逻逻辑辑右右移移SHR(ShiftLogicalRight)。)。它们的指令格式如下:它们的指令格式如下:SHL/SHROPR,CL/Imm受影响的标志位:受影响的标志位:CF、OF、PF、SF和和ZF(AF无定义)

125、。无定义)。逻逻辑辑左左移移/右右移移指指令令只只有有它它们们的的移移位位方方向向不不同同,移移位位后后空空出出的的位位都补都补0。CFOPR0CFOPR0逻辑左移逻辑左移逻辑右移逻辑右移逻辑移位指令逻辑移位指令常用于无符号数常用于无符号数*2或或/2拼阅卸弧呢鸵蔡绊箩赡掠懊果挽船细飘蔗晶擞信姿酞倍误宰犯蹋氛叼孟悠第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式9797 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言循环移位指令有:循环移位指令有:循循环环左左移移ROL(Rotate Left)和和循循环环右右移移ROR

126、(RotateRight)。)。指令的格式:指令的格式:ROL/ROROPR,CL/Imm受影响的标志位:受影响的标志位:CF和和OF循循环环左左移移/右右移移指指令令只只是是移移位位方方向向不不同同,它它们们移移出出的的位位不不仅仅要进入要进入CF,而且还要填补空出的位。,而且还要填补空出的位。CFOPRCFOPR循环左循环左移移循环右循环右移移邢著木疗矮千庞虱孕哺复步丽庙灶本呢硕但躺裂僻宿棉寓政淋坟肋内休貌第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式9898 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言带带 进

127、进 位位 的的 循循 环环 移移 位位 指指 令令 有有 : 带带 进进 位位 的的 循循 环环 左左 移移RCL(RotateLeftThroughCarry)和和带带进进位位的的循循环环右右移移RCR(RotateRight)。)。指令的格式:指令的格式:RCL/RCROPR,CL/Imm受影响的标志位:受影响的标志位:CF和和OF带带进进位位的的循循环环左左移移右右移移指指令令只只有有移移位位的的方方向向不不同同,它它们都用原们都用原CF的值填补空出的位,移出的位再进入的值填补空出的位,移出的位再进入CF。CFOPRCFOPR带进位循环左带进位循环左移移带进位循环带进位循环右移右移彻汽疑

128、绊雄嗅伞乳琉增豫芋咯刑仟入蹦灼逞贤矮讽行杖辩符妥护酷崎稍搞第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式9999 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言2.移位指令移位指令例:移位指令可实现乘法功能例:移位指令可实现乘法功能MOVSI,AXSHLSI,1 ;SI2AXADDSI,AX;SI3AXMOVDX,BXMOVCL,03HSHLDX,CL;DX8BXSUBDX,BX;DX7BXADDDX,SI;DX7BX3AX注注:(:(1)逻辑左移一位相当于无符号数乘以逻辑左移一位相当于无符号数乘以2,(2)逻辑右移一

129、位相当于无符号数除以)逻辑右移一位相当于无符号数除以2。询旦宠动一墓盟醛绽再懦纬承涌磁饲辣灌厢庐矫撬驱捕亩躯旦州岿爸绎蓖第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式100100 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言3.串处理指令串处理指令字字符符串串操操作作指指令令的的实实质质是是对对一一片片连连续续存存储储单单元元进进行行处处理理,这这片片存存储储单单元元是是由由隐隐含含指指针针DS:SI或或ES:DI来来指指定定的的。字字符符串串操操作作指指令令可可对对内内存存单单元元按按字字节节或或字字进进行行处处理

130、理,并并能能根根据据操操作作对对象象的的字字节节数数使使变变址址寄寄存存器器SI(和和DI)增增减减1或或2。具具体体规规定定如下:如下:(1)当)当DF=0时,变址寄存器时,变址寄存器SI(和(和DI)增加)增加1或或2;(2)当当DF=1时,变址寄存器时,变址寄存器SI(和(和DI)减少)减少1或或2。在在后后面面各各指指令令中中,有有关关变变址址寄寄存存器器都都按按上上述述规规定定进进行行增增减减,不再一一说明。不再一一说明。奸侣稳北凛玻吧龚证淑你雷通烘离涸亏勿礼酱锋蒸傈勃旧腐商贺爵柔都无第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式101101 安徽理工大学安

131、徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言1.与与REP配合工作的配合工作的MOVS/STOS/LODS的指令的指令v重复前缀指令重复前缀指令REP重重复复前前缀缀指指令令是是重重复复其其后后的的字字符符串串操操作作指指令令,重重复复的的次次数数由由CX来决定来决定。其一般格式为:。其一般格式为:REPMOVS/STOS/LODS重复前缀指令的执行步骤如下:重复前缀指令的执行步骤如下:(1)判断:)判断:CX=0;(2)如如果果CX=0,则则结结束束重重复复操操作作,执执行行程程序序中中的的下下一一条条指指令令;(3)否否则则,CX=CX-1(不不影影响

132、响有有关关标标志志位位),并并执执行行其其后后的的字字符串操作指令,在该指令执行完后,再转到步骤(符串操作指令,在该指令执行完后,再转到步骤(1)。祝屎按琐彩雨姚掺蹬鲤赞菜锄鼻眨烟游须堰里补约诵房舍确得狭执阀逗证第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式102102 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v字符串传送指令字符串传送指令(MoveStringInstruction)功能:将以功能:将以SI为指针的源串中的一个字节(或字)存储单元中为指针的源串中的一个字节(或字)存储单元中的数据传送至以的数据传

133、送至以DI为指针的目的地址中去,并自动修改指针,为指针的目的地址中去,并自动修改指针,使之指向下一个字节(或字)存储单元。即:使之指向下一个字节(或字)存储单元。即:(DS:SI)ES:DI。当当DF=0时,(时,(SI)和()和(DI)增量。)增量。当当DF=1时,(时,(SI)和()和(DI)减量。)减量。指令的格式:指令的格式:MOVSDST,SRC(需在操作数中表明数据格式)(需在操作数中表明数据格式)MOVSB(字节)(字节)MOVSW(字)(字)注注字节操作字节操作:(:(SI)(SI)1,(DI)(DI)1字字操操作:作:(SI)(SI)2,(DI)(DI)2巧幽构蓖自限丸呜箱喂

134、抠揭送演美孰惑谈褥趁僧涸乾却临凰勉绳疵碎疗宗第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式103103 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言REPMOVS:将将数数据据段段中中的的整整串串数数据据传传送送到附加段中。到附加段中。源串(数据段)源串(数据段)目的串(附加段)目的串(附加段)执行执行REPMOVS之前,应先做好:之前,应先做好:(1)源串首地址(末地址)源串首地址(末地址)SI(2)目的串首地址(末地址)目的串首地址(末地址)DI(3)串长度串长度CX(4)建立方向标志建立方向标志(CLD使使DF

135、=0,STD使使DF=1)DSDS:SIESES:DI札掘惭作善雀疥罩臆肤钡回逛蹈唇辗囤少捂调染些衬煽廓造釜肉碎攘惧依第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式104104 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言【例】【例】MOVSI,0050HMOVDI,0100HMOVCX,5CLDREPMOVSBBACDDS2000H:0050HES3000H:0100HE20000H30000H谦医根挤娱喊染醛吝萧绣壕肛伙术幌极姨佃柏岳衬须报鉴荡卑黍延篡释讫第3部分80x86指令系统和寻址方式第3部分80x86指令

136、系统和寻址方式105105 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v置字符串数据指令置字符串数据指令(StoreStringInstruction)功能:功能:将将AL或或AX中的数据送入中的数据送入EI:DI所指的目的串中的字所指的目的串中的字节(或字)存储单元中节(或字)存储单元中。即:。即:字节操作:(字节操作:(AL)DI,字操作:(,字操作:(AX)DI。修改指针修改指针DI,使之指向串中的下一个元素。,使之指向串中的下一个元素。当当DF=0时,(时,(DI)增量)。当)增量)。当DF=1时,(时,(DI)减量。)减量。指令的

137、格式:指令的格式:STOSDSTSTOSB(字节)(字节)STOSW(字)(字)ESES:DIAL或或AX(需在操作数中表明数据格式)(需在操作数中表明数据格式)屡虫盗鞋没哄来鸟差癣拉饱谤札惦鹏峦舍祸阀魂鉴洋晃鸿辉燥湛茎统令邹第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式106106 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言【例】【例】MOVDI,0050HMOVAL,$MOVCX,5CLDREPSTOSB00000000ES1000H:0050H$10000HAL0000$ES1000H:0050H$10000

138、HAL$00瞄蚁炉轴蚀滞婶们拼逆围炉笼蓉誓帐为鹰找劝质祁烦国贬彩诛干尖蔡拍昂第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式107107 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v取字符串数据指令取字符串数据指令(LoadStringInstruction)功能:功能:将将SI所指的源串中的一个字节(或字)存储单元中所指的源串中的一个字节(或字)存储单元中的数据取出来送入的数据取出来送入AL(或(或AX)中)中。即:。即:字节操作:(字节操作:(SI)AL,字操作:(,字操作:(SI)AX。修改指针修改指针SI,使

139、它指向串中的下一个元素。,使它指向串中的下一个元素。当当DF=0时,(时,(SI)增量。当)增量。当DF=1时,(时,(SI)减量。)减量。指令的格式:指令的格式:LODSSRC(需在操作数中表明数据格式)(需在操作数中表明数据格式)LODSB(字节)(字节)LODSW(字(字)DSDS:SIAL或或AX湍壶祁前设哇歇脯嗜堂宁踪沤椒洱商宪匪让允番辕唇母掩泞窜舵儡亢美综第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式108108 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v串输入指令串输入指令INS功能:功能:将由将由

140、DX寄存器指定的寄存器指定的I/O端口中的字、字节传送到端口中的字、字节传送到附加段中的目的串中,并根据附加段中的目的串中,并根据DF和数据类型来改变目的和数据类型来改变目的变址寄存器的方向内容变址寄存器的方向内容。指令格式:指令格式:INSB;字节串输入:;字节串输入:ES:DI(DX),;DIDI1INSW;字串串输入:;字串串输入:ES:DI(DX),),;DIDI2挥逃笆陇锹慰妮址芜劈枷螟铀透炉韶篮呸免召福屹蝉赃晚舔靴株查烧痰剖第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式109109 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻

141、址方式汇编语言汇编语言v串输出指令串输出指令OUTS功能:功能:将由源串中的字、字节传送到在将由源串中的字、字节传送到在DX寄存器指定的寄存器指定的I/O端端口中,并根据口中,并根据DF和数据类型来改变源变址寄存器的方向内容。和数据类型来改变源变址寄存器的方向内容。指令格式:指令格式:OUTSB;字节串输出:;字节串输出:(DX)DS:SI;SISI1OUTSW;字串串输出:;字串串输出:(DX)DS:SI;SISI2瘫臃尘庭铁徒审隐浓霓凌文艰卿材印氯郁总迫策刁嫁当赞摆迢做酪粤蹋卓第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式110110 安徽理工大学安徽理工大学第第

142、3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言2.2.与与 REPZ REPZ(REPNZREPNZ)配合工作的)配合工作的CMPS CMPS 和和 SCAS SCAS指令指令v相等重复前缀指令相等重复前缀指令REPE/REPZ一般格式为:一般格式为:REPE/REPZCMPS/SCAS执行步骤如下:执行步骤如下:(1)判断条件:)判断条件:CX0且且ZF=1;(2)如如果果条条件件不不成成立立,则则结结束束重重复复操操作作,执执行行程程序序中的下一条指令;中的下一条指令;(3)否否则则,CX=CX-1(不不影影响响有有关关标标志志位位),并并执执行行其其后后的的字字符符

143、串串操操作作指指令令,在在该该指指令令执执行行完完后后,再再转到步骤(转到步骤(1)。)。垂巡早募幕菲愁姆熄空邻警滤颤宗诛倒别戮僵掣念灵首串闷丈秆遭退逃捡第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式111111 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v不等重复前缀指令不等重复前缀指令REPNE/REPNZ一般格式为:一般格式为:REPNE/REPNZCMPS/SCAS执行步骤如下:执行步骤如下:(1)判断条件:)判断条件:CX0且且ZF=0;(2)如如果果条条件件不不成成立立,则则结结束束重重复复操操作作,执

144、执行行程程序序中中的的下下一条指令;一条指令;(3)否否则则,CX=CX-1(不不影影响响有有关关标标志志位位),并并执执行行其其后后的字符串操作指令,在该指令执行完后,再转到步骤(的字符串操作指令,在该指令执行完后,再转到步骤(1)。)。搅侯朽贤途鲁秤提贤茵对逾惭臻求空辙茅娘问尽受症烂抓识颂岁轮渭汀域第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式112112 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v串比较指令串比较指令CMPS语句格式:语句格式:CMPSB字节串比较字节串比较CMPSW字串比较字串比较功功能能

145、:将将SI所所指指的的源源串串中中的的一一个个字字节节(或或字字)存存储储单单元元中中的的数数据据与与DI所所指指的的目目的的串串中中的的一一个个字字节节(或或字字)存存储储单单元元中中的的数数据据相相减减,并并根根据据相相减减的的结结果果设设置置标标志志,但但结结果果并不保存。并不保存。即:即:(SI)()(DI)。)。修修改改串串指指针针,使使之之指指向向串串中中的的下下一一个个元素。元素。当当DF=0时时,(SI)和和(DI)增增量量。当当DF=1时,(时,(SI)和()和(DI)减量。)减量。DSDS:SIESES:DI减法减法睁故壁尔倘掳庸亭匙弦腐游咒声参搪措苔锡矫逾墓仔硬唁矾孤砷辫

146、每椎佣第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式113113 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言【例】【例】比较两个字符串,找出它们比较两个字符串,找出它们不相匹的位置。不相匹的位置。MOVSI,1500HMOVDI,0200HMOVCX,17CLDREPECMPSBEPRSPDS2000H:1500HESEO3000H:0200HS20000H30000H叉训作罪末情若策热星净荚厉猛偷胎熟阎续幅虱弛蕉狙赂突肛族良楔靡到第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式114114

147、 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v串搜索指令串搜索指令SCAS语句格式:语句格式:SCASB字节串搜索字节串搜索SCASW字串搜索字串搜索功功能能:AL(字字节节)或或AX(字字)中中的的内内容容与与DI所所指指的的目目的的串串中中的的一一个个字字节节(或或字字)存存储储单单元元中中的的数数据据相相减减,根根据据相相减减结结果果设设置置标志位,结果不保存标志位,结果不保存,即:,即:字节操作:(字节操作:(AL)()(DI),),字操作:(字操作:(AX)()(DI)。)。修改指针使之指向串中的下一个元素。修改指针使之指向串中的

148、下一个元素。当当DF=0时时,(DI)增增量量。当当DF=1时时,(DI)减量。)减量。ESES:DIAL或或AX太豹凄韩呵裳哨蒙兴绰徽佃而薄宁哭屑朋秒莎哩宇态等亥囊从寨缀哲珊雀第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式115115 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言【例】【例】从一个字符串中找出一个指定字符。从一个字符串中找出一个指定字符。MOVDI,0100HMOVAL,RMOVCX,10HCLDREPNZSCASBEPRSES3000H:0100HR R30000HALT疽挫蚕亦跪味丰赋汽跋蒙学薛

149、笛氮颅半轨丛蔓捆绷宴擎迟难妮轩摔筑纠飘第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式116116 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言3.控制转移指令控制转移指令 转移指令是汇编语言程序员经常使用的一组指令。在高级语言中,转移指令是汇编语言程序员经常使用的一组指令。在高级语言中,时常有时常有“尽量不要使用转移语句尽量不要使用转移语句”的劝告,但如果在汇编语言的程序的劝告,但如果在汇编语言的程序中也尽量不用转移语句,那么该程序要么无法编写,要么没有多少功中也尽量不用转移语句,那么该程序要么无法编写,要么没有多少

150、功能,所以,在汇编语言中,不但要使用转移指令,而且还要灵活运用,能,所以,在汇编语言中,不但要使用转移指令,而且还要灵活运用,因为指令系统中有大量的转移指令。因为指令系统中有大量的转移指令。 转移指令分转移指令分无条件转移指令无条件转移指令和和有条件转移指令有条件转移指令两大类。两大类。v无条件转移指令包括:无条件转移指令包括:JMP、子程序的、子程序的调用和返回指调用和返回指令、中断的调用和返回指令等令、中断的调用和返回指令等。 v条件转移指令又分三大类:基于无符号数的条件转移条件转移指令又分三大类:基于无符号数的条件转移指令、基于有符号数的条件转移指令和基于特殊算术标指令、基于有符号数的条

151、件转移指令和基于特殊算术标志位的条件转移指令志位的条件转移指令。 恳嫂似尸颂脐弦惰隘魁谦增拾醚惯濒只孽键利惟卤油蓄婉省躁埠孺裂援樱第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式117117 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言1.无条件转移指令无条件转移指令JMP段内直接短转移:段内直接短转移:段内直接短转移:段内直接短转移:JMPSHORTOPRJMPSHORTOPR执行操作:(执行操作:(IP)(IP)+8位位移量位位移量段内直接近转移:段内直接近转移:段内直接近转移:段内直接近转移:JMPNEARPTR

152、OPRJMPNEARPTROPR执行操作:(执行操作:(IP)(IP)+16位位移量位位移量段内间接转移:段内间接转移:段内间接转移:段内间接转移:JMPWORDPTROPRJMPWORDPTROPR执行操作:执行操作:(IP)(EA)段间直接远转移:段间直接远转移:段间直接远转移:段间直接远转移:JMPFARPTROPRJMPFARPTROPR执行操作:(执行操作:(IP)OPR的段内偏移地址的段内偏移地址(CS)OPR所在段的段地址所在段的段地址段间间接转移:段间间接转移:段间间接转移:段间间接转移:JMPDWORDPTROPRJMPDWORDPTROPR执行操作:执行操作:(IP)(EA

153、)(CS)(EA+2)剥塘糙眨宣猿式玻馅退抿呕九哟瑶谋螺秀离睫赐贪涉绵棍绚暖萎律纵湾奉第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式118118 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言段内直接短转移:段内直接短转移:段内直接短转移:段内直接短转移:JMPSHORTOPRJMPSHORTOPR执行操作:(执行操作:(IP)(IP)+8位位移量位位移量段内直接近转移:段内直接近转移:段内直接近转移:段内直接近转移:JMPNEARPTROPRJMPNEARPTROPR执行操作:(执行操作:(IP)(IP)+16位位移

154、量位位移量v位移量是紧接着位移量是紧接着JMP指令后的那条指令的偏移地址,到目标指令的指令后的那条指令的偏移地址,到目标指令的偏移地址的地址位移。当向地址增大方向转移时,位移量为正;向地偏移地址的地址位移。当向地址增大方向转移时,位移量为正;向地址减小方向转移时,位移量为负。例如:址减小方向转移时,位移量为负。例如:JMPAGAIN;转移到;转移到AGAIN处继续执行处继续执行AGAIN: DECCX;标号;标号AGAIN的指令的指令累钙燎常摩成肯龚门烈蛆让谆川铺千孽沾挪秽奈八排瞥恤狞裕磐榜蜡弧楼第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式119119 安徽理工大学

155、安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言段内间接转移:段内间接转移:段内间接转移:段内间接转移:JMPWORDPTROPRJMPWORDPTROPR执行操作:执行操作:(IP)(EA)v将一个寄存器或主存字单元内容送入将一个寄存器或主存字单元内容送入IP寄存器,作为新的指令指针,寄存器,作为新的指令指针,但不修改但不修改CS寄存器的内容。寄存器的内容。JMPAX;IPAXJMPWORDPTR2000H;IP2000H拢障疲萍宠矮员胸枉横遮锻舅高萎狙秉紫娄乳蕉赢吧骑鳖滥丸答宜惮恤您第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式

156、120120 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言段间直接远转移:段间直接远转移:段间直接远转移:段间直接远转移:JMPFARPTROPRJMPFARPTROPR执行操作:(执行操作:(IP)OPR的段内偏移地址的段内偏移地址(CS)OPR所在段的段地址所在段的段地址v将将标标号号所所在在段段的的段段地地址址作作为为新新的的CS值值,标标号号在在该该段段内内的的偏偏移移地地址址作作为为新的新的IP值;这样,程序跳转到新的代码段执行。值;这样,程序跳转到新的代码段执行。JMPFARPTROTHERSEG;远转移到代码段;远转移到代码段2

157、的的OTHERSEG段间间接转移:段间间接转移:段间间接转移:段间间接转移:JMPDWORDPTROPRJMPDWORDPTROPR执行操作:执行操作:(IP)(EA)(CS)(EA+2)v用用一一个个存存储储单单元元表表示示要要跳跳转转的的目目标标地地址址。这这个个目目标标地地址址存存放放在在主主存存中中连续的字单元中的,低位字送连续的字单元中的,低位字送IP寄存器,高位字送寄存器,高位字送CS寄存器。寄存器。MOVWORDPTRBX,1000HMOVWORDPTRBX+2,1500HJMPFARBX ;转移到;转移到1500H:1000H肯锄芳滇恍俱廷瞒幽声威虾噎省孕质眺斡劫涉隋扯琅达状顾

158、鹤概添肠森坞第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式121121 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言CODESEGMENTJMPNEARPTRPROGAPROGA:MOVAX,BXCODEENDS段内近转移段内近转移CODESEGMENTJMPSHORTNEXTNEXT:MOVAX,BXCODEENDS段内短转移段内短转移CODE1SEGMENTJMPFAR PTRNEXTCODE1ENDSCODE2SEGMENTNEXT:MOVAL,3CODE2ENDS段间远转移段间远转移坯组瑚萍王骸栽彝邦扳盒翻嗣

159、杏淖丛旨送考千渗搪降冒遮表郸膜婉呆搐委第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式122122 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言2.条件转移指令条件转移指令条件转移指令是一组极其重要的转移指令,它根据标志寄存器中的条件转移指令是一组极其重要的转移指令,它根据标志寄存器中的一个(或多个)标志位来决定是否需要转移,这就为实现多功能程序提一个(或多个)标志位来决定是否需要转移,这就为实现多功能程序提供了必要的手段。微机的指令系统提供了丰富的条件转移指令来满足各供了必要的手段。微机的指令系统提供了丰富的条件转移

160、指令来满足各种不同的转移需要,在编程序时,要对它们灵活运用。种不同的转移需要,在编程序时,要对它们灵活运用。基本格式:基本格式:JXXLABELJXXLABEL;条件满足,发生转移:;条件满足,发生转移:IPIP位移量位移量;条件不满足,顺序执行。;条件不满足,顺序执行。v指定的条件指定的条件XX如果成立,程序转移到由标号如果成立,程序转移到由标号LABEL指定的目标地址去指定的目标地址去执行指令;条件不成立,则程序将顺序执行下一条指令。执行指令;条件不成立,则程序将顺序执行下一条指令。v操作数操作数LABEL是采用短转移,称为是采用短转移,称为相对寻址方式相对寻址方式。vJXXXX指令不影响

161、标志,但要利用标志。根据利用的标志位不同分成以下指令不影响标志,但要利用标志。根据利用的标志位不同分成以下几种情况。几种情况。镶壁遗冲锅怖项型舆泅偶丽屋陀夺众吨欺夫徽啪瞥安棍草笆买刃画训视圃第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式123123 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言(1)根据单个条件标志的设置情况转移根据单个条件标志的设置情况转移 指指令令的的助助忆忆符符检检测测的的转转移移条条件件功功能能描描述述JZ/JEZF=1JumpEqualorJumpZeroJNZ/JNEZF=0JumpNot

162、EqualorJumpNotZeroJSSF=1JumpSign(negative)JNSSF=0JumpNoSign(positive)JOOF=1JumpOverflowJNOOF=0JumpNotOverflowJPPF=1JumpParityorJumpParityEvenJNPPF=0JumpNotParityorJumpParityOddJB/JNAECF=1JumpBeloworJumpNotAboveorEqualJNB/JAECF=0JumpAboveorEqualorJumpNotBelow炙范翰虎荆慷痰载宽靡擞都枝饯报轧微拐埃黍浸采媚惜构酗保胰霍捍压缀第3部分80x86指

163、令系统和寻址方式第3部分80x86指令系统和寻址方式124124 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言(2)无符号数的条件转移指令无符号数的条件转移指令指令的助忆符指令的助忆符检测的转移条件检测的转移条件功能描述功能描述JB/JNAECF=1JumpBeloworJumpNotAboveorEqualJNB/JAECF=0JumpNotBeloworJumpAboveorEqualJBE/JNACFZF=1JumpBeloworEqualorJumpNotAboveJNBE/JACFZF=0JumpNotBeloworEqualorJ

164、umpAbove茨勉至敲钝封洛胸缓虚酣珍俄含嗡暴半吉缨臭仕噬野种翅灾碌堡凌漂程茹第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式125125 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言(3)有符号数的条件转移指令有符号数的条件转移指令指令的助忆符指令的助忆符检测的转移条件检测的转移条件功能描述功能描述JL/JNGESF OF=1JumpLessLessorJumpNotGreaterorEqualNotGreaterorEqualJNL/JGESF OF=0JumpGreaterorEqualGreaterorEqu

165、alorJumpNotLessNotLessJLE/JNGZF=1orSFOFJumpLessorEqualLessorEqualorJumpNotGreaterNotGreaterJG/JNLEZF=0andSF=OFJumpGreaterGreaterorJumpNotLessorEqualNotLessorEqual臭炙双恼七踌博视社国缮辖吴徽魁缴碑练翰归叉需聊材好幕兼冗催她轩分第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式126126 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言(4)测试测试CXCX的值为的

166、值为0 0则转移指令则转移指令条件转移指令中还有一条较特殊的指令,因为条件转移指令中还有一条较特殊的指令,因为CX寄存器通常在程序寄存器通常在程序中用做计数器,中用做计数器,JCXZ指令就可以用来判断计数是否为指令就可以用来判断计数是否为0。JCXZLABEL;CX0,发生转移:,发生转移:IPIP位移量位移量;CX0,顺序执行。,顺序执行。例例计数器为计数器为0的判断。的判断。MOVCX,100AGAIN:JCXZNEXT ;判断传送次数,为;判断传送次数,为0退出循环退出循环MOVSBDECCX;传送次数减;传送次数减1JMPAGAINNEXT:.签肃楞舜扶踌姥引意报盘申魏虱涅写漾谚录的揍

167、吭档慎又寄烙翻脉辕闭朔第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式127127 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言例例如如果果X50,转转到到TOO_HIGH;否否则则|X-Y|RESULT,如如果果溢溢出出转到转到OVERFLOW。 MOVAX,XCMPAX,50JGTOO_HIGHSUBAX,YJOOVERFLOWJNSNONNEGNEGAXNONNEG:MOVRESULT,AXTOO_HIGH:OVERFLOW:嫁西扇凰耐吁龋移肾饥娄导砰地姆脂乒岭犬惋厂物毅钵谢决砂垂磐框烩栈第3部分80x86指令系

168、统和寻址方式第3部分80x86指令系统和寻址方式128128 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言3.循环指令循环指令 v循环指令循环指令LOOP语句格式:语句格式:LOOP短标号短标号执行过程:执行过程:如果如果(CX)0,转向,转向“标号标号”所所指向的指令,否则,终止循环,执行该指令下面的指向的指令,否则,终止循环,执行该指令下面的指令。指令。说说明:使用明:使用LOOP指令可代替两条指令:指令可代替两条指令:DECCXJNE短标号短标号CX循环次数循环次数循环体循环体CXCX-1CX=0?YN拈搅铅舷诽掌技令抬隙鹰门侗含误颇低

169、缉句苗抿捅广侄闭洞凿客机啡线徒第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式129129 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v相等相等/为零循环指令为零循环指令LOOPE/LOOPZ语句格式:语句格式:LOOPE/LOOPZ短标号短标号执行过程:执行过程:(1)()(CX)()(CX)-1(不改变任何标志位)(不改变任何标志位)(2)如果)如果CX0且且ZF=1,则程序转到循环体的,则程序转到循环体的第一条指令,否则,程序将执行该循环指令下面第一条指令,否则,程序将执行该循环指令下面的指令。的指令。CX循环

170、次数循环次数循环体循环体CXCX-1CX0且且ZF=1?NoYes栽猴桌漫牵停冀端袱吵吐虑仇先摩猪瞪横连亨朝甚置二湘哥怯圃绸铜匹靡第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式130130 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v不相等不相等/不为零循环指令不为零循环指令LOOPNE/LOOPNZ语句格式:语句格式:LOOPNE/LOOPNZ短标号短标号执行过程:执行过程:(1)()(CX)()(CX)-1(不改变任何标志位)(不改变任何标志位)(2)如果)如果CX0且且ZF=0,则程序转到循环体的,则程序转到

171、循环体的第一条指令,否则,程序将执行该循环指令下面第一条指令,否则,程序将执行该循环指令下面的指令。的指令。CX循环次数循环次数循环体循环体CXCX-1CX0且且ZF=0?NoYes缠贼蓖癌锨持驼龄遂汝掖棺义亲揩处霜绚鹿挚瞳职痢杏溃羚菱署司苯由踢第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式131131 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言例:记录字符串中的空格个数到例:记录字符串中的空格个数到RESULT单元。单元。MOVCX,COUNT ;设置循环次数;设置循环次数MOVSI,OFFSETSTRINGXO

172、RBX,BX;BX清清0,用于记录空格数,用于记录空格数MOVAL,20H;空格的;空格的ASC码为码为20HAGAIN:CMPAL,ES:SIJNZNEXT;ZF=0,非空格,转移,非空格,转移INC BX;ZF=1,是空格,个数加,是空格,个数加1NEXT:INCSILOOPAGAIN;字符个数减;字符个数减1,不为,不为0继续循环继续循环MOVRESULT,BX;保存结果;保存结果护盂唐荷鸭辩恭雕豫堵誓牲痢疆高辆烤悠闯癣巍援述溶恫里好昨厉枫搏副第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式132132 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方

173、式指令系统和寻址方式汇编语言汇编语言4.子程序子程序 v子程序是完成特定功能的一段程序。如果某程序段在源程序内反复出子程序是完成特定功能的一段程序。如果某程序段在源程序内反复出现,就可把该程序段定义为子程序。这样可以缩短源程序长度、节省目现,就可把该程序段定义为子程序。这样可以缩短源程序长度、节省目标程序的存储空间,也可提高程序的可维护性和共享性。标程序的存储空间,也可提高程序的可维护性和共享性。v当主程序(调用程序)需要执行这个功能时,采用当主程序(调用程序)需要执行这个功能时,采用CALL调用指令调用指令转移到该子程序的起始处执行;转移到该子程序的起始处执行;v当运行完子程序功能后,采用当

174、运行完子程序功能后,采用RET返回指令回到主程序继续执行。返回指令回到主程序继续执行。CALLlabellabel:procRET主程序主程序子程序子程序彦诀锋豌腐沁孪家裤证嘿保见妆艾诌襄击漆辽菱色峡瞒沁剂蛋苑丝榷握栓第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式133133 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v子程序调用指令子程序调用指令 CALL CALL 类似类似JMP指令,指令,CALL指令分成指令分成4种类型:种类型:CALLlabel;段内调用、直接寻址(;段内调用、直接寻址(段内直接调用段内直

175、接调用)CALLr16/m16;段内调用、间接寻址(;段内调用、间接寻址(段内间接调用段内间接调用)CALLfarptrlabel;段间调用、直接寻址(;段间调用、直接寻址(段间直接调用段间直接调用)CALLdwordptrmem;段间调用、间接寻址(;段间调用、间接寻址(段间间接调用段间间接调用)但不同于但不同于JMP指令,指令,CALL指令需要保存返回地址:指令需要保存返回地址:段内调用段内调用入栈偏移地址入栈偏移地址IP:SPSP2,SS:SPIP段间调用段间调用入栈偏移地址入栈偏移地址IP和段地址和段地址CS:SPSP2,SS:SPIP;SPSP2,SS:SPCS。拂益菲帚河戎佐哈魔抢

176、汹跑笑苟炒梭籽则落坛腾池屏烘弛提置贺慷原跺骚第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式134134 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言(1)段内直接调用)段内直接调用格格式:式:CALLDST执行步骤:执行步骤:将子程序的返回地址存入堆栈,以便子程序返回使用。将子程序的返回地址存入堆栈,以便子程序返回使用。即即:(SP)SP-2;(;(SP)+1,(SP)IP转移到子程序入口地址去继续执行子程序。指令中的转移到子程序入口地址去继续执行子程序。指令中的DST在汇编格式在汇编格式指令作用子程序入口地址的符号

177、地址(标号)。在机器语言中,它是一个指令作用子程序入口地址的符号地址(标号)。在机器语言中,它是一个16位的偏移量。即:位的偏移量。即:(IP)IP+D16注:段内调用只改变注:段内调用只改变IP,不改变,不改变CS的值。的值。SS堆栈段堆栈段SP-1SPIP高位字节高位字节IPIP低位字节低位字节SP-2义粕蹦碾狡沙砒蔡舷短摸攒嚎枚县秉注惋巷题橱街艇菜端竭前球续垛约卒第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式135135 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言(2)段内间接调用)段内间接调用格格式:式:C

178、ALLDST此指令的执行步骤和段内直接调用大致相同,主要此指令的执行步骤和段内直接调用大致相同,主要区别是子区别是子程序的入口地址程序的入口地址DST的寻址方式不同而已的寻址方式不同而已。它。它可以是寄存器操作可以是寄存器操作数和各种寻址方式的存储器操作数,当然不允许是立即数和段寄数和各种寻址方式的存储器操作数,当然不允许是立即数和段寄存器操作数。存器操作数。例如:例如:CALLBX;BX的内容是子程序的偏移量的内容是子程序的偏移量CALLwordptrBX;BX所指内存字单元的值是子程序所指内存字单元的值是子程序的的偏移量偏移量巨秆付他纤恐闪源海擦鼓款榴梆刷响肇辅矣锅文蝇息竿柄荔皋凝号沉葛婚

179、第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式136136 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言(3)段间直接调用)段间直接调用格格式:式:CALLDST执行操作:执行操作:SPSP-2;(SP)+1,(SP)CS;SPSP-2;(SP)+1,(SP)IP;IP偏移地址(指令的第偏移地址(指令的第2 2、3 3字节);字节); CS段地址(指令的第段地址(指令的第4 4、5 5字节);字节);SS堆栈段堆栈段SP-1SPCS高位字节高位字节CSCS低位字节低位字节IP高位字节高位字节SP-2IP低位字节低位字

180、节IPSP-3SP-4CS代码段代码段CS高高8位位CS低低8位位IP高高8位位IP低低8位位OP首搔殿芥檄乞霉鄙捎绣趋呛车型迈跳唱麓警酱柔畅耻谩睫锑敝峰懊左绑惑第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式137137 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言(4)段间间接调用)段间间接调用格格式:式:CALLDST执行操作:执行操作:SPSP-2;(SP)+1,(SP)CS;SPSP-2;(SP)+1,(SP)IP;IP(EA););CS(EA+2););此指令的执行步骤和段间直接调用大致相同,主要区别是子程

181、此指令的执行步骤和段间直接调用大致相同,主要区别是子程序的入口地址序的入口地址DST的寻址方式不同而已。它可以是寄存器操作数和的寻址方式不同而已。它可以是寄存器操作数和各种寻址方式的存储器操作数,也即由各种寻址方式形成的有效地各种寻址方式的存储器操作数,也即由各种寻址方式形成的有效地址址EA和和EA+1两个单元内容送入两个单元内容送入IP,EA+2和和EA+3两个单元内容送两个单元内容送入入CS。例如:例如:CALLdwordptrBX;BX所指内存双字单元的值是子程序的所指内存双字单元的值是子程序的偏移量和段值偏移量和段值垒吓巷参纲傣盐肥天措弗友枣浮菲峰康松要秆鹊氯梁匝酚傅蜗嗣凸娄丧柬第3部

182、分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式138138 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v返回指令返回指令RETv段内近返回段内近返回:RET执行操作:执行操作:(IP)(SP)+1,(SP)(SP)SP+2v段内带立即数近返回段内带立即数近返回:RETEXPRET可可以以带带有有一一个个立立即即数数,堆堆栈栈指指针针SP将将增增加加,即即SPSP+EXP。这个特点使得程序可以方便地废除若干执行这个特点使得程序可以方便地废除若干执行CALL指令以前入栈参数。指令以前入栈参数。v段间远返回段间远返回:RET执

183、行操作:执行操作:(IP)(SP)+1,(SP)(SP)(SP)+2(CS)(SP)+1,(SP)(SP)(SP)+2v段间带立即数远返回段间带立即数远返回:RETEXP(同段内带立即数返回)(同段内带立即数返回)琅内戌芹琴俘峭草厌熊伏尊啪素莎釉赞哀渭躺肿券尖虾奉根灌人累蚕猖浊第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式139139 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言5.中断中断 中中 断断就就是是CPU暂暂停停当当前前程程序序的的执执行行,转转而而执执行行处处理理紧紧急急事事务务的的程程序序,并并在在该

184、该事事务务处处理理完完后后能能自自动动恢恢复复执执行行原原先先程程序序的的过过程程。在在此此,称称引引起起紧紧急急事事务务的的事事件件为为中中断断源源,称称处理紧急事务的程序为中断服务程序或中断处理程序。处理紧急事务的程序为中断服务程序或中断处理程序。 中中断断处处理理程程序序基基本本上上是是系系统统程程序序员员编编写写好好的的,是是为为操操作作系系统统或或用用户户程程序序服服务务的的。为为了了在在应应用用程程序序中中使使用用中中断断服服务务程程序序,程程序序员员必必须须能能够够在在程程序序中中有有目目的的地地安安排排中中断断的的发生发生。为此,指令系统提供了各种引起中断的指令。为此,指令系统

185、提供了各种引起中断的指令。 梯缠隆佑茁粟筋丘徘快争挤闭十傅菌遣吝绅胁锗竹住醋倍洲炔拈筋喻芥艰第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式140140 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v中断向量表和中断服务程序中断向量表和中断服务程序中中断断向向量量表表是是一一个个特特殊殊的的线线性性表表,它它保保存存着着系系统统所所有有中中断断服服务务程程序序的的入入口口地地址址(偏偏移移量量和和段段地地址址)。在在微微机机系系统统中中,该该向向量量表表有有256个个元元素素(00FFH),每个元素占每个元素占4个字节

186、,总共个字节,总共1K字节。字节。图图中中的的“中中断断偏偏移移量量”和和“中中断断段段地地址址”是是指指该该中中断断服服务务程程序序入入口口单单元元的的“偏偏移移量量”和和“段段地地址址”。由由此此不不难难看看出出:假假如如中中断断号号为为N,那那么么,在在中中断断向向量量表表中中存存储储该该中中断断处处理理程程序序的的入入口口地地址的单元地址为:址的单元地址为:4N。类型类型0的(的(IP)类型类型0的(的(CS)类型类型1的(的(IP)类型类型1的(的(CS)类型类型N的(的(IP)类型类型N的(的(CS)类型类型255的(的(IP)类型类型255的(的(CS)00000000044*N

187、003FC颁隘亏羔却腋咨梗篓逮轰酒诉巾拄殉敬液柞帆盎逼几向乞潞煽幕沮落破弯第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式141141 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v中断指令中断指令INT一般格式:一般格式:INTTYPE其中:立即数其中:立即数TYPE是一个是一个00FFH范围内的整数。范围内的整数。指令执行的步骤:指令执行的步骤:(1)把标志寄存器压栈,清除标志位)把标志寄存器压栈,清除标志位IF和和TF;(2)把代码段寄存器)把代码段寄存器CS和指令指针寄存器和指令指针寄存器IP的内容压栈;的内容

188、压栈;(3)()(IP)(TYPE*4),(),(CS)(TYPE*4+2)v溢出指令溢出指令INTO当标志位当标志位OF为为1时,引起中断。时,引起中断。该指令的格式如下:该指令的格式如下:INTO该指令影响标志位:该指令影响标志位:IF和和TF。距雨赛毙誉作他成油供雷皮陶悦峦炮瓶陛劲嘿喧寇揭惹扭血遁浑瘩播侧鼻第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式142142 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v中断返回指令中断返回指令IRET当当一一个个中中断断服服务务程程序序执执行行完完毕毕时时,CPU将将恢

189、恢复复被被中中断断的的现现场场,返返回回到到引引起起中中断断的的程程序序中中。为为了了实实现现此此项项功功能能,指令系统提供了一条专用的中断返回指令。指令系统提供了一条专用的中断返回指令。指令格式:指令格式:IRET该指令执行的过程基本上是该指令执行的过程基本上是INT指令的逆过程,具体如下:指令的逆过程,具体如下:(1)从栈顶弹出内容送入)从栈顶弹出内容送入IP;(2)再从新栈顶弹出内容送入)再从新栈顶弹出内容送入CS;(3)再从新栈顶弹出内容送入标志寄存器;)再从新栈顶弹出内容送入标志寄存器;旅缆账瞅篙和辐吮窒焉墒瞒狈判盏暖札俘锤猫贮友绢缺鄂持奄稀孕结宰政第3部分80x86指令系统和寻址方

190、式第3部分80x86指令系统和寻址方式143143 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言中断和子程序的比较中断和子程序的比较中中断断和和子子程程序序调调用用之之间间有有其其相相似似和和不不同同之之处处。它它们们的的工工作作过过程程非非常常相相似似,即即:暂暂停停当当前前程程序序的的执执行行,转转而而执执行行另另一一程程序序段段,当当该该程程序序段段执执行行完时,完时,CPU都自动恢复原程序的执行。它们的主要差异有:都自动恢复原程序的执行。它们的主要差异有:(1)子子程程序序调调用用一一定定是是程程序序员员在在编编写写源源程程序序时时事

191、事先先安安排排好好的的,是是可可知知的的,而而中中断断是是由由中中断断源源根根据据自自身身的的需需要要产产生生的的,是是不不可可预预见见的的(用用指指令令INT引引起起的中断除外)的中断除外);(2)子子程程序序调调用用是是用用CALL指指令令来来实实现现的的,但但没没有有调调用用中中断断的的指指令令,只只有有发发出出中中断断请请求求的的事事件件(指指令令INT是是发发出出内内部部中中断断信信号号,而而不不要要理理解解为为调调用用中中断服务程序);断服务程序);(3)子程序的返回指令是)子程序的返回指令是RET,而中断服务程序的返回指令是,而中断服务程序的返回指令是IRET。(4)在在通通常常

192、情情况况下下,子子程程序序是是由由应应用用系系统统的的开开发发者者编编写写的的,而而中中断断服服务务程程序是由系统软件设计者编写的。序是由系统软件设计者编写的。传糯毋测拌罗迄懦陕饯碟季副弛造杜滨抗黄捞雅僻淡聋汁闭辊野隙柏墒系第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式144144 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言3.处理机控制和杂项指令处理机控制和杂项指令标志处理指令:标志处理指令:CLC进位位置进位位置0指令指令;CF0CMC进位位求反指令进位位求反指令;CF CFSTC进位位置进位位置1指令指令;C

193、F1CLD方向标志位置方向标志位置0指令指令;DF0STD方向标志位置方向标志位置1指令指令;DF1CLI中断标志位置中断标志位置0指令指令;IF0STI中断标志位置中断标志位置1指令指令;IF1注意注意:*以上指令只影响本指令指定的标志以上指令只影响本指令指定的标志签冗呕愿镇锋糠法太孰钨诞倍楼匡哑攘盲年类鸽饶态握兵已淆漫账煽畜耀第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式145145 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v空操作指令空操作指令NOPNOP(NoOperationInstruction)该指

194、令该指令不执行任何操作,但占用一个字节存储单元,空耗一个指令不执行任何操作,但占用一个字节存储单元,空耗一个指令执行周期执行周期,常用于程序调试。,常用于程序调试。例如:在需要预留指令空间时用例如:在需要预留指令空间时用NOP填充,代码空间多余时也可以填充,代码空间多余时也可以用用NOP填充,还可以用填充,还可以用NOP实现软件延时。实现软件延时。事实上,事实上,NOP和和XCHGAL,AL的指令代码一样。的指令代码一样。v暂停指令暂停指令HLTHLT(EnterHaltStateInstruction)在在等待中断信号时,该指令使等待中断信号时,该指令使CPU处于暂停工作状态,处于暂停工作状

195、态,CS:IP指向指向下一条待执行的指令。当产生了中断信号,下一条待执行的指令。当产生了中断信号,CPU把把CS和和IP压栈,并转压栈,并转入中断处理程序。在中断处理程序执行完后,中断返回指令入中断处理程序。在中断处理程序执行完后,中断返回指令IRET弹出弹出IP和和CS,并唤醒,并唤醒CPU执行下条指令。执行下条指令。彪单萎迄厅躯族流脉疤志熔游厂旦依招谨揍萧亏许老氨颁吟遗典沸痘参馅第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式146146 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v换码指令换码指令ESCESC把

196、浮点指令交给浮点处理器执行。提高系统浮点运算能力的协处把浮点指令交给浮点处理器执行。提高系统浮点运算能力的协处理器理器8087指令是与指令是与8086的整数指令组合在一起的,的整数指令组合在一起的,8086主存中存储主存中存储8087的操作码及其所需的操作数。当的操作码及其所需的操作数。当8086发现是一条浮点指令时,就发现是一条浮点指令时,就利用利用ESC指令将浮点指令交给指令将浮点指令交给8087执行。实际编写程序时,一般采用执行。实际编写程序时,一般采用易于理解的浮点指令助记符格式。易于理解的浮点指令助记符格式。ESC6ESC6,SISI ;实数除法指令:;实数除法指令:FDIVdwor

197、dptrSIESC20HESC20H,ALAL;整数加法指令:;整数加法指令:FADDST(0),ST捣拔裂斟船偿年概明鄙锅抡沮臀菩阳荡税卵托檄乡哗钙魂檄谅砍瓮搭纤汾第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式147147 安徽理工大学安徽理工大学第第3章章80x86指令系统和寻址方式指令系统和寻址方式汇编语言汇编语言v等待指令等待指令WAITWAIT(PutProcessorinWaitStateInstruction)该指令该指令使使CPU处于等待状态,直到协处理器(处于等待状态,直到协处理器(Coprocessor)完成运)完成运算,并用一个重启信号唤醒算,并

198、用一个重启信号唤醒CPU为止为止。该指令执行不影响任何标志位。该指令执行不影响任何标志位。8086就是利用就是利用WAIT指令和测试引脚实现与指令和测试引脚实现与8087同步运行的。浮点指同步运行的。浮点指令经由令经由8086CPU处理发往处理发往8087,并与,并与8086本身的整数指令在同一个指本身的整数指令在同一个指令序列;而令序列;而8087执行浮点指令较慢,所以执行浮点指令较慢,所以8086必须与必须与8087保持同步。保持同步。v封锁数据指令封锁数据指令LOCKLOCK(LockBusInstruction)这是一个这是一个指令前缀,可放在任何指令前。这个前缀使得在这个指令指令前缀,可放在任何指令前。这个前缀使得在这个指令执行时间内,执行时间内,8086处理器的封锁输出引脚有效,即把总线封锁,使别处理器的封锁输出引脚有效,即把总线封锁,使别的控制器不能控制总线;直到该指令执行完后,总线封锁解除的控制器不能控制总线;直到该指令执行完后,总线封锁解除。怀越厂整酚施靛汉苛搁蹄麻邢傀厉屠植陋恩嫉绎瞩碳菠格郎骨又童觅束乒第3部分80x86指令系统和寻址方式第3部分80x86指令系统和寻址方式148148

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

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

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