《汇编语言程序设计》第三章课件

PPT
  • 阅读 43 次
  • 下载 0 次
  • 页数 63 页
  • 大小 216.000 KB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
《汇编语言程序设计》第三章课件
可在后台配置第一页与第二页中间广告代码
《汇编语言程序设计》第三章课件
可在后台配置第二页与第三页中间广告代码
《汇编语言程序设计》第三章课件
可在后台配置第三页与第四页中间广告代码
《汇编语言程序设计》第三章课件
《汇编语言程序设计》第三章课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 63
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】《汇编语言程序设计》第三章课件.ppt,共(63)页,216.000 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-44725.html

以下为本文档部分文字说明:

汇编语言淮南师范学院重点课程第3章指令系统和寻址方式◆汇编指令格式◆寻址方式◆8086指令系统◆80X86及Pentium扩展指令汇编语言淮南师范学院重点课程3.1汇编指令格式计算机中的一条指令通常包含两部分:依据操作数的个数划分,8

0X86CPU指令系统中的指令格式最常用的有:双操作数指令、单操作数指令和无操作数指令。操作码操作数汇编语言淮南师范学院重点课程1、双操作数指令汇编格式及操作规定格式:[标号:]操作符OPD,OPS[;注释]操作规定:(1)OPD与OPS应为同种操作类型且类型明确,即同为字节类型或

字类型。(2)OPD不能是立即数。(3)OPS和OPD不能同时为存储器操作数,即:或者是OPS和OPD中至少有一个为寄存器操作数,或者是OPD为存储器操作数,OPS为立即数。(4)操作结束后,运算结果存入OPD中,OPS内容不变。汇编语言淮南师范学院重点课程2、单操作数指

令汇编格式及操作规定格式:[标号:]操作符OPD[;注释]操作规定:(1)OPD类型必须明确即为字节类型或字类型,不能是模糊类型。(2)操作对象为目的操作数,操作结束后结果存入OPD中。(3)OPD不能是立即数,只能是寄存器操作数或存储器操作数。汇编语言淮南师范学院重点课程3、无操作数指令汇编格式

及操作规定格式:[标号:]操作符[;注释]操作规定:指令中只有操作码,不含操作数,这种指令有两种可能:(1)无需任何操作数。如停机指令、空操作指令等。(2)所需操作数是隐含指定的,操作时取固定操作数进行操作。返回汇编语

言淮南师范学院重点课程3.2寻址方式寻找指令中所需操作数存放地址的方式或程序转移时寻找转移地址的方式称为寻址方式,因而寻址方式分为两大类,一类是数据寻址方式,另一类是转移地址寻址方式。由于80X86指令涉及四种操作数:立即操作数、寄存器操作数、存储器操作数和隐含操作数,因此,数据寻址方式

又可对应四种寻址方式,即:立即寻址、寄存器寻址、存储器寻址和固定寻址。汇编语言淮南师范学院重点课程1、立即寻址此寻址方式所提供的操作数直接包含在指令中,它紧跟在指令操作码后面,存放在存储器代码段中。立即操

作数可以是8位,也可以是16位。汇编格式:n(n是用8位或16位二进制补码表示的有符号数)【例3.1】MOVAX,1234H立即寻址方式用来表示常数,它常用于给寄存器赋初值。需要强调的是,立即寻址只能用于源操作数,不能用于目的操作数。汇编语言淮南师范学院重点课程2、寄存器寻

址此寻址方式的操作数直接存放在由指令指明的寄存器中。在汇编指令中直接书写寄存器名,如16位寄存器操作数可以是AX、BX、CX、DX、SI、DI、BP、SP、DS、ES、SS、CS等;8位寄存器操作数可以是AH、AL、BH

、BL、CH、CL、DH、DL。汇编格式:R(其中R表示寄存器名)此寻址方式由于存取操作数直接从CPU内部寄存器中获得,不需访问存储器,因而指令执行的速度快。寄存器寻址既可用于源操作数,又可用于目的操作数,应用频率高。【例3.2】MOVDS,AXADDCL,AH汇编语言淮南师范学院重点课程3

、存储器寻址存储器寻址方式的操作数都是存放在存储器中,一般是数据段、附加段、堆栈段中的存储单元。指令中给出的是存储单元的地址或产生存储单元地址的表达式。在汇编语言源程序中,存储单元地址是采用逻辑地址的形式表示的,即:段首址:段内偏移地址。段首址存放在某个段寄存器中,段内偏移地址

是指存放操作数的存储单元与段起始地址(段首址)之间的距离(字节数),又可称为“有效地址”,记作EA。有效地址EA是由3个地址分量的某种组合求得,这3个地址分量是:位移量、基址、变址。这3个地址分量的不同组合,使形成有效地址EA的方法不同,相应有以下5种不同的存储器操作数寻址方式。汇编语言

淮南师范学院重点课程(1)直接寻址直接寻址是最简单的存储器寻址,这种寻址,操作数的有效地址EA由指令直接给出。它主要用于存取简单变量。汇编格式:(a)[常量](b)变量或含有变量的表达式【例3.3】MOVAL,[1000H]MOVVAL,BX对使用直接寻址方式需说明以下几点:

●操作数默认存放在数据段中,段寄存器DS在指令格式无须指定。●若操作数在代码段、堆栈段或附加段中,则在指令格式中必须指定相应的段寄存器名。在操作数地址之前使用前缀指出段寄存器名,这种前缀称为段超越前缀。●指令中操作数的EA

即可以是一个数字,也可以是一个符号地址。当EA是一个数字时,一定要注意立即寻址方式与直接寻址方式的区别。●直接寻址方式适合于处理存储器的单个存储单元。汇编语言淮南师范学院重点课程(2)寄存器间接寻址此寻址方式中,操作数的有效地址EA存

放在SI、DI、BX或BP四个寄存器之一中,即:EA=(BX)或(BP)或(SI)或(DI)。汇编格式:[R](其中R是寄存器SI、DI、BX、BP之一)SI、DI、BX、BP在这里叫间址寄存器。若用BX、SI或DI间址寻

址时,则操作数默认在数据段中,且用DS内容作为段首址,操作数的物理地址为:(BX)PA=(DS)×16+(SI)(DI)【例3.4】MOVDL,[BX]若指令中使用BP间址寻址时,则操作数默认在堆栈段中,且用SS的内容作为段首址,操作数的物理地址为:PA=(SS)

×16+(BP)。【例3.5】MOV[BP],AX汇编语言淮南师范学院重点课程(3)基址寻址此寻址操作数的有效地址EA是指令中指定的基址寄存器的内容与指令中给出的位移量之和,即:EA=(BX)+位移量(BP)汇编格式:(

a)Disp[BX]或Disp[BP](b)[BX+Disp]或[BP+Disp]该寻址方式中若以BX作为基址寄存器,则操作数默认在数据段中;若以BP作为基址寄存器,则操作数默认在堆栈段中,因而操作数的物理地址为:PA=(DS)×

16+(BX)+Disp(SS)×16+(BP)+Disp若操作数不在默认段中,则应使用段超越前缀明确指定。【例3.6】MOVAX,[BX+7CH]MOVAX,[BP+COUNT]汇编语言淮南师范学院重点课程(4)变址寻址变址寻址与基址寻址

类似,其操作数的有效地址EA是变址寄存器的内容与位移量之和,即:EA=(SI)+位移量(DI)汇编格式:(a)Disp[SI]或Disp[DI](b)[SI+Disp]或[DI+Disp]该寻址方式默认段是数据段,因而操作数的物理地址为:PA=(DS)×

16+(SI)+Disp(DI)若操作数不在默认段中,则应使用段超越前缀明确指定。【例3.7】MOVDX,COUNT[DI]MOVES:3480H[SI],AX汇编语言淮南师范学院重点课程(5)基址加变址寻址此寻址方式中操作数的有效地

址EA是指令中的基址寄存器的内容、变址寄存器的内容、位移量三个地址分量之和,即:EA=(BX)+(SI)+位移量(BP)+(DI)汇编格式:(a)Disp[BX或BP+SI或DI](b)[BX或BP+SI或DI+Di

sp]该寻址方式中若基址寄存器采用BX,则操作数默认在数据段中;若基址寄存器采用BP,则操作数默认在堆栈段中,因而操作数的物理地址为:PA=(DS)×16+(BX)+(SI)+Disp(DI)(SS)×16+(BP)+(SI)+Disp(DI)汇编语言淮南师范学院重点课程4、80X86扩充的寻址方

式上述讲的8种8086CPU的16位寻址方式同样适用于80X86CPU32位寻址方式,在这8种32位寻址方式中,只不过是立即数、寄存器、存储器有效地址扩充到32位,而且任意32位通用寄存器(EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP)均可

作为间址寄存器、基址寄存器或变址寄存器(变址寄存器ESP除外)。除此之外,80X86CPU32位寻址方式还提供了两种仅适用于32位CPU的寻址方式,即:比例变址寻址和基址加比例变址寻址,这两种寻址方式均属于存储器寻址方式中的一种,其操作数存放在存储器中。(1)比例变址

寻址由变址寄存器的内容乘以比例因子再加上位移量而得到操作数有效地址EA的寻址方式称为比例变址寻址,即:EA=[变址寄存器]×比例因子+位移量。汇编格式:[变址寄存器]×比例因子+位移量汇编语言淮南师范学院重点课程其中:变址寄存器是EAX、EBX、ECX、EDX、ESI、ED

I、EBP之一;比例因子可以是1、2、4、8;位移量可以是0位、8位或32位。此寻址方式操作数默认在数据段,若操作数不在默认的数据段中时,则应使用段超越前缀明确指定。例如:MOVEAX,COUNT[EDI*2];COUNT是位移量,2是比例因子其中乘以比例因子的操作是在C

PU内部由硬件完成。(2)基址加比例变址寻址由变址寄存器的内容乘以比例因子加上基址寄存器的内容再加上位移量而得到操作数有效地址EA的寻址方式称为基址加比例变址寻址。即:EA=[变址寄存器]×比例因子+[基址寄存器]+位移量。若基址寄存器采用EBP、ESP时,则操作数默认在SS段中,若基址

寄存器采用除EBP、ESP以外的其他寄存器时,则操作数默认在DS段中。若操作数不在相应的默认段中时,则应使用段超越前缀明确指定。例如:MOV[ESI*4+EDX],EAX;目的操作数在DS段中汇编语言淮南师范学院重点课程5、转移地

址寻址方式转移地址寻址方式确定的是转移指令或调用指令转移后的地址。可将转移地址寻址方式分为四种:段内直接寻址、段内间接寻址、段间直接寻址和段间间接寻址。(1)段内直接寻址段内直接寻址又称为段内相对寻址。在此寻址方式下,转

移后的指令与转移指令本身在同一代码段中。转移后指令的有效地址EA=(IP)+位移量。若位移量为正,则相对本指令向后转移,若为负,则相对本指令向前转移。汇编格式:(a)SHORT标号(b)NEARPTR标号其中:标号是符号地址。例如:JMPSHORTNEXTJMPNEA

RPTRL1汇编语言淮南师范学院重点课程(2)段内间接寻址转移有效地址是一个字寄存器或是一个字存储单元的内容。这个字寄存器或字存储单元的内容可以用数据寻址方式中的寄存器寻址或存储器寻址获得,所得到的转移有效地址用来取代当前的IP值实现段内间接寻址。这种寻址方式只适用于JMP和CALL指令

。汇编格式:(a)R(R为16位通用寄存器)(b)存储器寻址方式之一若JMP和CALL指令采用格式(a),即寄存器寻址,则指令中指定的寄存器内容便是转移地址,当CPU执行JMP或CALL指令时,就将该寄存器的内容装入IP。若JMP和CALL指令采用格式(b)中的一种存储器寻址时,则转移地

址便是字存储单元的内容,当CPU执行JMP或CALL指令时,就将该字存储单元的内容装入IP。汇编语言淮南师范学院重点课程(3)段间直接寻址此寻址方式,转移后的指令与转移指令本身不在同一代码段中。转移地址(即IP和CS值)由指令直

接给出。汇编格式:FARPTR标号它只适用于JMP和CALL指令。例如:JMPL2(标号L2与本JMP指令不在同一代码段中)。(4)段间间接寻址此寻址方式也只适用于JMP和CALL指令。转移后的指令与转移指令本身不在同一代码

段中。转移地址(即IP和CS值)由采用存储器寻址方式之一确定的双字存储单元内容间接给出。汇编格式:存储器寻址方式之一执行JMP或CALL指令时,根据指令中指定的某种存储器寻址方式找到内存的一个双字(32位),将高字内容装入CS,将低字

内容装入IP,实现段间转移。例如:JMPDWORDPTR[BX]返回汇编语言淮南师范学院重点课程3.38086指令系统8086指令系统按功能可分为六大类:(1)数据传送类指令(2)算术运算类指令(3)位操作指令(4)串操作指令(5)控制转移指令(6)处理器控制指令8086指令按操作数个数可划

分为三种类型:(1)双操作数指令(2)单操作数指令(3)无操作数指令学习汇编指令应从以下几方面着重理解掌握:(1)学习指令格式;(2)掌握指令中操作数的寻址方式及寻址方式的搭配规则;(3)掌握指令的功能及指令执行后对条件码的影响;(4)学习如何正确运用指令。汇编语言淮南师范学院

重点课程一、数据传送指令1.通用数据传送指令(1)传送指令MOV格式:MOVOPD,OPS功能:把源操作数传送到目的操作数。即:OPD←(OPS)说明:①源操作数和目的操作数的操作类型必须明确且一致;当指令中只有一个操作数的类型明确时,另一个操作数被视为同一

类型;当两操作数类型均不明确时,必须用“BYTEPTR”或“WORDPTR”将一个存储器操作数定义为字节或字类型。②指令执行后,源操作数内容不变。③指令执行后,对标志寄存器各位无影响。④源操作数可以是通用寄存器、段寄存器、存储器和立即数;目的操作数也可以是通用

寄存器、段寄存器、存储器,但立即数、CS段寄存器不能作为目的操作数。源操作数和目的操作数不能同时为存储器操作数。汇编语言淮南师范学院重点课程用一条MOV指令能实现:(a)立即数传送到通用寄存器或存储单元如MOVDL,’a’

、MOVAX,1FA4H(b)寄存器之间的传送如MOVAX,BX、MOVAL,DH、MOVDS,AX(c)寄存器与存储单元之间的传送如MOVDL,BUFBYTEMOVWORDPTR[BX+SI],AX由于MOV指令中只允许一个操作数在存储器中,因此用一条MOV指令无法完成

两个存储单元之间的数据传送,但可以用二条指令来实现。【例3.9】把BUFWORD1字单元内容传送到BUFWORD2字单元中,可用以下指令完成:MOVAX,BUFWORD1MOVBUFWORD2,AX汇编语言淮南师范学院重点课程(2)交换指令XCHG格式:XCHGOPD,OPS功能:源操作数

和目的操作数的内容相互交换。即:(OPD)←→(OPS)说明:该指令与MOV指令相似,但在功能上有两点区别,其一,该指令不允许使用立即数和段寄存器作为操作数;其二,该指令改变源操作数的内容。(3)查表转换指令XLAT格式:XLAT或XLATOPS功能:将(BX)为首址(AL)为位移量的字节存储

单元中的数据传送到AL中。即:AL←([BX+AL])字节汇编语言淮南师范学院重点课程2.地址传送指令地址传送指令主要用于将存储器操作数地址(偏移地址、段地址)传送给指定的寄存器。它包括3条指令:LEA、LDS和LES。(1)传送有效地址指令LEA格式:LEAREG16,

OPS功能:将源操作数的有效地址EA传送给目的操作数指定的16位通用寄存器。说明:①源操作数必须是存储器操作数,即OPS采用存储器寻址;目的操作数必须是一个16位通用寄存器。②本指令对标志位无影响。③该指令通常用来建立内存储器的寄存器指针。汇编语言淮南师范学院重点课

程(2)传送偏移地址及数据段首址指令LDS格式:LDSREG16,OPS功能:将由源操作数确定的双字存储单元的内容传送给DS及目的操作数指定的16位通用寄存器中,其中高字单元的内容送给DS,低字单元的内容送给REG16。说明:①源操作数必须是双字存储器操作数,即:OPS采用存储器

寻址,寻找到相继4个字节的存储单元,低字单元中存放偏移地址,高字单元中存放段首地址;目的操作数必须是一个16位通用寄存器,通常特定为SI。②本指令不影响标志位。(3)传送偏移地址及附加段首址指令LES格式:LESREG16,OPS功能:将由源操作数确定的双字存储单元的内容传送给ES及目

的操作数指定的16位通用寄存器中,其中高字单元的内容送给ES,低字单元的内容送给REG16。说明:同LDS指令。汇编语言淮南师范学院重点课程3.标志位传送指令标志位传送指令有4条指令,即:LAHF、SAHF、PUS

HF和POPF。(1)标志送AH指令LAHF格式:LAHF功能:将标志寄存器低8位的内容送入AH寄存器。即:AH←(FLAGS)7-0,该指令的执行不影响标志位。(2)AH标志送指令SAHF格式:SAHF功能:将AH寄存器的内容送入标志寄存器低8位,高8位保持不变。该指令用于设置或恢

复SF、ZF、AF、PF、CF五个标志位,该指令的执行只影响标志寄存器的低8位,对高8位(即OF、DF、IF、TF)标志位无影响。从指令的功能上可看出,SAHF和LAHF为互逆过程。汇编语言淮南师范学院重点课程(3)标志进栈指令PUSHF格式:PUSHF功能:将标志寄存器的内容压入

堆栈。(4)标志出栈指令POPF格式:POPF功能:将栈顶字单元内容弹出到标志寄存器中。该指令的执行影响标志位。PUSHF和POPF互为逆过程。标志位传送指令中SAHF和POPF指令将直接影响标志寄存器的内容。利用这一特性,可以方便地改变标志寄存器中指定位的状态

.数据传送类指令还包括输入/输出专用指令,在PC机里所有I/O端口与CPU之间的通信都由IN和OUT指令实现,由IN指令完成从I/O端口到CPU的信息传送,由OUT指令完成从CPU到I/O端口的信息传送。汇编语言淮南师范

学院重点课程二、算术运算指令算术运算指令用来执行加、减、乘、除四则运算。它包括无符号数、有符号数的二进制算术运算指令和十进制算术运算调整指令。1.二进制数算术运算指令(1)加法运算指令加法运算指令包括ADD、ADC的INC三条指令。

①加法指令ADD格式:ADDOPD,OPS功能:将目的操作数与源操作数相加,结果存入目的地址中,而源操作数不变。即:OPD←(OPD)+(OPS)。说明:该指令的源操作数或在通用寄存器或在存储单元中,也可以是立即数,而目的操作数只能在通用寄存器或存储单元中,不能是立即数,且两操作数不

能同时为存储器操作数;操作数可以是字节或字,且两操作数的类型明确并一致。该指令相加后,根据得到的结果设置标志寄存器的OF、SF、ZF、CF、AF和PF标志位。ADD指令执行后对标志位的影响及作用如下,这里我们只重点说明OF、CF、SF和ZF四个标志位。汇编语言淮南师范学院重点课程OF:当两个有符号

数相加时,若两个操作数的符号相同,而结果的符号与之相反,则OF=1,否则,其余情况OF=0。当OF=1时,说明两个有符号数相加产生了溢出,即和的值超出了有符号数的有效范围。在把操作数视为有符号数时,可通过该标志了解加法结果是否正确。CF:

运算过程中当最高位产生进位时,则CF=1,否则,CF=0。当CF=1时,说明运算结果超出了无符号数的表示范围。在把操作数视为无符号数时,可通过该标志了解加法结果是否正确。SF:运算结果的最高位为1,则SF=1,否则,SF=0。ZF:运算结果为零时,则ZF

=1;否则,ZF=0。汇编语言淮南师范学院重点课程②带进位加法指令ADC格式:ADCOPD,OPS功能:与ADD指令基本相同,惟一区别是将该指令执行前的CF值加至目的操作数中。即:OPD←(OPD)+(OPS)+CF说明:该指令与ADD指令在

功能上及结果对标志位影响上基本相同。该指令主要用于多字节的加法运算。③加1指令INC格式:INCOPD功能:将目的操作数加1后送回目的地址中,并根据执行结果设置标志位OF、SF、ZF、AF、PF,但不影响CF位。说明:该指令的操作数可以是字或字节且类型必须明确。其操作数只能在通用

寄存器或存储单元中,不能是立即数。该指令执行后对OF、SF、ZF、AF、PF标志位的影响与ADD指令相同。INC主要用于计数器的计数或修改地址指针。汇编语言淮南师范学院重点课程(2)减法运算指令减法运算指令包括SUB、SBB、DEC、NEG和CM

P五条指令。①减法指令SUB格式:SUBOPD,OPS功能:目的操作数减去源操作数,其差值存入目的地址,源操作数不变,即:OPD←(OPD)-(OPS)。并按相减的结果设置标志位OF、CF、SF、ZF、AF和PF。说明:该指令的源操作数和目的操作数可以在通用寄存器或存储单元中

,但两者不能同时在存储器中,立即数可作为源操作数,而不能作为目的操作数。两操作数可以是字节或字,且类型明确一致。SUB指令执行后对标志位的影响与ADD指令类似,下面仅说明CF和OF两位的设置情况及作用:OF:当两个有符号数相减时,若两个操作数的符号相反,而结果的符号与减数相同,则OF=

1,否则,其余情况OF=0。OF=1时,说明有符号数减法溢出,结果是错误的。OF位可用来判断有符号数相减,结果是否正确。CF:当两无符号数相减时,若减数大于被减数,则此时有借位,CF=1,否则CF=0,CF值反映了无符号数相减时是否有借位。汇编

语言淮南师范学院重点课程②带借位减法指令SBB格式:SBBOPD,OPS功能:SBB与SUB指令基本相同,惟一区别是:目的操作数除减去源操作数外,还要减去该指令执行前的CF值。即:OPD←(OPD)-(OPS)-CF。并按相减的结果设置标志位O

F、CF、SF、ZF、AF和PF。说明:该指令与SUB指令在功能上及结果对标志位的影响上基本相同。该指令在使用上类似于ADC指令,主要用于多字节减法运算。SUB和SBB指令配合可以实现多倍精度数减法运算。③减1指令DEC格式:DECOPD功能

:将目的操作数减1后送入目的地址中,并根据执行结果设置标志位OF、SF、ZF、AF和PF,但不影响CF位。即OPD←(OPD)-1。说明:该指令的操作数可以是字节或字且类型必须明确;其操作数只能在通用寄存器或存储单元中,不能是立即数。该指令执行后对OF、SF、ZF、AF、PF的影响与S

UB指令相同。汇编语言淮南师范学院重点课程④求负数指令NEG格式:NEGOPD功能:用零减去目的操作数,相减结果送回目的地址中。即:OPD←0-(OPD)=-(OPD)即求目的操作数的相反数。说明:(a)该指令是单操作数指令,OPD的用法与前面讲过的单

操作数指令,如INC、DEC)中的目的操作数相同。(b)NEG指令是对有符号数进行操作的,由于机器中有符号数是用补码表示的,求一个操作数的负数,就是求其补码,因此,NEG又叫求补指令,即:OPD←(OPD)+1。(c)该指令执行后影响标

志位CF、OF、SF、ZF、AF和PF。其中:OF:当字节操作数为-128(80H),字操作数为-32768(8000H),执行NEG指令后,操作数无变化,但溢出标志位OF置1,其余情况OF置0。CF:当操作数为零时,求负数的结果仍为零,CF=0

,其余情况CF=1汇编语言淮南师范学院重点课程⑤比较指令CMP格式:CMPOPD,OPS功能:目的操作数减去源操作数,结果只影响标志位,不送入目的地址即:(OPD)-(OPS)。说明:CMP指令与SUB指令一样执行减法操作,但它不保存差值结果,OPD和OP

S在操作前后值不变。CMP指令功能上、使用方法上、对标志位的影响上均与SUB指令基本相同。CMP指令常用于比较两个操作数的大小。执行CMP指令后,根据标志位的设置情况判断两个数的大小关系。若两无符号数比较时:当ZF=0时,则OPD

=OPS;否则:当CF=0时,则OPD>OPS;当CF=1时,则OPD<OPS。若两有符号数比较时:当ZF=0时,则OPD=OPS;否则:当OF=SF时,则OPD>OPS;当OF≠SF时,则OPD<OPS。CMP指令后面常跟着条件转移指令,根据比较结果产生不同

的分支。汇编语言淮南师范学院重点课程(3)乘法运算指令乘法指令用于实现两个二进制操作数的乘法运算,乘法指令区别无符号数和有符号数,所以它提供了两条指令:MUL和IMUL。①无符号数乘法指令MUL格式:MULOPS功能:实现两个无符号数相乘。字节乘:当OPS为字节操作数时,将

(AL)乘以(OPS),得到字乘积送入AX中,即:AX←(AL)×(OPS)。字乘:当OPS为字操作数时,将(AX)乘以(OPS),得到双字乘积,高字部分送入DX中,低字部分送入AX中。即:DX,AX←(AX)×(OPS)。说明:(a)MUL指令有两种操作类型,即字节乘和字乘,MUL操作类型

取决于OPS的类型,OPS指定乘数,它可以是字节或字,但类型必须明确,乘数可以在通用寄存器或存储器中,但不能是立即数。(b)MUL指令只影响OF和CF位。汇编语言淮南师范学院重点课程若乘积的高一半(即字节相乘时乘积中的(A

H),字相乘时乘积中的(DX))为0,则OF=CF=0,否则OF=CF=1。MUL指令对其它标志位不确定。当CF=OF=1时,说明AH或DX中有乘积的有效数字,CF=OF=0时,说明AH或DX中无乘积的有效数字,也就是说字节乘以字节积为字节或字乘以字积为字。编程时我们可以利用OF和CF

位的设置情况检查字节乘时乘积的结果是字节还是字,字乘时乘积的结果是字还是双字。②有符号数乘法指令IMUL格式:IMULOPS功能:实现了两个有符号数相乘。其操作方法与MUL指令相同。说明:IMUL指令也只影响OF和CF位,对其它标志位不确定。若乘积的高一半(即AH或DX)是

低一半(即AL或AX)的符号扩展,则OF=CF=0,否则,OF=CF=1。当OF=CF=1亦标志着AH或DX中放有乘积的有效值,即标志着(AH)和(DX)不是对应的低半部分的符号扩展。汇编语言淮南师范学院重点课程(4)除法运算指令除法指令用于实现两个二进

制操作数的除法运算,包括无符号数除法指令DIV和有符号数除法指令IDIV。①无符号数除法指令DIV格式:DIVOPS功能:实现两无符号数除法运算,商和余数均为无符号数。字节除:当OPS为字节操作数时,则以(AX)为被除数,OPS为除数,将(AX)除以(OPS),得到的商送入AL中,余数

送入AH中。即:(AX)/(OPS)→AL(商)AH(余数)字除:当OPS为字操作数时,则以(DX,AX)为被除数,OPS为除数,将(DX,AX)除以(OPS),得到的商送入AX中,余数送入DX中。即:(DX,

AX)/(OPS)→AX(商)DX(余数)汇编语言淮南师范学院重点课程说明:(a)DIV指令有两种操作类型,即字节除和字除,其操作类型取决于OPS的类型,OPS指定除数,它的类型必须明确,它可以在通用寄存器或存储器中,但不能是立即数。DIV指令

的被除数、商和余数均采用隐含寻址方式,当字节除时,被除数隐含在AX中,商固定存入AL中,余数固定存入AH中;当字除时,被除数隐含在DX,AX中,商固定存入AX中,余数固定存入DX中。(b)DIV指令执行后,标志寄存器中各标志位不确定,但商可产生溢出。一般情况

下,当被除数的高一半(即字节除时为(AH),字除时为(DX))大于除数时,商就会产生溢出。当OPS为字节操作数时,商的范围为0-255(0FFH);当OPS为字操作数时,商的范围为0-65535(0FFFFH)。若商超出此范围,则产生0号中断(除

法出错中断),转入除法出错中断处理。汇编语言淮南师范学院重点课程②有符号数除法指令IDIV格式:IDIVOPS功能:实现两有符号数除法运算,该指令中的操作数、商及余数均为有符号数且用补码表示,除此之外,其余操作与DIV完全相同。说明:(a)IDIV指令商

的符号由被除数符号与除数符号异或运算而得到,余数的符号规定与被除数的符号相同。(b)有符号数除法的商中,最大的正数商是+127(7FH)或+32767(7FFFH),最小的负数商是-127(81H)或-32767(8001H)。当商超出此范围,指令产生了溢出。一般情况下,

当被除数高一半(AH或DX)的绝对值大于除数的绝对值时,则可判断IDIV指令操作结果产生了溢出,即产生0号中断。③字节转换成字指令CBW格式:CBW功能:将(AL)的符号位扩展到AH中。④字转换成双字指令CWD格式:CWD功能:将(AX)的符号位扩展到

DX中。汇编语言淮南师范学院重点课程2.十进制算术运算调整指令十进制算术运算调整指令又称为BCD码调整指令。当用计算机进行十进制算术运算时,可以先将操作数作十→二进制转换,然后作二进制数算术运算,再将结果作二→十进制转换。为了方便十进制数的运算,8086系统提供了一组十进制算术运算调整指令,用于

将运算后的二进制数调整为BCD码。该类指令分为压缩BCD码调整指令和非压缩BCD码调整指令。注意:十进制调整指令不能单独使用,必须与加、减、乘、除二进制指令配合使用才能进行十进制调整,十进制调整指令形式

上均为无操作数指令,其操作对象隐含在AX中。(1)非压缩BCD码调整指令①非压缩BCD码加法调整指令AAA。格式:AAA功能:将AL中的和调整为非压缩BCD码并送回AL。具体调整方法如下:若二进制相加后(AL)的低4位大于9或AF=1,则:AL←(AL)+6;AH←(AH)

+1;AF=CF=1且AL高4位清零。否则:CF=AF=0且AL高4位清零。其他标志位OF、PF、SF、ZF不确定。说明:在使用AAA指令前,必须执行ADD、ADC或INC指令把非压缩BCD相加,且把和存放在AL中。汇编语言淮南师范学院重点课程②非压缩BCD码减法调整指令AAS。

格式:AAS功能:将AL中的差调整为非压缩BCD码并送回AL,向高位的借位在AH和CF中。具体调整方法如下:若二进制相减后(AL)的低4位大于9或AF=1,则:AL←(AL)-6;AH←(AH)-1;AF=CF=1且AL高4位清零。否则:CF=AF=0且

AL高4位清零。其他标志位OF、PF、SF、ZF不确定。说明:在使用AAS指令前,必须执行SUB、SBB或DEC指令把非压缩BCD相减,且把差存放在AL中。③非压缩BCD码乘法调整指令AAM。格式:A

AM功能:将AL中的积调整为非压缩BCD码并送回AX。具体调整方法是:把AL寄存器的内容除以0AH,并把商放在AH寄存器中,余数放在AL寄存器中。④非压缩BCD码除法调整指令AAD。格式:AAD功能:除法运算前,先调整被除数AX内容,使:AL←(AH

)*0AH+(AL),AH←0汇编语言淮南师范学院重点课程(2)压缩BCD码调整指令①压缩BCD码加法调整指令DAA。格式:DAA功能:将AL中的和调整为压缩BCD码并送回AL。本指令执行之前必须先执行ADD或ADC指令,把两个压缩BCD码相加,且和存放在AL寄存器中。具体调整方

法是:若(AL)的低4位大于9或AF=1,则:AL←(AL)+06H,并使AF=1;若(AL)的高4位大于9或CF=1,则:AL←(AL)+60H,并使CF=1;其余情况AL内容不变。说明:DAA指令影响CF、ZF、SF、AF和PF,对

OF无定义。②压缩BCD码减法调整指令DAS。格式:DAS功能:将AL中的差调整为压缩BCD码并送回AL。本指令执行之前必须先执行SUB或SBB指令,把两个压缩BCD码相减,且差存放在AL寄存器中。具体调整方法是:若(AL

)的低4位大于9或AF=1,则:AL←(AL)-06H,并使AF=1;若(AL)的高4位大于9或CF=1,则:AL←(AL)-60H,并使CF=1;其余情况AL内容不变。说明:DAS指令影响CF、ZF、SF、AF和PF

,对OF无定义。汇编语言淮南师范学院重点课程三、位操作指令8086提供的位操作指令包括逻辑运算指令和移位指令,这类指令可直接对寄存器或存储器中的位进行操作。1.逻辑运算指令逻辑运算指令包括:AND指令、OR指令、XOR指令、TEST指令和NOT指令

,其中前四种指令是双操作数指令,符合双操作数指令的一般规律,这四条指令执行后将使CF和OF位为0,AF位不确定,而SF、ZF和PF位则根据运算结果设置;NOT指令是单操作数指令,符合单操作数指令的一般规律,它的执行不影响标志位。(1)逻辑与指令格式:ANDOPD,OPS功能:将目的操作数与源操作

数按位相与,结果送目的操作数。即:OPD←(OPD)∧(OPS)。说明:①“与”的运算原则是:1∧1=1,0∧1=0,1∧0=0,0∧0=0。②AND指令常用于:(a)使一个操作数中的若干位保持不变,而若干位清为0的场合。(b)某一操作

数,自己和自己相“与”,操作数不变,但可以使进位标志CF清0。汇编语言淮南师范学院重点课程(2)逻辑或指令格式:OROPD,OPS功能:将目的操作数与源操作数按位相或,结果送目的操作数。即:OPD←(OPD)∨(OPS)。说明:①“或”操作的运算原则是:1∨1=1,0∨1=1,1∨0=1,0∨0=

0。②OR指令常用于:(a)使一个操作数中的若干位保持不变,而另外若干位置1的场合。这时,要保持不变的这些位与“0”相或;而要置1的这些位与“1”相或。(b)某一操作数,自己和自己相“或”,操作数不变,但可以使进位标志CF清0。(3)逻辑异或指令格式:XOROPD,OPS功能:将

目的操作数与源操作数按位相异或,结果送目的操作数。即:OPD←(OPD)⊕(OPS)。汇编语言淮南师范学院重点课程说明:①“异或”操作的运算原则是:1⊕1=0,0⊕0=0,0⊕1=1,1⊕0=1。②XOR指令常用于:(a)使一个操作数中的若干位保持不变,而另外若干位取反的场合。这时,要保持

不变的这些位与“0”相异或;而要取反的那些位与“1”相异或。(b)使某一操作数清0。由于一个操作数自身做“异或”时,每一位都相同,“异或”结果必为0,且使进位标志也为0。因此这是使操作数的初值置0的常用的有效的方法。如指令XORAX,AX使AX清0。(c)测试某一

操作数是否与另一确定的操作数相等。这种操作在检查地址是否匹配时是常用的。(4)测试指令格式:TESTOPD,OPS功能:目的操作数与源操作数按位相与,结果反映在标志位上,但不送回目的操作数。即:(OPD)∧(OPS

)。汇编语言淮南师范学院重点课程说明:①该指令完成与AND指令相同的操作,但TEST指令不改变目的操作数的值。②TEST指令常用于:在不希望改变原有的操作数的情况下,用来检测某一位或某几位的条件是否满足。编程时常与条件转移指

令一起使用,可在TEST指令后面加上条件转移指令,来测试操作数某位是否为1,或者是否为0。(5)逻辑非指令格式:NOTOPD功能:将目的操作数各位取反,结果送目的操作数。即:OPD←(OPD)。说明:若将整个

操作数取反,则应使用NOT指令,若只需将操作数的一部分位取反,则应使用XOR指令。总之,逻辑运算指令对字或字节执行按位操作,主要用于将字或字节的指定位进行置“1”、清“0”、取反的操作、测试字或字节指定的位,以及对字、字节数据进行拆分与拼装操作。汇编语言淮南师范学院重点

课程2.移位指令移位指令包括逻辑移位指令、算术移位指令和循环移位指令。这些指令都对目的操作数按操作符规定的方式向左或向右移动指定位数的操作。(1)逻辑左移指令格式:SHLOPD,COUNT功能:将目的操作数向左移动COUNT指定的位数,每左移一位,最低位

补0,最高位送CF。(2)逻辑右移指令格式:SHROPD,COUNT功能:将目的操作数向右移动COUNT指定的位数,每右移一位,最高位补0,最低位送CF。(3)算术左移指令格式:SALOPD,COUNT功能:SAL指令与SHL指令的功能完全相同。(4)算术右移指令格式:

SAROPD,COUNT功能:将目的操作数向右移动COUNT指定的位数,每右移一位,最高位均保持不变,最低位送CF。汇编语言淮南师范学院重点课程(5)循环左移指令ROL格式:ROLOPD,COUNT功能:将目的操作数向左循环移位COUNT指定

的位数,每左移一位,左移前的最高送最低位以及CF。(6)循环右移指令ROR格式:ROROPD,COUNT功能:将目的操作数向右循环移位COUNT指定的位数,每右移一位,右移前的最低送最高位以及CF。(7)带

进位的循环左移指令RCL格式:RCLOPD,COUNT功能:将目的操作数连同CF位一起向左循环移位COUNT指定的位数,每左移一位,左移前的CF送最低位,左移前的最高位送CF。(8)带进位的循环右移指令RCR格式:RCROPD,COUNT功能:将目的操作数连同CF位一起向右循环移位COU

NT指定的位数,每右移一位,右移前的CF送最高位,右移前的最低送CF。汇编语言淮南师范学院重点课程四、处理器控制指令1.标志位操作指令(1)清除进位标志指令(2)进位标志置位指令CLC;置CF=0STC;置CF=1(3)进位标志取反指令CMC;CF取反(

4)清除方向标志指令(5)方向标志置位指令CLD;置DF=0STD;置DF=1(6)清除中断标志指令(7)中断标志置位指令CLI;置IF=0STI;置IF=12.处理器控制指令(1)空操作指令格式:NOP功能:CPU执行一次空操作。(2)暂停指令格式:HLT功

能:使CPU进入暂停状态,不进行任何操作。(3)等待指令格式:WAIT功能:使CPU处于等待状态。返回汇编语言淮南师范学院重点课程3.4、80X86及Pentium扩展指令80x86及Pentium处理器的指令系统都包括了各自前期处理器的全部指令,并在此基础上对前期处理器的指令系统进行了增强和扩

展。1、80286增强和扩展指令80286指令系统除了包括所有的8086指令及对上述部分指令进行了功能扩展之外,还新增了一些指令,并在原有工作模式基础上增加了一种新的工作模式,即保护虚地址模式。(1)80286工作模式(

a)实地址模式。80286系统上电启动后,就进入了实地址模式,在此模式下,80286与8086在目标代码一级是向上兼容的,存储器最大的可访问空间为1MB,CPU产生20位物理地址的方法、段的结构以及存储区中专用单元和保留单

元均与8086相同。在实地址模式下,用LMSW指令设置机器状态字MSW中的PE标志,可进入保护虚地址模式。(b)保护虚地址模式。该工作模式是集实地址模式的能力、存储器管理、对虚拟存储器的支持和对地址空间

的保护为一体而建立起来的一种特殊工作方式。保护虚地址模式下的寄存器功能、指令功能及寻址方式等与实模式相同,8086的程序及80286在实地址模式下的程序都可以在保护虚地址模式下运行。汇编语言淮南师范学院重点课程(2)80286扩展指令(a)堆栈操作指令①PUSH16

位立即数将16位立即数压入堆栈,该指令不影响状态标志位。该指令中立即数如果给出的数不够16位,则自动扩展为16位后压入堆栈。②PUSHA将所有通用寄存器AX,CX,DX,BX,SP,BP,SI,DI的内容按顺序压入堆栈,入栈的SP值是执行该

指令之前SP的值,在执行完本指令后,SP值减16。③POPA将栈顶的内容顺序弹至DI,SI,BP,SP,BX,DX,CX,AX(次序与PUSHA指令相反)。SP中的值是堆栈中所有通用寄存器弹出后,堆栈指针实际指向的值(不是栈中保存的S

P值),也即该指令执行后SP的值,可以通过加16来恢复。PUSHA及POPA均不影响状态标志位。汇编语言淮南师范学院重点课程(b)有符号整数乘法指令。①IMUL16位寄存器,立即数将16位通用寄存器中的有符

号数作为被乘数,与有符号立即数相乘,乘积送回通用寄存器。若乘积超出字有符号数的表示范围(-32768--+32767),除丢失溢出部分外,并将OF及CF置为1;否则,将OF及CF置为0。②IMUL16位寄存

器,16位寄存器,立即数该指令与上一条指令功能类似,区别仅在于将16位存储器操作数作为被乘数与立即数相乘,结果送16位寄存器。(c)移位指令。8086中有8条移位指令,移位计数使用CL或1表示,且规定当移位次数大于1时,必须使用CL。在80286中,

则修改了上述的限制,当移位次数为,1~31次时,允许使用立即数。例如:RORBX,7。汇编语言淮南师范学院重点课程2、80386增强和扩展指令80386微处理器是Intel公司80x86发展史上的里程碑,它不但兼容8086,80186,80286微处理器,

而且也为后来的80486,Pentium,PentiumPro的发展打下了坚实的基础。80386指令系统包括了所有80286指令,并对80286的部分指令进行了功能扩充,还新增了一些指令,特别指出的是,80386提供了32位寻址方式,可对32位数据直接操作

。所有16位指令均可扩充为32位指令。80386有8个32位通用寄存器:EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI。它们分别是原来的16位通用寄存器AX,CX,DX,BX,SP,BP,SI,DI的扩

展。对于数据段寄存器,80386在原有基础上增加了两个:FS和GS。80386有实地址模式、保护虚地址模式和虚拟8086模式三种工作方式,在DOS环境中只能运行实模式,可做为超高速8086芯片使用。80386的标志寄存器扩展到了32位,其中某些位没有定义。80

386在实地址模式下有9个标志位可用,在保护虚地址模式下有13个标志位可用,扩展后的标志寄存器称为EFLAGS。汇编语言淮南师范学院重点课程(1)数据传送指令(a)MOVSX寄存器,寄存器/存储器将源操作数传送到目的操作数中。目的操作可以是16位或32位寄存器;源操作数可以是寄存器或

存储器操作数,其位数应小于或等于目的操作数的位数。当源操作数的位数少于目的操作数时,目的操作数的高位用源操作数的符号位填补。,此指令适用于有符号数的传送与扩展。该指令不影响状态标志位。(b)MOVZX寄存器,寄存器/存储器与MOVSX

功能基本相同,惟一区别在于,当源操作数的位数少于目的操作数位数时,目的操作数的高位用“0”填补。该指令适用于无符号数的传送与扩展。汇编语言淮南师范学院重点课程(2)堆栈操作指令(a)PUSH32位立即数将32位立即数压入堆

栈。该指令执行后SP的值将减4。通常使用以下方法来区别操作数是8位,16位还是32位立即数:PUSH23H,PUSHW14H,PUSHD45H。(b)PUSHAD将所有通用寄存器EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI的内容顺序压入堆栈,其中压入堆栈的ESP是该指令

执行前ESP的值。执行该指令后,ESP值减32。(c)POPAD将当前栈顶内容顺序弹至EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX(次序与PUSHAD指令相反),但是最终ESP的值为弹出操作对堆栈指针调整后的值(而不是堆栈中

保存的ESP的值)。即执行该指令后ESP的值,可以通过增加32来恢复。(d)PUSHFD将32位标志寄存器EFLAGS的内容压入堆栈。(e)POPFD将当前栈顶的4字节内容弹至EFLAGS寄存器。上述堆栈操作指令中,除POPFD以外,其余均不影响状态标志位。

汇编语言淮南师范学院重点课程(3)地址传送指令(a)LFS寄存器,存储器将源操作数所指存储单元的4字节或6字节内容送指定的寄存器及段寄存器FS。当目的操作数为16位寄存器时,将4字节的存储器操作数中的低两字

节送指定寄存器,高两字节送段寄存器FS;当目的操作数为32位寄存器时,将6字节的存储器操作数中的低4字节送指定寄存器,高两字节送段寄存器FS。该指令不影响状态标志位。(b)LGS寄存器,存储器该指令与LFS指令功能基本相同,惟一区别是该指令所涉及

的段寄存器为GS。(c)LSS寄存器,存储器该指令与LFS指令功能基本相同,惟一区别是该指令所涉及的段寄存器为SS。汇编语言淮南师范学院重点课程(4)有符号数乘法指令(a)IMUL寄存器,寄存器/存储器将16位或32位通用寄存器中的有符号数作为被乘数,相同位数通用寄存

器或存储单元中的有符号数作为乘数,乘积送目的操作数。若乘积溢出,溢出位部分将丢失,且将OF及CF置1,否则将OF及CF置0。注意:目的操作数的位数必须与源操作数位相同。(b)IMUL寄存器,寄存器/存储

器,立即数与前一指令功能基本相同,惟一区别是寄存器/存储器为被乘数,立即数为乘数,乘积存放在第一个操作数中。(5)符号扩展指令(a)CWDE将AX中16位有符号数的符号位扩展到EAX的高16位中,即把AX

的16位有符号数扩展为32位后,送EAX。(b)CDQ将EAX中32位有符号数扩展到EDX:EAX寄存器对中,使之成为64位有符号数,即将EAX中的符号位扩展到EDX中。汇编语言淮南师范学院重点课程(6)位操作指令(a)位测

试及设置指令①BT寄存器/存储器地址,寄存器/立即数第一操作数指定要测试的内容,第二操作数指定要测试的位,将被测内容的指定测试位的值送CF,其他状态标志不确定。②BTC寄存器/存储器地址,寄存器/立即数该指令在

BT指令功能的基础上,将被测位取反。③BTR寄存器/存储器,寄存器/立即数该指令在BT指令功能的基础上,将被测位清0。④BTS寄存器/存储器,寄存器/立即数该指令在BT指令功能基础上,将被测位置1。(b)位扫描指令。①BSF寄存器,寄存器/存

储器对第二操作数从最低位到最高位进行扫描,将首先扫描到的“1”的位号送第一操作数,且使ZF置0。若第二操作数的各位均为0,则第一操作数的值不确定,且使ZF置1。其他状态标志位不确定。②BSR寄存器,寄存器/存储器与BSF指令功能基本相同,惟一区别是该指令是从最高位到最

低位进行扫描。汇编语言淮南师范学院重点课程(7)移位指令80386中增加了一组新的移动多位的指令。它们可以把指定的一组位左移或右移到一个操作数中去。(a)SHLD寄存器/存储器,寄存器,CL/立即数将第一操作数左移若干位,空出位用第二操作数高位

部分填补,但第二操作数内容不变,CF标志位中保留第一操作数最后的移出位。若仅移一位,当CF值与移位后的第一操作数的符号位不一致时,OF置1,否则,OF置0。(b)SHRD寄存器/存储器,寄存器,CL/立即数将第一操作数右移

若干位,空出位用第二操作数低位部分填补,指令执行后,第二操作数内容不变,CF标志位保留第一操作数最后的移出位。(8)条件设置指令这是80386特有的指令用于测试指定的标志位所处的状态,并根据测试结果,将指定的一个8位寄存

器或内存单元置1或置0。指令格式:SET条件寄存器/存储器说明:条件是指令助记符的一部分,用于指定要测试的标志位。汇编语言淮南师范学院重点课程3、80486新增指令80486指令系统与80386指令系统的差异不大,仅仅是在80386指令系统的基础上新增了几条指令。

(1)字节交换指令格式:BSWAP寄存器功能:将32位通用寄存器以字节为单位进行高低字节的交换,即对指定寄存器的32位操作数的位31-24与位7-0,位23-16与位15-8交换。该指令不影响状态标志位。(2)互换并相加指令格式:XADD寄存

器/存储器,寄存器功能:将第一操作数与第二操作数内容互换,并将两者之和送第一操作数。该指令对状态标志位的影响与ADD指令相同。(3)比较并交换指令格式:CMPXCHG寄存器/存储器,寄存器功能:将第一操作数内容与对应长度累加器内容作比较,若相等,则使ZF置1,且将第二操作

数内容送第一操作数;否则使ZF清0,且第一操作数送对应累加器。若(ESI)=(EAX),则ZF=1,且将(EBX)送ESI;否则ZF=0,且将(ESI)送EAX。汇编语言淮南师范学院重点课程(4)Cache管理指令(a)使整个片内Cache无效指令格式:INVD该指令用于

将CPU内部Cache的内容无效。其具体的操作是刷新内部Cache,并分配一个专用总线周期刷新外部Cache,执行该指令不会将外部Cache中的数据写回主存,即Cache中数据自然丢失。(b)写回并使Cache无

效指令格式:WBINVD该指令功能与INVD相似,具体操作是刷新内部Cache。并分配一个专用总线周期将外部Cache的数据写回主存,并在此后的一个专用总线周期将外部Cache刷新。(c)使TLB无效指令格式:I

NVLPG该指令使页式管理机构内的高速缓冲器TLB中的某一项作废。若TLB中含有一个存储器操作数映像的有效项,则该TLB项被标记为无效。汇编语言淮南师范学院重点课程4、Pentium新增指令与80486相比,Pentium新增了几条指令,但

某些新增的指令是否有效与Pentium的型号有关,可利用处理器特征识别指令CPUID判别处理器是否支持某些新增指令。(1)8字节比较交换指令格式:CMPXCHG8B存储器功能:将EDX:EAX中的8字节值与指定的8字节存储器操作数相比较,若相等,则使ZF置1,且将ECX:EBX中的值送指定的8

字节存储单元替换原有存储器操作数;否则使ZF=0,且将指定的8字节存储器操作数送EDX:EAX。(2)处理器特征识别指令格式:CPUID功能:根据EAX中的参数,将处理器的说明信息送EAX,特征标志字送EDX。汇编语言淮南师范学院重点课程(3)读时间标记计数器指令格式

:RDTSC功能:将Pentium中的64位时间标记计数器的高32位送EDX,低32位送EAX。该计数器随每一个时钟递增,在Reset后该计数器被置0。利用该计数器可检测程序运行性能。(4)读模型专用寄存器指令格式:RDMSR功能:将ECX所指定的模型专用寄存器

的内容送EDX、EAX,具体来说,高32位送EDX,低32位送EAX。若所指定的模型寄存器不是64位,则EDX、EAX中的对应位无定义。(5)写模型专用寄存器指令格式:WRMSP功能:将EDX、EAX的内容送到由ECX指定的模型专用寄存器。具体来说,EDX和EAX的内容分别作为高3

2位和低32位。若指定的模型寄存器有未定义或保留的位,则这些位的内容不变。返回

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?