8086CPU指令系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章 8086CPU指令系统
本章重点:
1.寻址方式:
立即寻址,寄存器寻址,直接寻址,寄存器间接寻址,基址寻址,变址寻址,基址加变址寻址,串寻址,端口寻址,隐含寻址。
2.8086指令系统:
数据传送指令,算术运算指令,移位指令,程序控制指令,串操作指令,处理器控制指令,I/O指令,中断指令。
学习目标:
1.掌握寻址方式;
2.掌握常用指令的功能和用法。
难点:
区别指令的正确与错误。
§1.寻址方式
指令在存储器中是顺序存放的,而操作数的存放没有规律,因此操作数的寻址方法相对比较复杂。
一、指令的基本格式
1.组成:
一条指令包括操作码和操作数两部分。
操作数:源操作数,目标操作数。
2.寻址方式:
寻找指令中操作数的方法。
3.操作数类型:(8086系统)
寄存器操作数,存储器操作数,立即数(在指令代码中)和I/O端口操作数。
二、寻址方式
1.立即数寻址
⑴方式:
指令中所需的操作数直接包含在指令代码中(即由指令直接提供),立即数可以是8位,也可以是16位。
例:MOV AL,80H ;将十六进制数80H送入AL
MOV AX,1090H;将1090H送AX:90H→AL ,10H→AH
⑵说明:
●采用立即数寻址方式的指令主要用来对寄存器赋值。因为操作数可以从
指令中直接取得,不需要运行总线周期,所以,其显著特点就是速度快。
●规定:立即数只能是整数,不能是小数,变量或者其他类型的数据;另
外,立即数只能作为源操作数。
2.寄存器寻址
⑴方式:
如果操作数就在CPU的内部寄存器中,那么寄存器名可在指令中指出,这种寻址方式就叫寄存器寻址。
对16位操作数来说,寄存器可以为AX,BX,CX,DX,SI,DI,SP或BP,而对8位操作数来说寄存器可以为AH……DH,AL……DL。
例:INC CX ;将CX内容加1
ROL AH,1 ;将AH中的内容循环左移1位。
⑵说明:
●不需要使用总线周期,因此,执行速度快。
●一条指令中,可以对源操作数采用寄存器寻址方式,也可对目的操作数
采用寄存器寻址方式,或两者都用。
※以下各种寻址方式,操作数都在存储器中。
3.直接寻址。
⑴方式:
数据总是在存储器中,存储单元的有效地址由指令直接指出。
例:MOV AX,[1070H];将DS段的偏移量1070H、1071H的内容装入AX。
即,若DS=2000H,则将21070H和21071H两单元的内容取出送AX。
⑵说明:
●直接寻址是对存储器进行访问时可采用的最简单的方式,且可用符号地
址代替数值地址。
●若要对其它段寄存器所指出的存储区进行直接寻址,则必须指出段寄存
器名。
例:MOV BX ,CS:[3000H];
设CS=5100H,则取54000H和54001H两单元内容送BX。
4.寄存器间接寻址
⑴方式:
将操作数所在的存储单元的偏移地址放在指令给出的寄存器中,而不像直接寻址那样直接给出。
例:MOV AX,[SI];AX←DS:[SI]
MOV [BX],AX;DS:[BX]←AX
⑵说明:
●可用于这种寻址方式的寄存器只能是SI、DI、BP和BX。
●SI,DI,BX约定的段寄存器是DS;而BP约定的段寄存器是SS。
5.基址寻址:
⑴方式:
操作数的有效地址偏移量是基址寄存器BX或基址指针BP的内容与指令给
定的位移量(8位或16位)之和。
例:MOV AX,ARRAY[BX]
等价MOV AX,[ARRAY+BX]
将DS:[BX]+ARRAY 的内容→AX
⑵说明:
●BX约定的段寄存器为DS,BP约定SS,可使用段跨越前缀。
●物理地址=16×(DS)+(BX)+位移量(8或16位)
或16×(SS)+(BP)+位移量(8或16位)
6.变址寻址
操作数的有效地址是变址寄存器SI、DI的内容与指令给定的位移量(8位或16位)之和。段寄存器约定在DS中,允许段超越。
例:MOV [DI+12H],AX;DS:[DI+12H]←AX
MOV BX,SS:[DI+45H];BX←SS:[DI+45H]
7.基址变址寻址。
⑴方式:
操作数的有效地址是指令给定的位移量和一个基址寄存器(BX或BP)及一个变址寄存器(SI或DI)的内容之和。段寄存器约定由基址寄存器决定,BX 约定DS,BP约定SS,允许段超越。
例:MOV AX,ARRAY[BX] [SI];
等价MOV AX,[BX+SI+ARRAY];
即:AX←DS:[BX+SI+ARRAY]
⑵说明:
基址寄存器BX,BP不能同时出现在一个方括号内;变址寄存器SI,DI亦如此。
8.串操作寻址方式:
用于串操作指令,其操作数虽然也在寄存器中,但不使用上述寻址方式,而是隐含地运用,SI指出源串偏移地址,DI指出目的串偏移地址。指令执行后,SI和DI的内容根据方向标志DF的值进行增减,DF=0增,DF=1减。若串操作按字节进行,增/减“1”;若串操作按字进行,增/减“2”。
●约定源串段地址在DS中,目的串段地址在ES中,不允许段超越。即
SI→DS DI→ES