第3章 16位32位微处理器指令系统.ppt
《第3章 16位32位微处理器指令系统.ppt》由会员分享,可在线阅读,更多相关《第3章 16位32位微处理器指令系统.ppt(99页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第3章 16位/32位微处理器指令系统,3.1 指令的基本格式3.2 8086/8088的寻址方式3.3 8086/8088的指令系统3.4 80386的寻址方式和指令系统3.5 Pentium新增加的指令,3.1 指令的基本格式,3.1.1 指令的构成3.1.2 8086/8088的指令格式,3.1.1指令的构成,包括两部分:表示操作性质或类型编码-操作码。操作对象-操作数。一般来说,第一字节表示操作码,第二字节表示寻址方式,第三、四字节表示操作数在内存的位移量或者是立即数(在指令中没有位移量时),第五、六字节表示立即数。,3.1.28086/8088的指令格式,基本格式为: 标号: 操作码
2、助记符 目的操作数,源操作数 ;注释标号为该条指令所在内存单元的符号地址,后面要跟冒号。标号一般由字母开头,后跟字母、数字或特殊字符,注意不允许使用保留字,例如:MOV,SEGMENT,END等。操作码助记符,指示CPU执行什么样的操作。操作数分目的操作数和源操作数两种,目的操作数是指令结果存放的位置,源操作数是指令操作的对象。目的操作数应放在源操作数前,并以逗号隔开。注释用来说明本条指令或一段程序的功能,使程序可读性强。注释由分号(;)开始,汇编程序对其不进行处理。,3.2 8086/8088的寻址方式,一条汇编语言指令,有两个问题需要关注,一是该条指令将进行什么操作,另一个就是操作的对象和
3、操作后结果的存放位置。操作数的寻址方式就是指寻找操作数位置的方式。,1.立即寻址(Immediate addressing),操作数包含在指令中,紧跟在操作码之后(操作数作为指令的一部分存放在操作码之后的主存单元中)。这种操作数称为立即数可以是8位数值(00HFFH)也可以是16位数值(0000HFFFFH)MOV AL,80H;将80H送入AL MOV AX,306AH;将306AH送入AX立即数寻址方式常用来给寄存器和存储单元赋值,多以常量形式出现。操作数直接在指令中取得,不需要使用另外的总线周期,执行时间短、速度快。,2.寄存器寻址(Register addressing),操作数存放在
4、CPU的内部寄存器中:8位寄存器:AH、AL、BH、BL、CH、CL、DH、DL16位寄存器:AX、BX、CX、DX、SI、DI、BP、SP4个段寄存器:CS、DS、SS、ES寄存器名表示其内容(操作数)。MOV AL,BL;将BL的内容传送到AL中 MOV BX,AX;将AX的内容传送到BX中采用寄存器寻址的指令在执行时,操作数就在CPU中,不需要访问存储器来取得操作数,执行速度快。另外寄存器名比内存地址短,指令所占内存空间少。,3.直接寻址(Direct Addressing),通常把操作数的偏移地址称为有效地址EA (Effective Address) ,EA可通过不同的寻址方式来得到
5、。直接寻址方式的有效地址在指令中直接给出。默认的段基址在DS段寄存器,可使用段前缀改变。用方括号包含有效地址。 MOV AX,1000H;若(DS)=2000H,则将数据段21000H、 21001H两个单元的内容送到AX。如果有效地址是以符号地址形式提供,则可不加方括号。 MOV AX,BUFA;BUFA为符号地址,这时不加跨段前 缀,默认仍为DS数据段。如BUFA变量 在附加段中,就必须书写为: MOV AX,ES:BUFA,4.寄存器间接寻址(Register indirect Addressing),有效地址存放在基址寄存器BX、BP或变址寄存器SI、DI中。如用BX、SI或DI作为间
6、址寄存器,则默认的段基址在DS段寄存器。如用BP作为间址寄存器,则默认的段基址在SS段寄存器。可使用段前缀改变。MOV AX,BX ;若 ( DS) = 2000H,(BX) = 1000H ,则将数据段 21000H、21001H两个单元的内容送到AX中。MOV CX,BP ;若 ( SS) = 4000H,(BP) = 1000H ,则将堆栈段 41000H、41001H两个单元的内容送到CX中。MOV AX,ES:SI ;若 ( ES) = 3000H,(SI) = 1000H ,则将附加段 31000H、31001H两个单元的内容送到AX中。,5.基址寻址和变址寻址,有效地址是寄存器内
7、容与有符号8位或16位位移量之和,寄存器可以是BX、BP或SI、DI。有效地址BX/BP/SI/DI8/16位位移量如果寄存器为BX或BP,则为基址寻址如果寄存器为SI或DI,则为变址寻址段基址对应BX/SI/DI寄存器默认是DS,对应BP寄存器默认是SS;可用段前缀改变。例:MOV AX,SI+3000H 的执行结果 设(DS)4000H,(SI)=2000H,内存单元(45000H)=34H,(45001H)=12H 。首先求操作数的物理地址: 物理地址(DS)16+(SI)+3000H=40000H+2000H+3000H=45000H然后根据该物理地址从内存得到操作数,也即内存单元45
8、000H、45001H的内容。将该内容送入AX。故(AX)=1234H。,6.基址变址寻址(Based indexed addressing),有效地址由基址寄存器(BX或BP)的内容加上变址寄存器(SI或DI)的内容构成:有效地址BX/BPSI/DI 8/16位位移量段基址对应BX寄存器默认是DS,对应BP寄存器默认是SS;可用段前缀改变。该寻址方式适用于数组或表格存取。MOV AX,8BX+SI ;默认操作数在数据段中 MOV BX,-6BP+DI;默认操作数在堆栈段中 MOV BX,ES:BP+DI ;操作数在附加段中,7.固定寻址,固定寻址又叫隐含寻址。指令码中不包含指明操作数地址的部
9、分,而其操码本身隐含地指明了操作数地址。如:十进制调整指令DAA,该指令的功能是对AL寄存器中的内容进行十进制调整,调整后的内容仍存放到AL中。隐含寻址的指令,不需要计算EA,执行速度快,而且大多为单字节指令。,3.3 8086/8088的指令系统,8086/8088的指令分以下几类:数据传送类指令。算术运算类指令。逻辑运算与移位类指令。串操作类指令。控制转移类指令。处理器控制类指令。在学习过程中,要正确理解每条指令的助记符、寻址方式、数据类型,并理解指令对标志位的影响,掌握好每条指令的功能以及使用注意事项,是下一章汇编语言程序设计的基础。,符号的约定,OPD :目的操作数(8/16位)OPS
10、 :源操作数(8/16位),3.3.1 数据传送类指令,数据传送是计算机中最基本、最重要的一种操作,传送指令也是最常使用的一类指令。除标志寄存器传送指令外,均不影响标志位。分为:1.通用数据传送指令2.标志寄存器传送指令3.目标地址传送指令4.输入/输出指令,1.通用数据传送指令,1)MOV传送指令2)XCHG交换指令3)XLAT换码指令4)堆栈操作指令,1)传送指令MOV(move),格式: MOV OPD,OPS MOV指令是形式简单但使用最多的指令,它可以完成CPU内寄存器之间、寄存器与存储器之间的数据传送,还可以将立即数送入寄存器或内存。MOV AL,BL;将寄存器BL的内容传送到寄存
11、器AL中。MOV DI, AX;将寄存器AX的内容传送到DI和DI+1所 指的内存字单元中。MOV CX,1000H;将数据段中偏移地址1000H和1001H 单元的内容送CX中。MOV BL,40;将立即数40传送到寄存器BL。,注意,立即数、CS和IP不能作为目的操作数。两个段寄存器之间不能相互传送数据。两个存储单元之间不能直接传送。不能将立即数直接传送到段寄存器。两个操作数的类型和长度必须一致。,2)交换指令XCHG(exchange),格式:XCHG OPD,OPS操作数的类型可以为字节或字。交换只能在通用寄存器之间、通用寄存器与存储器之间进行。,3)换码指令XLAT(translat
12、e),格式: XLAT 或 XLAT 表首址功能:使AL中的值变换为内存表格中的对应值。它是一条隐含寻址方式的指令,将数据段内有效地址为(BX)+(AL)的内存字节单元中数据送入AL。该指令常用来查表,即将表头地址赋予BX,再将需求的表内位移地址赋予AL,最后运用XLAT指令即可以将该地址处的表值送到AL。,4)堆栈操作指令,堆栈是一个“后进先出LIFO”(或说“先进后出FILO”)的主存区域,位于堆栈段中;SS段寄存器记录其段地址。堆栈只有一个出口,即当前栈顶;用堆栈指针寄存器SP指定。堆栈只有两种基本操作:入栈和出栈,对应两条指令PUSH和POP。,入栈指令PUSH,格式:PUSH OPS
13、功能:修改指针:(SP)-2SP;将OPS指明的寄存器、段寄存器或存储器中的一个字数据压入堆栈的顶部。例:假设在指令执行前,(SP)=1000H;(AX)= 1234H。则PUSH AX指令执行后,12H被压入堆栈段偏移地址为0FFFH单元,34H被压入堆栈段偏移地址为0FFEH单元,栈顶指针(SP)=0FFEH。PUSH指令在使用应该注意:源操作数只能是16位,而不能是8位的。源操作数不能为立即数。,出栈指令POP,格式:POP OPD功能:将栈顶的一个字数据送至OPD指明的寄存器、段寄存器(CS除外)或存储器中;修改指针:(SP)+2SP。例:假设在指令执行前,(SP)=0FFEH,(BX
14、)=2004H,并且堆栈段栈顶(0FFEH)单元内存放34H,(0FFFH)单元内存放12H。则POP BX指令执行后,1234H被弹出放入BX中,栈顶指针(SP)=1000H。POP指令在使用时应该注意:目的操作数只能是16位,而不能是8位的。立即数、CS不能作为目的操作数。,2.标志寄存器传送指令,LAHF指令:取标志寄存器指令。将标志寄存器的低8位传送到AH中。SAHF指令:设置标志寄存器指令。将AH的内容传送到标志寄存器的低8位。PUSHF指令:将标志寄存器的值压入堆栈。POPF指令:从堆栈中弹出一个字到标志寄存器中。,3.目标地址传送指令,1)取偏移地址指令LEA格式:LEA OPD
15、,OPS功能:将源操作数的偏移地址送到目的操作数。该指令不影响标志位,源操作数必须是存储器操作数,目的操作数必须是16位通用寄存器。LEA SI,TABLE;TABLE为存储器操作数的符号地址LEA AX,SI;该指令等效于MOV AX,SI指令,与MOV AX,SI 指令的效果不同,注意区别。,2)传送偏移地址及数据段首址指令LDS格式:LDS OPD,OPS功能:从源操作数所指定的存储单元中取出某变量的地址指针(共4个字节),将低地址两个字节(偏移量)送到目的操作数,将高地址两个字节(段首址)送到DS中。该指令对标志位不影响,源操作数是双字类型存储器操作数,目的操作数必须是16位通用寄存器
16、。设某双字存储单元的偏移地址为3000H,双字数据为12345678H,则LDS SI,3000H指令执行后,(DS)=1234H,(SI)=5678H。,3.目标地址传送指令(续),3.目标地址传送指令(续),3)传送偏移地址及附加段首址指令LES格式:LES OPD,OPS功能:从源操作数所指定的存储单元取出某变量的地址指针(共4个字节),将低地址两个字节(偏移量)送到目的操作数,将高地址两个字节(变量的段首址)送到ES中。,4.输入输出指令,输入/输出指令用于完成输入/输出端口与累加器(AL/AX)之间的数据传送,指令中给出输入/输出端口的地址。,1)输入指令IN,格式:IN OPD,O
17、PS功能:从端口(地址为n或在DX中)输入位数据到AL或输入16位数据到AX。IN AL,40H;从40H端口读入一个字节送ALIN AX,80H;从80H端口读入一个字节送AL,从 81H端口读入一个字节送AHMOV DX,8F00H;将端口地址8F00H送DXIN AL,DX;从8F00H端口读入一个字节送AL,2)输出指令OUT,格式:OUT OPD,OPS功能:从AL输出8位数据或从AX输出16位数据到端口(地址为n或在DX中)。OUT 40H,AL;将AL内容送40H端口OUT 80H,AX;将AL内容送80H端口,将AH的内容送81H 端口MOV DX,8F00H;将端口地址8F0
18、0H送DXOUT DX,AL;将AL内容送8F00H端口输入/输出指令在使用应该注意:输入/输出指令对标志寄存器没有影响。端口地址大于255时,必须用DX指定端口地址。,3.3.2 算术运算类指令,在8086/8088指令系统中,具有完备的加、减、乘和除运算。可以完成带符号和不带符号的8位/16位二进制的算术运算,以及BCD码表示的十进制数的算术运算。,1.加法指令,1)不带进位加法指令ADD格式:ADD OPD,OPS功能:OPS+OPD OPD。影响标志位CF、AF、PF、SF、OF和ZF。2)带进位加法指令ADC格式:ADC OPD,OPS功能:OPS+OPD+CF OPD。影响标志位C
19、F、AF、PF、SF、OF和ZF。ADC指令常用于多字的加法。,1.加法指令(续),3)加指令格式:INC OPD功能:将目的操作数OPD的内容加,并将结果回送到目的操作数。影响标志位AF、PF、SF、OF和ZF,但不影响CF标志。INC AX;AX中内容加,结果送回AXINC BL;BL中内容加,结果送回BLINC BYTE PTR SI ;将SI所指内存字节单元内容 加,并回存。,2.减法指令,1)不带借位的减法指令SUB格式:SUB OPD,OPS功能:OPD-OPS OPD结果影响标志位CF、AF、PF、SF、OF和ZF。SUB BX,CX;BX的内容减去CX的内容,结果放入BX2)带
20、借位的减法指令SBB格式:SBB OPD,OPS功能:OPD-OPS-CFOPD结果影响标志位CF、AF、PF、SF、OF和ZF。 SBB SI,AL;SI所指字节单元内容减AL的值,再减 CF,结果存回原内存单元。,2.减法指令(续),3)减指令格式:DEC OPD功能:将目的操作数OPD的内容减,并将结果回送到目的操作数。影响标志位AF、PF、SF、OF和ZF,但不影响CF标志。DEC AX;AX的内容减,结果送回AX。 DEC CL;CL的内容减,结果送回CL。,2.减法指令(续),4)比较指令格式:CMP OPD,OPS功能:目的操作数OPD减去源操作数OPS,结果不回送。但影响标志位
21、CF、AF、PF、SF、OF和ZF。 CMP AL,09H;将AL的内容和09H比较,结果影响标志位可以根据标志位的变化,来判断比较结果。通过ZF的值来判断两数是否相等。若ZF=1,说明两数相等;否则,两数不等。通过CF、OF和SF的变化来判断无符号数或有符号数的大小:对于无符号数,如CF=0,则目的操作数比源操作数大;如CF=1,则目的操作数比源操作数小。对于有符号数,如OF=SF,则目的操作数比源操作数大;如OFSF,则目的操作数比源操作数小。,2.减法指令(续),5)求补指令格式:NEG OPD功能:由目的操作数OPD求补,将其结果送回目的操作数。需要注意的是,它实际做0-OPDOPD运
22、算。影响标志位CF、AF、PF、SF、OF和ZF。 MOV AL,05HNEG AL;(AL)=0FBH,CF=1MOV AL,-05HNEG AL;(AL)=05H,CF=1,3.乘法指令,1)无符号数乘法指令格式: MUL OPS功能: 字节乘法: (AL)(OPS)AX 字乘法: (AX)(OPS)(DX,AX)例如: MUL BL 指令执行前,(AL)=0B4H=180 ,(BL)=11H=17 指令执行后,(AX)= 0BF4H = 3060, CF=1,OF=1MUL指令在使用时应该注意:OPS不能是立即数。MUL指令影响CF、OF标志,不影响其它标志。对于字节乘法,若AH0,则C
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 16 32 微处理器 指令系统
限制150内