首页 8086(8088)指令手册

8086(8088)指令手册

举报
开通vip

8086(8088)指令手册8086/8088指令手册 8086/8088指令手册 郑治强整理 2007-4-3 目 录 8086/8088指令分类 一、数据传送类指令…………………………………………………………第3页 1. 通用数据传送指令……………………………………………………………… 第3页 2.目标地址传送指令…………………………………………………………………第4页 3.标志位传送指令……………………………………………………………………第5页 4.I/O数据传送指令………………………………………………………………… 第5页 二、算术运...

8086(8088)指令手册
8086/8088指令手册 8086/8088指令手册 郑治强整理 2007-4-3 目 录 8086/8088指令分类 一、数据传送类指令…………………………………………………………第3页 1. 通用数据传送指令……………………………………………………………… 第3页 2.目标地址传送指令…………………………………………………………………第4页 3.标志位传送指令……………………………………………………………………第5页 4.I/O数据传送指令………………………………………………………………… 第5页 二、算术运算类指令 1. 加法指令………………………………………………………………………… 第6页 2.减法指令……………………………………………………………………………第7页 3.乘法指令……………………………………………………………………………第8页 4.除法指令……………………………………………………………………………第9页 5.十进制调整指令……………………………………………………………………第10页 三、逻辑运算和移位循环类指令……………………………………………第12页 四、操作类指令………………………………………………………………第14页 五、程序控制指令……………………………………………………………第15页 六、处理器控制类指令………………………………………………………第16页 名词表 表一、微机系统………………………………………………………………第17页 表二、8086/8088 CPU的内部结构………………………………………第18页 表三、数据寄存器的隐含使用………………………………………………第19页 表四、标志寄存器……………………………………………………………第20页 8086/8088指令分类 8086/8088的指令按功能可分为6类:数据传送、算术运算、逻辑运算、串操作、程序控制和CPU控制。 (1)​ 数据传送类指令 数据传送类指令可完成寄存器与寄存器之间、寄存器与存储器之间以及寄存器与I/O端口之间的字节或字传送,它们所具有的共同特点是不影响标志寄存器的内容。这类指令又可分成4种类型。 1. 通用数据传送指令 类型 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 与功能 应用举例 备注 通用数据传送指令 MOV d,s ;d←s 即将由源s指定的源操作数送到目标d其中,s表示源,d表示目标。 MOV AX,0 ;AX清0,字传送 MOV AL,12H ;AL←12H,字节传送 MOV AH,AL ;AH←AL,字节传送 MOV DS,AX ;DS←AX,字传送 MOV AL,BUFFER ;AL←内存单元BUFFER中的字节内容 MOV AX,[SI] ;AX←SI间址指示的内存两单元中的字内容 错误:MOV 2000H,1000H 错误:MOV CS,2000H 由s与d可分别指定源操作数与目标操作数。源操作数可以是8/16位寄存器、存储器中的某个字节/字或者是8/16位立即数;目标操作数不允许为立即数,其他同源操作数。且两者不能同时为存储器操作数。 PUSH s 将源操作数(16位)压入堆栈 PUSH AX ;SP-2→SP PUSH BX PUSH DI PUSH SI 这是两条进栈与出栈指令,其中,s和d可以是16位寄存器或存储器两相邻单元,以保证堆栈按字操作。 POP d 将堆栈中当前栈顶两相邻单元的数据字弹出到d。 POP SI ;SP+2→SP POP DI POP BX POP AX XCHG d,s 该指令功能是将源操作数与目标操作数(字节或字)相互对应交换位置。 XCHG AX,[SI+0400H] CS=1000H, IP=0064H, DS=2000H, SI=3000H, AX=1234H 执行后将把AX寄存器中的1234H与物理地址23400H(=DS×16+SI) 交换可以在通用寄存器与累加器之间、通用寄存器之间、通用寄存器与存储器之间进行。但不能在两个存储单元之间交换,段寄存器与IP也不能作为一个源或目的操作数。 XLAT 这是一条用于实现字节翻译功能的指令,又称为代码转换指令。 具体地说,它可以将AL寄存器中设定的的一个字节数值变换为内存一段连续表格中的另一个相应的代码,以实现编码制的转换。 2.目标地址传送指令 类型 格式与功能 应用举例 备注 目标地址传送指令 这是一类专用于8086/8088中传送地址码的指令,可传送存储器的逻辑地址(即存储器操作数的段地址或偏移地址)至指定寄存器中 LEA d,s 这是取有效地址指令,其功能是把用于指定源操作数(它必须是存储器操作数)的16位偏移地址(即有效地址)传送到一个指定的16位通用寄存器中。 将16位有效地址装入任何一个16位通用寄存器,这条指令常用来建立串操作指令所需要的寄存器指针。 LDS d,s 这是取某变量的32位地址指针的指令,其功能是从由指令的源s所指定的存储单元开始,由4个连续存储单元中取出某变量的地址指针(共4个字节),将其前两个字节(即变量的偏移地址)传送到由指令的目标d所指定的某16位通用寄存器,后两字节(即变量的段地址)传送到DS段寄存器中。 将32位地址指针装入任何一个16位通用寄存器及DS或ES段寄存器。 LES d,s 这条指令与LDS d,s指令的操作基本相同,其区别仅在于将把由源所指定的某变量的地址指针中后2个字节(段地址)传送到ES段寄存器,而不是DS段寄存器。 3.标志位传送指令 类型 格式与功能 应用举例 备注 标志位传送指令 用于传送标志位 LAHF 将标志寄存器F的低字节(共包含5个状态标志位)传送到AH寄存器中。 SAHF 将AH寄存器内容传送到标志寄存器F的低字节。 PUSHF 将16位标志寄存器F内容入栈保护。其操作过程与前述的PUSH指令类似。 POPF 将当前栈顶和次栈顶中的数据字弹出送回到标志寄存器F中。 4.I/O数据传送指令 类型 格式与功能 应用举例 备注 I/O数据传送指令 IN累加器,端口号 端口号可以用8位立即数直接给出;也可以将端口号事先安排在DX寄存器中,间接寻址16位长端口号(可寻址的端口号为0~65535)。IN指令是将指定端口中的内容输入到累加器AL/AX中 IN AL,PORT ;AL←(端口PORT) IN AX,PORT ;AX←(端口PORT) IN AL,DX ;AL←(端口(DX)) IN AX,DX ;AX←(端口(DX)) 注意:I/O指令只能用累加器作为执行I/O数据传送的机构,而不能用其他寄存器代替。另,当用直接I/O指令时,寻址范围仅为0~255,这适用于较小规模的微机系统;当需要寻址大于255的端口地址时,则必须用间接寻址的I/O指令。例如,在IBM PC/XT微机系统中,既用了0~255范围的端口地址,也用了255~65535范围的端口地址。 OUT 端口号,累加器 与IN指令相同,端口号可以由8位立即数给出,也可由DX寄存器间接给出。OUT指令是将累加器AL/AX中的内容输出到指定的端口 OUT PORT,AL ;端口PORT←AL OUT PORT,AX ;端口PORT←AX OUT DX,AL ;端口(DX)←AL OUT DX,AX ;端口(DX)←AX (2)​ 算术运算类指令 算术运算类指令能对无符号或有符号的8/16位二进制数以及无符号的压缩型/非压缩型(又称为装配型/拆开型或组合型/未组合型)十进制数进行运算,有加、减、乘、除以及十进制调整5类指令。 1. 加法指令 类型 格式与功能 应用举例 备注 加法指令 ADD d,s ;d←d+s 将源操作数与目标操作数相加,结果保留在目标中。并根据结果置标志位。 源操作数可以是8/16位通用寄存器、存储器操作数或立即数;目标操作数不允许是立即数,其他同源操作数。且不允许两者同时为存储器操作数。 ADC d,s ;d←d+s+CF 带进位加法。 指令的操作过程与ADD指令基本相同,惟一的不同是进位标志位CF的原状态也将一起参与加法运算,待运算结束,CF将重新根据结果置成新的状态。 INC d ;d←d+1 将目标操作数当作无符号数,完成加1操作后,结果仍保留在目标中。 目标操作数可以是8/16位通用寄存器或存储器操作数,但不允许是立即数。 2.减法指令 类型 格式与功能 应用举例 备注 减法指令 SUB d,s;d←d-s 将目标操作数减去源操作数,其结果送回目标,并根据运算结果置标志位。 操作数可以是8/16位通用寄存器、存储器操作数或立即数;目标操作数只允许是通用寄存器或存储器操作数。并且,不允许两个操作数同时为存储器操作数,也不允许做段寄存器的减法。 SBB d,s ;d←d-s-CF 带借位减法 本指令与SUB指令的功能、执行过程基本相同,唯一不同的是完成减法运算时还要再减去进位标志CF的原状态。运算结束时,CF将被置成新状态。 DEC d ;d←d-1 减1:将目标操作数的内容减1后送回目标。 目标操作数可以是8/16位通用寄存器和存储器操作数,但不允许是立即数。 NEG d ;d←d+1 NEG是一条求补码的指令,简称求补指令。 指令功能:将目标操作数取负后送回目标。 目标操作数可以是8/16位通用寄存器或存储器操作数。 NEG指令是把目标操作数当成一个带符号数,如果原操作数是正数,则NEG指令执行后将其变成绝对值相等的负数(用补码表示);如果原操作数是负数(用补码表示),则NEG指令执行后将其变成绝对值相等的正数。 CMP d,s ;d-s 只置标志位 指令功能:将目标操作数与源操作数相减但不送回结果,只根据运算结果置标志位。 源操作数可以是8/16位通用寄存器、存储器操作数或立即数;目标操作数只可以是8/16位通用寄存器或存储器操作数。但不允许两个操作数同时为存储器操作数,也不允许做段寄存器比较。比较指令使用的寻址方式与前面介绍过的加法和减法指令相同。 当判断两比较数的大小时,应区分无符号数与有符号数的不同判断条件:对于两无符号数比较,只需根据借位标志CF即可判断;而对于两有符号数比较,则要根据溢出标志OF和符号标志SF两者的异或运算结果来判断。 3.乘法指令 类型 格式与功能 应用举例 备注 乘法指令 用来实现两个二进制操作数的相乘运算,包括两条指令:无符号数乘法指令MUL和有符号数乘法指令IMUL。 MUL s 无符号乘法指令,它完成两个无符号的8/16位二进制数相乘的功能。 被乘数隐含在累加器AL/AX中; 指令中由s指定的源操作数作乘数,它可以是8/16位通用寄存器或存储器操作数。相乘所得双倍位长的积,按其高8/16位与低8/16位两部分分别存放到AH与AL或DX与AX中去,即对8位二进制数乘法,其16位积的高8位存于AH,低8位存于AL;而对16位二进制数乘法,其32位积的高16位存于DX,低16位存于AX。 IMUL s 有符号乘法指令,它完成两个带符号的8/16位二进制相乘的功能。 对于两个带符号的数相乘,如果简单采用与无符号数乘法相同的操作过程,那么会产生完全错误的结果。为此,专门设置了IMUL指令。 IMUL指令除计算对象是带符号二进制数以外,其他都与MUL是一样的,但结果不同。 IMUL指令对OF和CF的影响是:若乘积的高一半是低一半的符号扩展,则OF=CF=0;否则均为1。它仍然可用来判断相乘的结果中高一半是否含有有效数值。另外,IMUL指令对其他标志位没有定义。 4.除法指令 类型 格式与功能 应用举例 备注 除法指令 执行两个二进制数的除法运算,包括无符号二进制数除法指令DIV和有符号二进制数除法指令IDIV两条指令。 DIV s 指令完成两个不带符号的二进制相除的功能。 被除数隐含在累加器AX(字节除)或DX、AX(字除)中。指令中由s给出的源操作数作除数,可以是8/16位通用寄存器或存储器操作数。 对于字节除法,所得的商存于AL,余数存于AH。对于字除法,所得的商存于AX,余数存于DX。根据8086的约定,余数的符号应与被除数的符号一致。 若除法运算所得的商数超出累加器的容量,则系统将其当作除数为0处理,自动产生类型0中断,CPU将转去执行类型0中断服务程序作适当处理,此时所得商数和余数均无效。在进行类型0中断处理时,先是将标志位进堆栈,IF和TF清0,接着是CS和IP的内容进堆栈;然后,将0、1两单元的内容填入IP,而将2、3两单元的内容填入CS;最后,再进入0号中断的处理程序。 IDIV s 该指令完成将两个带符号的二进制数相除的功能。它与DIV指令的主要区别在于对符号位处理的约定,其他约定相同。 具体地说,如果源操作数是字节/字数据,被除数应为字/双字数据并隐含存放于AX/DX、A X中。如果被除数也是字节/字数据在AL/AX中,应将AL/AX的符号位(AL7)/(AX15)扩展到AH/DX寄存器后,才能开始字节/字除法运算,运算结果商数在AL/AX寄存器中,AL7/AX15是商数的符号位;余数在AH/DX中,AH7/DX15 是余数的符号位,它应与被除数的符号一致。允许的最大商数为+127/+32767,最小商数为-127/-32767。 CBW和CWD 两条专门为IDIV指令设置的符号扩展指令,用来扩展被除数字节/字为字/双字的符号,所扩充的高位字节/字部分均为低位的符号位。 它们在使用时应安排在IDIV指令之前,执行结果对标志位没有影响。 CBW指令将AL的最高有效位D7扩展至AH,即:若AL的最高有效位是0,则AH=00;若AL的最高有效位为1,则AH=FFH。该指令在执行后,AL不变。 CWD指令将AX的最高有效位D15扩展形成DX,即:若AX的最高有效位为0,则DX=0000H;若AX的最高有效位为1, 则DX=FFFFH。该指令在执行后,AX不变。 符号扩展指令常用来获得除法指令所需要的被除数。例如AX=FF00H,它表示有符号数-256;执行CWD指令后, 则DX=FFFFH,DX、AX仍表示有符号数-256。 5.十进制调整指令 类型 格式与功能 应用举例 备注 十进制调整指令 8086专门为完成十进制数运算而提供的一组十进制调整指令。 DAA 加法的十进制调整指令,它必须跟在ADD或ADC指令之后使用。 功能:将存于AL寄存器中的2位BCD码加法运算的结果调整为2位压缩型十进制数,仍保留在AL中。 AL寄存器中的运算结果在出现非法码(1010B~1111B)或本位向高位(指BCD码)有进位(由AF=1或CF=1表示低位向高位或高位向更高位有进位)时,由DAA自动进行加6调整。 由于DAA指令只能对AL中的结果进行调整,因此,对于多字节的十进制加法,只能从低字节开始,逐个字节地进行运算和调整。 DAS 减法的十进制调整指令,它必须跟在SUB或SBB指令之后,将AL寄存器中的减法运算结果调整为2位压缩型十进制数,仍保留在AL中。 减法是加法的逆运算,对减法的调整操作是减6调整。 AAA 加法的ASCII码调整指令,也是只能跟在ADD指令之后使用。其功能是将存于AL寄存器中的1位ASCII码数加法运算的结果调整为1位非压缩型十进制数, 仍保留在AL中;如果向高位有进位(AF=1),则进到AH中。 调整过程与DAA相似,其具体算法如下: ① 若AL的低4位是在0~9之间,且AF=0,则跳过第②步,执行第③步。 ② 若AL的低4位是在0AH~0FH之间,或AF=1,则AL寄存器需进行加6调整,AH寄存器加1,且使CF=1。 ③ AL的高4位虽参加运算,但不影响运算结果,无需调整,且清除之。 AAS 减法的ASCII码调整指令,它必须跟在SUB或SBB指令之后,用来将AL寄存器中的减法运算结果调整为1位非压缩型十进制数;如有借位,则保留在借位标志CF中。 AAM 乘法的ASCII码调整指令。由于8086/8088指令系统中不允许采用压缩型十进制数乘法运算,故只设置了一条AAM指令,用来将AL中的乘法运算结果调整为2位非压缩型十进制数,其高位在AH中,低位在AL中。 参加乘法运算的十进制数必须是非压缩型,故通常在MUL指令之前安排两条AND指令。 AAD 除法的ASCII码调整指令。它与上述调整指令的操作不同,它是在除法之前进行调整操作。 一个数据为67,用非压缩型BCD码表示时,则AH中为00000110,AL中为00000111;调整时执行AAD指令,该指令将AH中的内容乘以10,再加到AL中,故得到的结果为43H。 AAD指令的调整操作是将累加器AX中的2位非压缩型十进制的被除数调整为二进制数,保留在AL中。其具体做法是将AH中的高位十进制数乘以10,与AL中的低位十进制数相加,结果保留在AL中。 (3)​ 逻辑运算和移位循环类指令。 类型 格式与功能 应用举例 备注 逻辑运算 AND d,s ;d←d∧s 按位“与”操作 源操作数可以是8/16位通用寄存器、存储器操作数或立即数;目标操作数只允许是通用寄存器或存储器操作数。 OR d,s ;d←d∨s 按位“或”操作 源操作数与目标操作数的约定同AND指令。 XOR d,s ;d←d⊕s 按位“异或”操作 源操作数与目标操作数的约定同AND指令。 NOT d ;d←d 按位取反操作 TEST d,s ;d∧s 按位“与”操作,不送回结果 有关的约定和操作过程与AND指令相同,只是TEST指令不传送结果。 移位指令与循环移位指令 移位指令分为算术移位和逻辑移位。算术移位是对带符号数进行移位,在移位过程中必须保持符号不变;而逻辑移位是对无符号数移位,总是用“0”来填补已空出的位。根据移位操作的结果置标志寄存器中的状态标志(AF标志除外)。若移位位数是1位,移位结果使最高位(符号位)发生变化,则将溢出标志OF置“1”;若移多位,则OF标志将无效。 SAL BX,1 ;BX的内容算左移1位 ROR AX,1 ;AX的内循环右移1位 MOV CL,6 SAR DX,CL ;DX的内容算术右移6位 RCL AX,CL ;AX的内容连同CF循环左移6位 所有移位与循环移位指令的目标操作数只允许是8/16位通用寄存器或存储器操作数,指令中的count(计数值)可以是1,也可以是n(n≤255)。若移1位,指令的count字段直接写1;若移n位时,则必须将n事先装入CL寄存器中,故count字段只能书写CL而不能用立即数n。 循环移位指令是将操作数首尾相接进行移位,它分为不带进位位与带进位位循环移位。这类指令只影响CF和OF标志。CF标志总是保持移出的最后一位的状态。若只循环移1位,且使最高位发生变化,则OF标志置“1”;若循环移多位,则OF标志无效。 附表: (4)​ 串操作类指令 串操作类指令是惟一地在存储器内的源与目标之间进行操作的指令。 类型 格式与功能 应用举例 备注 串传送指令 MOVS目标串,源串 将由SI作为指针的源串中的1个字节或字,传送到由DI作为指针的目标串中,且相应地自动修改SI/DI,使之指向下一个元素。 例如:REP MOVSB指令 设当前CS=6180H,IP=120AH,DS=1000H,SI=2000H,ES=3000H,DI=1020H,CX=0064H,DF=0。 该指令执行后,将源串的100个字节传送到目标串,每传送1个字节,SI+1,DI+1,CX-1,直到CX=0为止。 如果加上REP前缀,则每传送一个元素,CX自动减1,直到CX=0为止。 串比较指令 CMPS目标串,源串 将由SI作为指针的源串中的1个元素减去由DI作为指针的目标串中相对应的1个元素,不回送结果,只根据结果特征置标志位;并相应地修改SI和DI内容指向下一个元素。 通常,在CMPS指令前加重复前缀REPE/REPZ,用来确定两个串中的第1个不相同的数据。例:试比较上例中两串是否完全相同,若两串相同,则BX寄存器内容为0;若两串不同,则BX指向源串中第1个不相同字节的地址,且该字节的内容保留在AL寄存器中。 串搜索指令 SCAS目标串 用来从目标串中搜索(或查找)某个关键字,要求将待查找的关键字在执行该指令之前事先置入AX或AL中,取决于W=1或0。 搜索的实质是将AX或AL中的关键字减去由DI所指向的目标串中的一个元素,不传送结果,只根据结果置标志位,然后修改DI的内容指向下一个元素。通常,在SCAS前加重复前缀REPNE/REPNZ,用来从目标串中寻找关键字,操作一直进行到ZF=1(查到了某关键字)或CX=0(终未查找到)为止。 读串指令 LODS源串 用来将源串中由SI所指向的元素取到AX/AL寄存器中,修改SI的内容指向下一个元素。 该指令一般不加重复前缀,常用来和其他指令结合起来完成复杂的串操作功能。 写串指令 STOS目标串 用来将AX/AL寄存器中的1个字或字节写入由DI作为指针的目标串中,同时修改DI以指向串中的下一个元素。 该指令一般不加重复前缀,常与其他指令结合起来完成较复杂的串操作功能。若利用重复操作,可以建立一串相同的值。 (5)​ 程序控制指令 一般情况下,指令是按顺序逐条执行的。但在实际运行中,也经常会根据微处理器的状态和工作要求等不同情况而随时改变程序的流向。程序控制指令就是用来控制程序流向的一类指令。本节介绍无条件转移、条件转移、循环控制和中断共4种类型的程序控制指令。 类别 指令名称 助记符 备注 无条件转移 无条件转移 JMP 目标标号 调用控制 CALL 过程名 从过程返回 BET 弹出值 条件转移 无符号数 高于/不低于也不等于转移 JA/JNBE 目标标号 高于或等于/不低于也转移 JAE/JNB 目标标号 低于/不高于也不等于转移 JB/JNAE 目标标号 低于或等于/不高于转移 JBE/JNA 目标标号 单标志 进位位为1转移 JC 目标标号 进位位为0转移 JNC 目标标号 等于/结果为0转移 JE/JZ 目标标号 不等于/结果不为0转移 JNE/JNZ 目标标号 带符号数 大于/不小于也不等于转移 JG/JNLE 目标标号 大于或等于/不小于转移 JGE/JNL 目标标号 小于/不大于也不等于转移 JL/JNGE 目标标号 小于或等于/不大于转移 JLE/JNG 目标标号 位条件转移 溢出转移 JO 目标标号 不溢出转移 JNO 目标标号 奇偶性为0/奇状态转移 JNP/JPO 目标标号 奇偶性为1/偶状态转移 JP/JPE 目标标号 符号位为0转移 JNS 目标标号 符号位为1转移 JS 目标标号 循环控制 循环 LOOP 目标标号 等于/结果为0循环 LOOPE/LOOPZ 目标标号 不等于/结果不为0循环 LOOPNE/LOOPNZ 目标标号 CX=0转移 JCXZ 目标标号 中断 中断 INT 中断类型 溢出中断 INTO 中断返回 IRET (6)​ 处理器控制类指令 处理器控制指令只完成对CPU的简单控制功能。 类别 指令名称 助记符 备注 对标志位操作 清除进位标志 CLC 用来对进位标志CF清“0”、置“1”和取反操作。 置“1”进位标志 STC 取反进位标志 CMC 清除方向标志 CLD 用来将方向标志DF清“0”、置“1”,常用于串操作指令之前。 置“1”方向标志 STD 清除中断标志 CLI 用来将中断标志IF清“0”、置“1”。当CPU需要禁止可屏蔽中断进 入时,应将IF清“0”,允许可屏蔽中断进入时,应将IF置“1”。 置“1”中断标志 STI 同步控制 等待 WAIT WAIT指令通常用在CPU执行完ESC指令后,用来等待外部事件,即等待TEST线上的有效信号。当TEST=1时,表示CPU正处于等待状态,并继续执行WAIT指令,每隔5个时钟周期就测试一次TEST状态;一旦测试到TEST=0,则CPU结束WAIT指令,继续执行后续指令。WAIT与ESC两条指令是成对使用的,它们之间可以插入一段程序,也可以相连。 ESC指令与WAIT指令、TEST引线结合使用时,能够启动一个在某个协处理器中执行的子程序。 交权 ESC外部操作码,源操作数 封锁总线 LOCK LOCK是一字节的指令前缀,而不是一条独立的指令,常作为指令的前缀可位于任何指令的前端。凡带有LOCK前缀的指令,在该指令执行过程中都禁止其他协处理器占用总线,故它可称为总线锁定前缀。 其他 暂停 HLT HLT是暂停指令,用于迫使CPU暂停执行程序 空操作 NOP NOP是一条空操作指令,它并未使CPU完成任何有效功能,只是每执行一次该指令要占用3个时钟周期的时间,常用来作延时,或取代其他指令作调试之用。 名词表 表一、微机系统 分类 名称 简称 英文 备注 微机系统 微处理器 μP或MP Microprocessor 中央处理器 CPU Central Processing Unit MPU(Microprocessing Unit) 微型计算机 μC或MC Microcomputer 微型计算机系统 μCS或MCS Microcomputer system 微处理器 运算器 运算器 ALU Arithmetic Logic Unit 累加器 A Accumulator 数据寄存器 DR Data Register 控制器 指令寄存器 IR Instruction Register 指令译码器 ID Instruction Decoder 可编程逻辑阵列 PLA Programmable Logic Array 内部寄存器 累加器 A 数据寄存器 DR 程序计数器 PC Program Counter 地址寄存器 AR Address Register 标志寄存器 F Flag Register 寄存器阵列 RA Register Array 存储器 字节 Byte 8位二进制数的长度 字 Word 非破坏性读出 NDRO Non Destructive Read Out 随机存取存储器 RAM Radom Access Memory 主板 主板 Mother Board 调制解调器 Modem 高速缓存 Cache BIOS BIOS 扩充插槽 I/O接口 总线 工业 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 体系结构总线 ISA Industry Standard Architecture EISA(Extended ISA) 外设互连总线 PCI Peripheral Component Interconnect 图形加速端口 AGP Accelerated Graphics Port 数据总线 DB Data Bus 地址总线 AB Address Bus 控制总线 CB Control Bus 表二、8086/8088 CPU的内部结构 分类 名称 简称 英文 备注 8086/8088CPU 总线接口单元 BIU Bus Interface Unit 从内存取指令送到指令队列缓冲器 执行单元 EU Execution Unit 总线接口单元BIU 代码段寄存器 CS Code Segment 存放程序当前使用的代码段的段地址,CPU执行的指令将从代码段取得 16位段地址寄存器 数据段寄存器 DS Data Segment 存放程序当前使用的数据段的段地址,一般地说,程序所用的数据就存放在数据段中 堆栈段寄存器 SS Stack Segment 存放程序当前使用的堆栈段的段地址,堆栈操作的数据就在这个段中 附加段寄存器 ES Extend Segment 存放程序当前使用的附加段的段地址,通常也用来存放数据,但典型的用法是用来存放处理以后的数据 16位指令指针 IP Instruction Pointer 其功能与8位CPU中的PC类似 指令队列缓冲器 8086的指令队列为6个字节,而8088的指令队列为4个字节。在执行指令的同时, 从内存中取下面1条或几条指令,取来的指令依次放在指令队列中 地址加法器和段寄存器 8086有20根地址线,内部寄存器有16位,采用了16位的段寄存器与16位的偏移地址即“段加偏移”的技术 执行单元EU 16位算术逻辑单元 ALU 它可以用于进行算术、逻辑运算,也可以按指令的寻址方式计算出寻址单元的16位偏移量 16位标志寄存器 F 它用来反映CPU运算的状态特征或存放控制标志 数据暂存寄存器 它协助ALU完成运算,暂存参加运算的数据 通用寄存器组 16位数据寄存器 AX 作累加器 每个数据寄存器分为高字节H和低字节L,它们均可作为8位数据寄存器独立寻址,独立使用 BX 作基址寄存器,在查表指令XLAT中存放表的起始地址 CX 作计数寄存器,在使用带有重复前缀(如REP)的数据串操作指令中用来存放数据串元素的个数 DX 作数据寄存器,在字的除法运算指令DIV中存放余数 16位指针寄存器 SP 堆栈指针寄存器 P组 存放偏移地址 BP 堆栈基址指针寄存器 16位变址寄存器 SI 源变址寄存器 I组 DI 目的变址寄存器 EU控制电路 表三、数据寄存器的隐含使用 寄存器 操作 寄存器 操作 AX 字乘,字除,字I/O CL 多位移位和旋转 AL 字节乘,字节除,字节I/O,转换,十进制运算 DX 字乘,字除,间接I/O AH 字节乘,字节除 SP 堆栈操作 BX 转换 SI 数据串操作 CX 数据串操作,循环 DI 数据串操作 表四、标志寄存器 8086/8088的16位标志寄存器F只用了其中的9位作标志位,即6个状态标志位,3个控制标志位。低八位的5个标志与8080/8085的标志相同。 15 8 7 0 OF DF IF TF SF ZF AF PF CF 分类 名称 简称 英文 备注 状态标志 用来反映算术或逻辑运算后的结果状态,以 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 CPU的状态特征 进位标志 CF Carry Flag 当执行一个加法或减法运算合最高位产生进位或借位时,CF为1;否则为0。此外循环指令也会影响它 奇偶性标志 PF Parity Flag 当指令执行结果的低8 位中含有偶数个“1”时,PF为1;否则为0。现已不常用 辅助进位标志 AF Auxiliary Carry Flag 一般用在BCD码运算中作为是否需要对AL寄存器进行十进制调整的依据 零标志 ZF Zero Flag 表示一个算术或逻辑操作的结果是否为零。若当前的运算结果为零,ZF为1;否则为0 符号标志 SF Sign Flag 保持算术或逻辑运算指令执行后结果的算术符号。它和运算结果的最高位相同 溢出标志 OF Overflow Flag 溢出标志用于判断在有符号数进行加法或减法时是否可能出现溢出。溢出将指示运算结果已超出机器能够表示的数值范围 控制标志 用来控制CPU的操作,由程序设置或清除 方向标志 DF Direction Flag 用来控制数据串操作指令的步进方向。若用STD指令将DF置1,则数据串操作过程中地址会自动递减;若用CLD指令将DF清0,则数据串操作过程中地址会自动递增 中断允许标志 IF Interrupt Enable Flag 控制可屏蔽中断的标志。若用STI指令将IF置1,则表示允许8086/8088 CPU接受外部从其INTR引脚上发来的可屏蔽中断请求信号;若用CLI指令将IF清0,则禁止CPU接受外来的可屏蔽中断请求信号。IF的状态不影响非屏蔽中断(NMI)请求,也不影响CPU响应内部的中断请求 跟踪(陷阱)标志 TF Trap Flag 若将TF标志置为1,则8086/8088 CPU处于单步工作方式;否则,将正常执行程序。在高型号微处理器中,跟踪(陷阱)标志能够激活芯片上的调试特性(调试程序,以便找到错误或故障),当TF标志为1时,则微处理器将根据调试寄存器和控制寄存器的指示中断程序流
本文档为【8086(8088)指令手册】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_202176
暂无简介~
格式:doc
大小:469KB
软件:Word
页数:19
分类:互联网
上传时间:2011-08-21
浏览量:56