




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、18088指令系统(寻址方式) mov ax,12h call display Jmp 1234h 28088指令系统(寻址方式) 38088指令系统(寻址方式) 指令指令控制计算机完成指定操作的命令控制计算机完成指定操作的命令 机器指令机器指令指令的二进制代码形式。例如:指令的二进制代码形式。例如:CD21H 汇编指令汇编指令助记符形式的指令。例如:助记符形式的指令。例如:INT 21H 指令系统指令系统CPU所有指令及其使用规则的集合所有指令及其使用规则的集合 48088指令系统(寻址方式) 参见 表3-1 8086/8088 CPU 常用指令一览表 P92 58088指令系统(寻址方式)
2、 68088指令系统(寻址方式) 说明要执行的说明要执行的 是什么操作是什么操作 操作对象,可以操作对象,可以 有有0个、个、1个或个或2个个 目的目的源源 1.指令的一般格式 78088指令系统(寻址方式) 指令举例: ADD AX,SI+6 MOV AX , BX 操作码 操作数 INC BX HLT 暂停指令 88088指令系统(寻址方式) MOV AX,0FA00H;正确正确 MOV 8000H,DX;错误错误 操作数操作数 数据(立即数)数据(立即数) 地址地址: 寄存器寄存器(名称名称)、存储器单元(地址)、存储器单元(地址) I/O接口的端口(地址)接口的端口(地址) 因为立即数
3、据是常数据, 没有表示地址的含义 98088指令系统(寻址方式) 放在放在8个通用寄存器或个通用寄存器或4个段寄存器中的操作数个段寄存器中的操作数 1 6 位位 A X A HA L 1 6 位位 B X B HB L 1 6 位位 C X C HC L 1 6 位位 D X D HD L 表示参加运算的数存放在指令给出的寄存器中,可以是表示参加运算的数存放在指令给出的寄存器中,可以是16位或位或8位。位。 108088指令系统(寻址方式) 只能存放字操作数只能存放字操作数 段寄存器存放段寄存器存放 当前操作数的当前操作数的 段基地址段基地址 可可作为源或目的操作数作为源或目的操作数(但但CS
4、不作为目的操作数不作为目的操作数), 不允许将不允许将 立即数传送到段寄存器立即数传送到段寄存器, 可通过某个通用寄存器传递改变可通过某个通用寄存器传递改变 SI DI BP SP CS DS ES SS 118088指令系统(寻址方式) 存储器操作数存储器操作数 字节字节 字字 双字双字 1 2 4 类型类型存储单元个数存储单元个数 一般不允许一般不允许两个两个操作数同时为存储器操作数操作数同时为存储器操作数 Flags 标志寄存器: 仅有个别指令可用它作为操作数 IP 不能用指令指针寄存器: 它作为操作数, 顺序执 行时它自动加1,跳转执行时自动会跳转 表示当前参加运算的数存放在存储器的某
5、表示当前参加运算的数存放在存储器的某1/2/4个单元中个单元中 128088指令系统(寻址方式) 存储单元的物理地址存储单元的物理地址 = 段基地址段基地址16 + 偏移地址偏移地址 若指令中没有指明所涉及的段寄存器,CPU就 采用默认的段寄存器来确定操作数所在的段。 表表2.3 段寄存器使用的一些基本约定段寄存器使用的一些基本约定 138088指令系统(寻址方式) 存储器操作数的偏移地址(也称有效地址存储器操作数的偏移地址(也称有效地址EA)要要用用“EA”方括方括 号括起来号括起来, 它它可以通过不同的寻址方式由指令给出;可以通过不同的寻址方式由指令给出; 存储器操作数的段基地址(也称存储
6、器操作数的段基地址(也称段段头地址头地址)一般省去,按隐含规)一般省去,按隐含规 则确定它们,也可直接给出进行段超越。则确定它们,也可直接给出进行段超越。 例如例如 若若(BX)=2000H, (SI)=0A00H, (DI)=2A00H, 则以下指令的结果是一样的:则以下指令的结果是一样的: MOV AL, 2A00H ;隐含段头为隐含段头为DS,直接寻址,直接寻址 MOV AL, BX+0A00H ;隐含段头为隐含段头为DS ,寄存器相对寻址,寄存器相对寻址 MOV AL, BXSI ;隐含段头为隐含段头为DS,基址,基址-变址寻址变址寻址 MOV AL, DI ;隐含段头为隐含段头为DS
7、,寄存器间接寻址,寄存器间接寻址 但但 MOV AL, ES:2A00H ; 段超越,段头为段超越,段头为ES,与前,与前4条不同条不同 存储单元的物理地址存储单元的物理地址 = 段基地址段基地址16 + 偏移地址偏移地址 注意:存储器数据表示形式:注意:存储器数据表示形式: 地址值或寄存器地址值或寄存器 148088指令系统(寻址方式) 取指令取指令 取操作数取操作数 执行指令执行指令 传送结果传送结果 单位用时钟周期数单位用时钟周期数T表示表示 结论:结论: 1)尽量使用寄存器作为操作数)尽量使用寄存器作为操作数 2)若有可能,用移位代替乘除法)若有可能,用移位代替乘除法 3)尽量使用简单
8、的寻址方式)尽量使用简单的寻址方式 执行执行 158088指令系统(寻址方式) 3.1.33.1.3 CISC和RISC指令系统 1.CISC指令(复杂指令系统) 2.RISC指令(精简指令系统) 3. VLIW:超长指令字 168088指令系统(寻址方式) 1.使用微代码,指令集可以直接在微代码记忆体(比主 记忆体的速度快很多)里执行,新设计的处理器,只需 增加较少的电晶体就可以执行同样的指令集,也可以很 快地编写新的指令集程式 2.庞大的指令集。 3.能够有效缩短新指令的微代码设计时间,允许实现 CISC体系机器的向上相容。 4.指令集以及晶片的设计比上一代产品更复杂,不同的 指令,需要不
9、同的时钟周期来完成,执行较慢的指令, 将影响整台机器的执行效率 178088指令系统(寻址方式) 188088指令系统(寻址方式) 198088指令系统(寻址方式) l 操作数操作数(为一常数为一常数)直接由指令给出直接由指令给出 (此操作数称为立即数此操作数称为立即数) l 立即寻址只能用于源操作数立即寻址只能用于源操作数 l 例:例: MOV AX, 1C8FH 错误例:错误例: MOV 2A00H, AX ; 错误!错误! 208088指令系统(寻址方式) 立即数立即数 操作码操作码 低低8位位 高高8位位 存储器存储器 MOV操作码操作码 02H 31H AHAL 代码段 代码段 立即
10、寻址指令在存立即寻址指令在存 储器中的存放形式储器中的存放形式 AX 指令操作例:指令操作例:MOV AX,3102H ; AX 3102H 执行后,执行后,(AH) = 31H,(AL) = 02H 用途:给寄存器或存储单元赋初值。用途:给寄存器或存储单元赋初值。 218088指令系统(寻址方式) l 表示参加运算的数据存放在内存中,指令中直接给出存表示参加运算的数据存放在内存中,指令中直接给出存 储器操作数的储器操作数的16位偏移地址位偏移地址 存储器偏移地址也称为有效地址存储器偏移地址也称为有效地址(EA, Effective Address) l存储器默认的段寄存器为存储器默认的段寄存
11、器为DS, 但也可以显式地指定其他段寄存器但也可以显式地指定其他段寄存器称为段超越前缀称为段超越前缀 l存储器偏移地址也可用符号地址来表示,如存储器偏移地址也可用符号地址来表示,如ADDR、VAR l 例:例: MOV AX , 2A00H; 段头隐含为段头隐含为DS MOV DX , ES: 2A00H;段超越;段超越 228088指令系统(寻址方式) 例:例:MOV AX,3102H ;AL (3102H) , AH (3103H) 如果(DS)=2000H, (23102H) = CDH, (23103H) = ABH 则操作数的物理地址为: 20000H+3102H = 23102H
12、指令执行后:(AX) = ABCDH MOV操作码操作码 02H 31H AHAL 23102H CDH ABH 存储器存储器 代码段数据段 . . 23103H 用途:用途:用于操作数存放在存储器单元中 238088指令系统(寻址方式) l 操作数放在某个寄存器中操作数放在某个寄存器中 l 源操作数与目的操作数字长要相同源操作数与目的操作数字长要相同 l 寄存器寻址与段地址无关寄存器寻址与段地址无关 l 例:例: MOV AX, BX MOV 3F00H, AX MOV CL, AL 错误例:错误例: MOV AX, BL ; 字长不同字长不同 MOV ES: AX, DX ; 寄存器与段无
13、关寄存器与段无关 248088指令系统(寻址方式) AX SI 2233H2233H 指令操作例:指令操作例:MOV SI,AX ; SI (AX) 指令执行前:(AX)=2233H 指令执行后:(AX)=2233H,(SI)=2233H 用途:用途:操作数存放在寄存器中,根据寄存器名称寻找寄存 器里面的数据。 258088指令系统(寻址方式) EA = (BX) (BP) (SI) (DI) 268088指令系统(寻址方式) 44H 33H 60001200 DSSI 60000 61200 61200H AX 存储器存储器 数据段 +) 1200 44H33H 用途:用途:操作数存放在存储
14、器地址为16位的的寻址 278088指令系统(寻址方式) l EA=间址寄存器的内容间址寄存器的内容 + 8/16位的位移量位的位移量 寄存器相对寻址寄存器相对寻址常用于存取表格或一维数组中的常用于存取表格或一维数组中的 元素元素把表格的起始地址作为位移量,元素的把表格的起始地址作为位移量,元素的 下标值放在间址寄存器中(或反之)下标值放在间址寄存器中(或反之) EA = (BX) (BP) (SI) (DI) + 8位 16位 位移量 288088指令系统(寻址方式) 298088指令系统(寻址方式) 操作码操作码 00 偏移量低 2A 偏移量高 DS 60000 BX 1000 + DAT
15、A 2A00 63A00 63A00H AHALAX 代码段数据段 . . . . . . . . . 66H 55H MOV AX,DATABX 用途:用途:操作数存放在存储器地址指定的单元中 308088指令系统(寻址方式) l 若操作数的偏移地址:若操作数的偏移地址: 由由基址寄存器基址寄存器(BX(BX或或BP)BP)给出给出 基址寻址方式基址寻址方式 由由变址寄存器变址寄存器(SI(SI或或DI)DI)给出给出 变址寻址方式变址寻址方式 l 由一个基址寄存器由一个基址寄存器的内容和一个变址寄存器的内容和一个变址寄存器的内的内 容相加而形成操作数的偏移地址,容相加而形成操作数的偏移地址
16、,称为称为基址基址-变址寻变址寻 址。址。 EA = (BX) (BP) + (SI) (DI) l 同一组内的寄存器不能同时出现同一组内的寄存器不能同时出现。 基址寄存器基址寄存器变址寄存器变址寄存器 318088指令系统(寻址方式) 用途:用途:操作数存放在存储器地址指定的单元中 328088指令系统(寻址方式) 83000 操作码操作码 DS 80000 BX 2000 + SI 1000 83000H AHALAX 代码段 数据段 . . . . . . . . . YY XX 指令操作例:指令操作例:MOV AX,BXSI 假定:假定:(DS)=8000H, (BX)=2000H,
17、SI=1000H 则物理地址则物理地址 = 80000H + 2000H + 1000H = 83000H= 80000H + 2000H + 1000H = 83000H 指令执行后指令执行后: (: (AL)=83000HAL)=83000H (AH)=83001H (AH)=83001H 338088指令系统(寻址方式) l 在在基址基址-变址寻址的基础上再加上一个相对位变址寻址的基础上再加上一个相对位移量移量 l 注意事项同注意事项同基址基址-变址寻址变址寻址 EA = (BX) (BP) + (SI) (DI) + 8位 16位 位移量 l 例:例: MOV AX,BASE SI B
18、X MOV AX,BX+BASE SI MOV AX,BX+SI+BASE MOV AX,BX BASE SI MOV AX,BX+SI BASE 基址基址变址变址 用途:用途:操作数存放在存储器地址指定的单元中 348088指令系统(寻址方式) 指令指令操作例:操作例:MOV AX,DATADIBX 若(DS)=8000H, (BX)=2000H, (DI)=1000H, DATA=200H 则指令执行后(AH)=83201H, (AL)=83200H 83200 83200H AHALAX + DATA 0200 操作码操作码 代码段数据段 . . . . . . . . . YY XX DS 80000 BX 2000 DI 1000 358088指令系统(寻址方式) 使用相对的基址使用相对的基址-变址寻址方式可以很方便地访变址寻址方式可以很方便地访 问二维数组。问二维数组。 基址寄存器基址寄存器 数组首地址数组首地址 变址寄存器变址寄存器 数组元素行址数组元素行址 位移量位移量
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论