收藏 分销(赏)

新编汇编语言.pptx

上传人:精**** 文档编号:4238396 上传时间:2024-08-29 格式:PPTX 页数:85 大小:210.75KB
下载 相关 举报
新编汇编语言.pptx_第1页
第1页 / 共85页
新编汇编语言.pptx_第2页
第2页 / 共85页
新编汇编语言.pptx_第3页
第3页 / 共85页
新编汇编语言.pptx_第4页
第4页 / 共85页
新编汇编语言.pptx_第5页
第5页 / 共85页
点击查看更多>>
资源描述

1、2.4 Intel 80 x86系列CPU内部结构汇编语言建立在机器指令基础之上汇编语言建立在机器指令基础之上,是一是一种描述硬件运转过程的语言种描述硬件运转过程的语言。每一种CPU都有自己的指令系统,因此在理解汇编语言基本概念前,必须先对计算机系统、CPU的内部结构和工作机制作一个概要的理解。本课程选用的CPU类型Intel Intel 推出的推出的80 x8680 x86系列处理器的性能和功能系列处理器的性能和功能越来越强。越来越强。但是,从汇编语言程序角度看,但是,从汇编语言程序角度看,80868086建立的实建立的实模式和模式和8038680386建立的保护模式模型到目前为止建立的保护

2、模式模型到目前为止一直适用。一直适用。本门课程的主要内容:以本门课程的主要内容:以80868086为例说明实模式为例说明实模式编程。编程。Intel80 x86系列微处理器性能对比系列微处理器性能对比CPU数数据据总总线宽线宽 度度地址总地址总线宽度线宽度寻址寻址能力能力工作模式工作模式808616201MB字节字节实模式实模式80888201MB字节字节实模式实模式80286162416MB字节字节实模式、保护模式实模式、保护模式80386SX162416MB字节字节实模式、保护模式实模式、保护模式80386DX32324GB字节字节实模式、保护模式实模式、保护模式80486DX32324G

3、B字节字节实模式、保护模式实模式、保护模式Pentium643664GB实模式、保护模式实模式、保护模式8086/8088 CPU内部结构8086和8088CPU内部结构是一致的,内部处理的最长二进制编码都是16位的。但是8086针对的数据总线是16位,8088是8位,两种CPU只是外部引脚有所区别。执行指令与读取指令读取指令读取指令:从地址总线发出内存地址,将内存中的指令逐条读取到CPU内部。执行指令执行指令:对机器指令译码,按时序产生控制信号,从而完成指令规定的时序过程。两种操作都是CPU自动进行自动进行的。程序能够控制CPU什么时候取指令、执行指令吗?执行指令与读取指令读取指令:一定使用

4、总线执行指令:不一定每个节拍都使用总线考虑流水线机制流水线机制:执行当前指令时,如果不使用总线,则同时读取下一条指令。8086/8088 CPU内部结构EU(Execute Unit):执行部件BIU(Bus Interface Unit):总线接口部件。有时它们在时间上进行交叠,形成了流水线工作方式,加快了CPU运转速度80888088的内部结构的内部结构1 2 3 4 内部暂存器内部暂存器 IP ES SS DS CS输入输入/输出输出控制电路控制电路外外部部总总线线执行部分执行部分控制电路控制电路ALU标志寄存器标志寄存器 AH AL BH BLCH CL DH DL SP BP SI

5、DI通用通用寄存器寄存器地址地址加法加法器器指令队列指令队列执行部件执行部件(EU)总线接口部件总线接口部件(BIU)16位位20位位8位位8位位8086/8088 CPU内部结构EU中的核心部件:(1)控制器控制器:计算机系统中控制所有功能部件(包括控制器本身)协同工作,自动执自动执行计算机程序的功能部件行计算机程序的功能部件。控制器执行指令的原理1)通过对机器指令译码产生控制信号2)按照指令规定的时序发出控制信号3)产生一系列时序过程来完成指令功能8086/8088 CPU内部结构(2)运算器运算器:计算机系统中加工、处理数据加工、处理数据的功能部件的功能部件,其功能包括算术运算和逻辑运算

6、。8086/8088 CPU内部结构 BIU中的核心部件:(1)总线控制逻辑总线控制逻辑:CPU与总线接口的逻辑电路,CPU与控制、地址、数据总线交互都必须使用这一功能部件。8086/8088 CPU内部结构(2)指令队列指令队列:这是一组CPU内部的存储单元,它的功能是存放后续将要执行的指令序列。由于EU和BIU两大模块的分工合作,CPU可以利用当前指令的运算周期启动BIU,将后续指令预先读取到指令队列中。指令队列当这些后续指令被执行时,CPU就不需要再使用总线到外部的存储单元去读取它们。因为从指令队列读取指令比从外部存储单元读取指令的速度快得多,所以CPU的工作效率得到提高。指令队列对于指

7、令是不可见的指令队列对于指令是不可见的。8086/8088 CPU内部结构(3)地址加法器地址加法器:是CPU用于产生外部存储单元物理地址的器件。由于CPU外部的地址总线是20位的,而CPU内部的寄存器最长为16位,为了协调此差异,CPU把外部存储单元的地址分为段基值和偏移量两个16位分量地址加法器物理地址物理地址:CPU通过地址总线定位某个外部存储单元时使用的地址,即真实的存储单元地址,内存物理地址具有20个bit。逻辑地址逻辑地址:由于CPU内部寄存器的长度限制,在CPU内部使用的存储单元地址形式,包括段基值和偏移量两部分,二者都具有16个bit。地址与内存单元的对应地址与内存单元的对应:

8、无论是物理地址还是逻辑地址,一个地址对应内存中一个独立的字节单元一个地址对应内存中一个独立的字节单元。地址加法器段基值:偏移量表示的地址称逻辑地址逻辑地址段基值偏移量物理地址(位)段基值、偏移量、物理地址都是无符号数(编码)。物理地址与逻辑地址机器指令中的地址表示形式仅限于逻辑地仅限于逻辑地址址。任意一个逻辑地址可以转换为唯一物理地任意一个逻辑地址可以转换为唯一物理地址址(反之则不行),转换过程是CPU的BIU单元自动完成的。xxxxxxxxxxxx0 xxxx0 xxxx+xxxxx16位偏移量位偏移量16位段基值位段基值20位段基址位段基址20位物理地址位物理地址地址加法器地址加法器发送至

9、地址总线发送至地址总线HEX8086/8088 CPU内部结构寄存器寄存器:CPU内部的少量存储单元内部的少量存储单元,每个存储单元都能存储二进制数据,并且都有自己独特的功能和相应的名称(地址)。8086/8088 中的寄存器:总共有14个物理寄存器,逻辑上的寄存器有22个。下面就它们的功能分别来讨论。段寄存器(a)段寄存器:包括CS(Code Segment)、SS(Stack Segment)、DS(Data Segment)、ES(Extra Segment)四个16位物理寄存器。用于存放程序所要使用的4个存储段的段基段基值值,分别对应于内存中的四块存储区域,代码段代码段、堆栈段堆栈段、

10、数据段数据段、附加段附加段。段寄存器每个程序都可能会使用这样四个段,其中代码段是必须的,实用的程序通常至少包含代码段、堆栈段、数据段。段段:内存中一段连续的空间,在程序中具有特定的用途。段基址段基址=段基值段基值*16 段在内存中的起始地址。段代码段代码段:用于存放程序的机器指令序列;堆栈段堆栈段:用于存放程序使用堆栈指令所保存的数据;保存子程序调用指令提供的返回地址;保存中断断点;堆栈段的访问一般遵循后进先出(LIFO)原则。段数据段数据段:存放程序需要直接使用的数据,包括变量、数组、字符串等;附加段附加段:内容不确定,可以根据实际需要决定。通常用于存放串操作指令中的目的串。地址指针寄存器(

11、b)地址指针寄存器)地址指针寄存器:包括BX、SI、DI、BP、SP、IP六个16位寄存器,用于存放逻辑地址的偏移量或者偏移量的一部分(分量)其作用在寻址时类似于游标,通过相对于段基址的相对字节距离字节距离来定位具体的字节或字单元。地址指针寄存器使用逻辑地址定位内存单元逻辑地址定位内存单元的示例:物理地址物理地址内存单元(字节)内存单元(字节)10000H10001H10002H10003H10004H10005H10006H(DS)=1000H逻辑地址逻辑地址(BX)=0004H地址指针寄存器BX称为基址寄存器基址寄存器,可以用于存放偏移量或偏移量分量。通常和通常和DS、ES这两个段寄存器配

12、合使用,用于定位数据段或附加段中的内存单元;地址指针寄存器SI称为源变址寄存器源变址寄存器,用于存放偏移量或偏移量分量。通常和通常和DS、ES这两个段寄存器配合使用,用于定位数据段或附加段中的内存单元。在串操作指令中,SI用于指明源串偏移量,所以被称为源变址寄存器。地址指针寄存器DI称为目的变址寄存器目的变址寄存器,用于存放偏移量或偏移量分量。通常和DS、ES这两个段寄存器配合使用,用于定位数据段或附加段中的内存单元。在串操作指令中,DI用于指明目的串偏移量,所以被称为目的变址寄存器。地址指针寄存器BP称为基址指针寄存器基址指针寄存器,用于存放偏移量,通常和通常和SS段寄存器配合使用,用于定位

13、堆栈段中的内存单元。SP称为堆栈指针堆栈指针,用于存放偏移量,只能只能和和SS段寄存器配合使用,且始终指向堆栈的栈顶,在堆栈指令中隐含的使用它来定位栈顶数据。地址指针寄存器IP称为指令指针指令指针,用于存放偏移量,只能和只能和CS段寄存器配合使用,且始终指向代码段中下一条将要读取到CPU指令队列的那条指令;修改IP中内容的操作是CPU在每读取一条指令到指令队列后自动进行的,使它指向要读取的下一条指令。转移指令转移指令可以隐含的修改IP寄存器中的内容。数据寄存器(c)数据寄存器)数据寄存器:包括AX、BX、CX、DX这样4个16位的寄存器在逻辑上一个16位的数据寄存器可以看成是3个寄存器例如AX

14、,可以把它作为一个16位的数据寄存器来使用,也可以把高低8位分开,高8位为AH,低8位为AL数据寄存器在使用上要注意逻辑上不同的寄存器可能在物理上是相互覆盖的。这里的寄存器BX在上面提到过,它既可以用作数据寄存器,也可以用作地址指针寄存器。标志寄存器(d)标志寄存器)标志寄存器:8086CPU提供一个16位的标志寄存器FR,对这个寄存器的使用在指令中往往是隐含往往是隐含的的。值得注意的是,FR是按位操作的,每一个每一个二进制位都有各自特定的含义二进制位都有各自特定的含义。标志寄存器一般在汇编语言程序中的运算指令或者标志位控制指令会影响特定标志位。可以通过转移指令来判断标志位的变化,实现程序中的

15、分支结构或者循环结构。标志寄存器标志寄存器是实现程序中分支、循环结构分支、循环结构必须的硬件基础必须的硬件基础。状态标志位以下的标志位属于状态标志位以下的标志位属于状态标志位,是指令根据执行情况为后续指令留下的一些可供参考的状态信息。(CF,OF,PF,AF,SF,ZF)功能上,它们是实现分支、循环程序结构的基础。器件上,它们的改变依赖于运算器(ALU)。状态标志位有效的条件状态标志位有效状态标志位有效的前提条件:1)当前指令要影响标志位2)当前指令对标志位的影响是有意义的3)程序设计者对操作数的解释符合指令对该标志位的有效定义进位标志CF有效性有效性:在CPU进行算术运算指令时,如果该指该指

16、令令要影响CF标志,并且用户用户把操作数看作无符号无符号数(不完整编码除外)数(不完整编码除外),那么该标志位是有效有效标志。含义含义:它标志着上次算术运算最高位(字的第15位、字节的第7位)是否产生进位(加法指令)或者借位(减法指令)。如果有进位或借位产生,那么CF=1;如果没有,那么CF=0。CF标志位位于FR的第0位。进位标志CF例1观察下面的加减法运算,判断CF标志取值。(操作数理解为无符号数,CF标志才有意义)10110011+010100011 00000100加法运算后,最高位向更高一位产生了进位,CF应等于1。进位标志CF00110000+00001101000111101加法

17、运算后,最高位没有向更高一位产生进位,CF应该等于0。进位标志CF01010101-00111110000010111减法运算后,最后位没有向更高一位产生借位,CF应该等于0。判断CF标志的经典错误错误方法但是容易出现一种人为的对CF标志的错误判别方法,那就是用补码加法来实现减法运算。对上面的算式,这里尝试使用补码加法来实现它。判断CF标志的经典错误错误方法减数补码:00111110相反数补码:11000010如果使用这种方法来判断CF标志的取值会出现什么样的结果?判断CF标志的经典错误错误方法01010101+11000010100010111运算结果和上面的减法算式完全一致。但是最高位向更

18、高一位产生了进位,按照CF的定义,CF却应该等于1,和减法算式判别的结果正判别的结果正好相反好相反。判断CF标志的经典错误错误方法为什么会出现这样的情况,哪一种方法是正确的?因为在这里使用了补码逻辑来判断无符号数的进位和借位,而补码本身是针对有符补码本身是针对有符号数产生的一种编码号数产生的一种编码。使用补码来判断无符号数的运算过程本身就是不符合逻辑的。判断CF标志的经典错误错误方法在计算机硬件逻辑中,减法确实是使用补码加法来实现的,但是不能把这种实现方法和CF标志位的生成逻辑(生成CF标志值的逻辑电路结构)混为一谈。在手工判断手工判断CF标志位标志位的取值时,必须按照按照常规的二进制数加减法

19、运算常规的二进制数加减法运算过程来进行,不能使用补码。CF标志位的实用价值a.如果需要进行多字节无符号数或补码多字节无符号数或补码的算术运算,那么CF标志就是低位字节和高位字节间进位和借位的桥梁。8086/8088CPU提供的指令,能够直接处理的最长编码就是一个字(16位),如果超出这个范围,就必须使用多字节来表示要计算的数据。任何CPU芯片,无论它处理的数据范围多么大,它总是一个有限的单位,如果超出这个单位,就必须使用标志位作为运算的中介。CF标志位的实用价值b.在执行移位指令时,CF标志用于存放移出位的值。例如对01010011实行逻辑右移1位,即把这个字节中的每一位向右移动一位,左边空出

20、的那一位置为0,最右边被移出的位保存在CF中。这个例子中,移位完成后,CF应该等于1。CF标志位的实用价值c.CF标志位能够为条件转移指令提供判别依据。例如JC指令,它先判别CF标志位,如果CF=1,就跳转到指令中给出地址继续执行程序,如果CF=0,就不作跳转,CPU会顺序执行下一条指令。在程序中,可以根据CF标志取值的不同来实现程序的分支或循环结构。奇偶标志位PF奇偶标志位PF(Parity Flag):如果CPU所执行的指令要影响PF标志,并且该指令得到的数据结果低8位中含有偶数个“1”时,PF=1;含有奇数个“1”,PF=0。注意无论指令的操作数有多么长,只有低8位数据中1的个数能够影响

21、到PF标志的取值。PF标志位位于FR的第2位。PF标志位的实用价值这里以对ASCII码的校验来说明它的应用。ASCII码占用一个字节,但是只有低7位是真正的码值,最高位(第7位)是校验位。PF标志位的实用价值如果使用奇校验,那么必须保证编码字节中始终保持有奇数个“1”。编码格式可以通过调整第7位的取值来实现:如果ASCII码中有奇数个“1”,第7位取值为0;如果ASCII码中有偶数个“1”,第7位取值为1;PF标志位的实用价值试设想计算机通过网络接收ASCII码,如何判断收到的编码是否正确呢?判断收到的字节中是否为奇数个“1”,如果为偶数个“1”,收到的编码一定是错误的,可要求重传。通过PF标

22、志可以使用条件转移指令来实现程序中的分支或循环结构。通过奇偶校验码能够识别大部分经常出现的错码,但是并不能完全避免错码。辅助进位标志位AF)辅助进位标志位AF(Auxiliary Carry Flag):在CPU执行算术运算指令时,如果该指令指令要影响AF标志,并且用户用户把操作数看作无符号数,AF标志才有意义。如果低字节中的低4位向高4位产生进位或借位时(第3位向第4位产生进位或借位),AF被置为1;否则AF被置为0。辅助进位标志位AFAF标志,又称半进位标志,位于FR的第4位。判别标准:和CF一样,使用无符号数的加减运算来作判断,只是判断进位和借位的位置不在操作数的最高位,而是在低字节的第

23、3位。辅助进位标志位AF01234567进位进位借位借位AF标志的实用价值AF标志的使用主要针对用二进制算术运算实现十进制算术运算的功能,单纯的二进制运算中,几乎不使用AF标志。BCD码:二进制数表示十进制数的编码,把4个连续二进制数位看作1个十进制数位,但实际上是一个十六进制数位,在运算中使用十六进制进借位规则。AF标志的实用价值如果能通过某种调整机制把进借位规则变为十进制进借位规则,则可使用二进制运算来实现十进制运算。AF标志位对于实现这种调整机制是必不可少的,因为它就是用于表达一个字节中低4位向高4位的进位或借位情况的。零值标志位ZF4)零值标志位ZF(Zero Flag):如果CPU执

24、行的指令指令要影响ZF标志,并且保证保证ZF标志是有意义的标志是有意义的,ZF才具有意义。当指令得到的结果数据各位全为“0”时,则ZF置“1”,否则ZF置“0”。ZF标志位位于FR的第6位。ZF标志的实用价值实用价值:ZF标志的使用主要是进行比较,并根据比较的结果来进行程序的分支或循环。例如比较两个整数是否相等。比较的范围可以很广阔,不仅限于无符号数、补码,还可以对字符或者某些特定的编码进行比较。和ZF标志相关的条件转移指令也很多,具体的应用示例在以后的课程中会遇到很多。符号标志位SF5)符号标志位SF(Sign Flag):如果CPU执行的指令指令要影响SF标志,并且用户用户把操作数看作带符

25、号数(完整编码带符号数(完整编码,或包括编码最高位),或包括编码最高位),该标志位才有意义。当计算结果为负数时,SF置“1”;当结果为正数时,SF置“0”。SF标志位的取值和结果数据的最高位是一致的,因为补码的最高位就是符号位。(SF总是正确吗?总是正确吗?)SF标志位位于FR的第7位。SF标志的实用价值主要用于对算术运算结果的符号进行判断,只有针对带符号的运算才是有意义的。可以通过两个带符号数经过减法运算后所得结果符号来判断哪一个数更大或者更小(需和OF结合使用),从而结合条件转移指令来实现程序的分支或循环。溢出标志位OF(6)溢出标志位OF(Overflow Flag):如果CPU执行的指

26、令要影响OF标志,并且用户用户把操作数看作带符号数(完整编码,或包括编码最高位)带符号数(完整编码,或包括编码最高位)时,OF标志位的取值才有意义。如果运算结果超出了补码的表示范围(字节:-128127,字:-32768到32767),那么解释为溢出,OF置为1;否则,OF置为0。OF标志位位于FR的第11位。OF标志位的取值逻辑a.正数+负数:OF=0(等价运算:正数-正数;负数-负数)这种情况一定没有溢出,负数和正数是相互抵消的,运算结果比两个原始数据中绝对值较大的一个更靠近数轴的原点,所以一定不会超出定义的补码表示范围。OF标志位的取值逻辑b.正数+正数:若结果为正数,表示符号位未丢失,

27、无溢出:OF=0;若结果为负数,表示符号位已经丢失,溢出:OF=1;(等价运算:正数-负数)OF标志位的取值逻辑c.负数+负数:若结果为负数,表示符号位未丢失,无溢出:OF=0;若结果为正数,表示符号位已经丢失,溢出:OF=1;(等价运算:负数-正数)带符号数的加减运算可能出现的各种组合都可以等价替换为上面三种情况。OF标志位的取值逻辑因为出现溢出时:1)参加运算的两个原始补码都没有超过表示范围2)如果运算中超出了表示范围,只会是符号位超出了表示范围一位超出了表示范围一位(只能是一位,只能是一位,不会多于一位不会多于一位)OF标志位的取值逻辑对8位操作数,两个最大的正数补码相加:0111111

28、1+011111110 11111110可见符号位丢失,但只需在运算结果最高位前增添一个符号位,即为正确结果OF标志位的取值逻辑对8位操作数,两个最小的负数补码相加:10000000+100000001 00000000若将进位作为最高位,则为正确结果OF标志位的取值逻辑3)所以符号位丢失与否符号位丢失与否的问题和溢出问题溢出问题是等价等价的4)硬件逻辑就是通过判断符号位丢失与否来判断补码运算是否溢出。OF标志的实用价值主要用于实现程序分支或循环:8086/8088指令系统中有单独使用OF标志位的条件转移指令,可以实现对溢出现象的判断和分支处理;也有结合使用OF标志和SF标志的条件转移指令,可

29、以根据两个带符号数比较大小的结果来实现分支处理。控制标志位控制标志位不同于状态标志位。功能上,它不用于实现分支、循环结构,而是设置CPU的工作模式或对特定事件的响应方式。器件上,它们不依赖于ALU。单步(或跟踪)标志位TF7)单步(或跟踪)标志位TF(Trace Flag):TF标志位是一个控制标志位控制标志位,用于触发单触发单步中断步中断。单步(或跟踪)标志位TF如果使用指令将TF标志位置为1,那么CPU将进入单步执行指令的工作方式。每执行完一条指令就会触发单步中断,执行单步中断服务程序。一般在屏幕上显示CPU内部各寄存器和标志位状态,以便观察该指令产生的影响。TF标志的实用价值进入中断时,

30、TF标志自动被清0,中断服务程序执行不会单步执行,中断服务程序结束后TF标志恢复中断以前的设置。如果使用指令将TF标志清0,那么将会使CPU退出单步运行模式,回到连续执行机器指令的状态。TF标志位位于FR的第8位。实用价值:TF标志为在机器指令级别上单步调试程序提供了相应的硬件基础。中断标志位IF(8)中断标志位IF(Interrupt-enable Flag):用于控制CPU是否处理可屏蔽中断。如果使用指令将IF标志置为1,那么CPU将会处理任何可屏蔽中断;如果使用指令将IF标志置为0,那么CPU将不会处理可屏蔽中断。IF标志位位于FR的第9位。IF标志的实用价值作为一个可设置开关,控制CP

31、U是否处理可屏蔽中断,在程序执行不允许被打断的情况下,可以采用这个开关来屏蔽可屏蔽中断。例如,某些对执行时间要求非常严格的程序段,执行这种程序段时不允许被中断打断,因为中断处理会添加额外的处理时间。注意,IF标志只能屏蔽可屏蔽中断,对于一些由严重错误或故障引起的不可屏蔽中断则是无法屏蔽的。方向标志位DF(9)方向标志位DF(Direction Flag):这也是一个控制标志位,用于控制串操作指令存取数据的方向.如果使用指令将DF标志置为0,每执行完一次串操作以后,源串地址指针SI和目的串地址指针DI中的内容会自动递增;如果使用指令将DF标志置为1,那么每执行完一次串操作以后,SI和DI中的内容

32、会自动递减。DF标志的实用价值使用该控制标志,可以由用户来选择串操作指令存取数据的方向。串操作指令是一种特殊的指令,它能对一组相同类型的数据作相同的处理,比使用循环结构的程序效率更高,因为串操作指令的循环是在指令内部完成的,而循环结构的程序要完成循环需要执行多条指令。标志位小结条件转移指令可以对标志寄存器FR中的状态标志位加以判断,从而通过这些标志位实现程序的分支或循环结构实现程序的分支或循环结构。关于哪些指令具体会对哪些标志位产生何种影响,以及如何在程序设计中正确的使用标志位,将会在后面的课程中逐步熟悉起来。寄存器分类地址指针寄存器(IP除外)和数据寄存器统称为通用寄存器通用寄存器,总共有8

33、个,除了各自特殊的功能外,它们都可以用于存放数据;指令指针和标志寄存器统称为控制寄存器控制寄存器,指令指针直接控制程序的执行流程,标志寄存器可以由标志位间接影响程序的执行流程;段寄存器用于指示当前运行程序中可以使用的4个当前段。寄存器的独特性CPU内部的寄存器数量很少,为了完成种类繁多的指令功能,CPU的设计者为每个寄存器都指定了它们独特的功能。各寄存器的使用细节各不相同。这样的设计方法也是为了降低CPU硬件逻辑的复杂程度。例如寄存器AL、AX分别可以用于乘法指令中存放乘数和乘积,其它寄存器就不能完成这一特定功能,这是8086/8088CPU硬件逻辑事先规定好的。通用寄存器的隐含和特定使用只要对这些寄存器的特殊功能加以记忆,再加上汇编程序的语法规则,这些寄存器的用法是可以熟悉的。特别注意通用寄存器的隐含隐含和特定特定使用。当指令对一个寄存器隐含使用隐含使用时,在指令中看不到该寄存器名称(地址),但指令有可能修改寄存器的内容,如果程序员忽略了这一点,则可能造成逻辑错误。寄存器的隐含使用PUSH AX;隐含使用SPPOPF;隐含使用FRMUL BL;隐含使用AL,AXLOOP L1;隐含使用CX,IPAAA;隐含使用AL,AH寄存器的特定使用SHL AL,CL;特定使用CLIN AL,54H;特定使用ALOUT DX,AL;特定使用DX,AL如果忽略寄存器的特定使用,则造成语法错误。

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服