- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机原理(第三版)第3章汇编语言基础
指令与指令系统 指令: 控制计算机完成某种操作的命令 指令系统: 处理器所能识别的所有指令的集合 指令的兼容性: 同一系列机的指令都是兼容的 3.1 概述 8088和8086的指令系统是完全相同的; 8086的指令系统共包含92种基本指令,按照功能分为 6大类: 1、数据传送Data Transfer 2、算术运算Arithmetic 3、逻辑运算和移位logic 4、串操作string manipulation 5、控制转移类control transfer 6、处理器控制processor control 3.1.1 指令的基本构成 指令中应包含的信息: 一条8088指令包含有操作码和操作数两部分,指令的长度在1~7个字节之间。 立即操作数、寄存器操作数、存储器操作数 立即操作数即常数;可以是字节(8位)、字(16位); 立即操作数只能用作源操作数,不能用作目的操作数; 2、寄存器操作数 寄存器操作数存放在CPU的8个通用寄存器或4个段寄存器中,既可以用作源操作数也可以用作目的操作数;但CS一般不作为目的操作数; 个别指令将FLAGS作为操作数; 3、存储器操作数 存储器操作数可以是字节、字、双字,分别存在1个、2个、4个存储单元中;它既可以用作源操作数也可以用作目的操作数; 注意:对大多数指令,不允许源操作数和目的操作数同时为存储器操作数,即不允许存储器到存储器的操作。 存储器单元的地址由两部分组成:段基址和偏移地址(也叫有效地址),所以各种存储器操作,都涉及到段寄存器; 8088对寄存器使用的约定 3.1.2 指令的执行时间 一条指令的执行时间应包括取指令、取操作数、执行指令及传送结果4部分时间,通常用时钟周期数来表示; 不同的指令在执行时间上有很大差别; 寄存器操作数的指令执行速度最快; 立即操作数作为指令的一部分存放在指令队列中,因此执行指令时不需要访问内存; 存储器操作数放在内存单元中,首先由BIU计算出20位物理地址,然后再执行存储器的读写操作,指令的执行速度最慢。 例如:CPU的时钟频率为5MHz,即一个时钟周期为0.2微秒,则寄存器到寄存器之间的传送指令的执行时间为: t=2X0.2=0.4微秒 再如:立即操作数传送到寄存器的指令执行时间为: t=4X0.2=0.8微秒 3.2 CPU的寻址方式 获得操作数所在地址的方法,叫寻址方式,共有8种寻址方式;一般是针对源操作数而言; 寻址方式分为两大类: 寻找操作数的地址 寻找要执行的下一条指令的地址 主要在程序转移(JMP)或过程调用(CALL)时用来寻找目的地址或程序入口地址 3.2.1 立即寻址 1、立即寻址(Immediate Addressing) 源操作数是一个立即数,8位或16位的整数; 操作数直接放在操作码的后面;若为16位则低8位在低地址单元,高8位在高地址单元存放。指令在内存中的存放形式: 2、直接寻址(Direct Addressing) 在指令的操作码后面直接给出操作数的16位偏移地址,与操作码一起存放在内存的代码段;低8位在前,高8位在后;默认段为DS数据段,允许段超越。 16位偏移地址必须用[ ]括起来。 MOV AL, [4000H] ;将DS:4000H之内容送入AL(字 节操作) MOV [2000H], BX ;将BL之内容送入DS:2000H 将BH之内容送入DS:2001H 注意:MOV AX, 2510H与 MOV AX, [2510H]的区别! 段超越 如果操作数不是存放在数据段DS中,则在指令中要用段超越符号加以说明; 如下例:MOV BX, ES:[1200H] 将ES段中偏移地址为1200H和1201H两单元的内容送到BX寄存器中; 有时也用一个符号来代替数值以表示操作数的偏移地址,通常把这个符号称为符号地址; 如: MOV BX, ES:[BUFFER] BUFFER必须在程序开始时予以定义。 3、寄存器寻址(Register Addressing) 操作数存放在CPU的寄存器中。 寄存器可以是AX、BX、CX、DX、SI、DI、BP;也可以是AL、AH、BL、BH、CL、CH、DL、DH;也可以是段寄存器; 如: MOV AL,BL MOV AX,DX MOV DS,AX MOV SI,BP 4、寄存器间接寻址(Register Indirect Addressing) 与寄存器的寻址方式不同,指令中指定的寄存器的内容不是操作数而是操作数的偏移地址;能做这种用途的寄存器叫做地址指针寄存器。它们是SI、DI 、BX、BP,也简称为间址寄存器; 选择SI、DI 、BX作间址寄存器时
文档评论(0)