第3章80x86cpu指令系统技巧.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
;第三章 80x86cpu 指令系统 ;指令的结构 计算机的指令包括:操作码 + 操作数            ↓     ↓ 操作的性质 操作的对象 (1或2个字节) +  ↓存放在(位置不同) 寄存器、存储器、I/O端口地址、立即数(由寻址方式决定) 机器指令由操作码字段和操作数字段两部分组成。 操作码字段:说明cpu完成何种操作。在机器指令中对每个操作码对应一个唯一的二进制编码。 操作数字段:也称地址码,说明参加操作的数据对象本身或保存数据对象的位置。操作数字段可以有一个,二个或三个操作数或0个。;指令的分类 根据操作数的个数 单操作数、双操作数、无操作数 指令书写格式 操作码 操作数1,操作数2,…… 指令的编码 80X86 CPU指令系统采用变长的指令格式。 一条指令可以由1~16个字节组成。可能需要占用连续多个的存储单元,存放指令的第一个存储单元地址称为指令地址。 一条指令可能包含需要操作的对象即操作数,也可能占用内存的多个存储单元。 一个操作数如果占用连续多个的存储单元,也是进行连续存放,其中,操作数的低位存放在低地址存储单元中,高位存放在高地址部分。存放数据的第一个存储单元地址称为操作数的地址。;寻址方式 寻址方式的定义 指令中说明操作数所在地址的方法。 寻址:操作数所在的位置 操作数所在的位置 1、 指令代码中,这种操作数为立即数。 例:MOV AL , 08H 2、cpu内部的通用寄存器或段寄存器中,这种操作数为寄存器操作数。 例:INC CX 3、存储单元中,这种操作数为内存操作数。 内存操作数占用一个或者连续多个存储单元中。机器指令中操作数字段包含着此操作数所在的第一个存储单元的逻辑地址。 4、输入/输出端口中,这种操作数为端口操作数。;寻址方式分类 1、隐含寻址方式 2、数据型操作数寻址方式 3、目标寻址方式 ;数据型操作数寻址方式 一、立即寻址方式 (Immediate Addressing) 1.含义: 操作数是立即数(即8位,16位或32位的常数),直接包含在指令中。 2.特点: 翻译成机器码时,立即数是指令的一部分,紧跟在操作码之后存放在代码段内。在取出指令的同时也就取出了操作数,立即有操作数可用,所以称之为立即寻址。 如果立即数是l6/32位数:高字节→高地址单元,低字节→低地址单元 3.作用: 常用于给寄存器赋初值 4、注意: 立即数可以送到寄存器、一个存储单元(8位)、两个连续的存储单元(16位)中去; 立即数只能作源操作数,不能作目的操作数; 以A~F打头的数字出现在指令中时,前面必须加数字0。以免与其它符号相混淆(如:MOV AX 0FF00H)。;例: MOV CX,2A50H ;指令的编码格式如图 ;例: 立即数寻址 MOV AL MOV AX,-120 MOV AX,A0H ;思考:指令是否正确? MOV EAX MOV DL,’A’ ;’A’为立即数寻址 MOV CX,3*5 MOV BX,1234H MOV BX,34H ;思考:指令是否正确? MOV BL,1234H ;思考:指令是否正确? MOV CL,4 MOV CL,300 ;思考:指令是否正确? ;对比:C语言中,char c=300是否正确?;二、寄存器(直接)寻址方式 (Register Addressing) 1.含义: 操作数包含在寄存器中,寄存器的名称由指令指定。 2.特点: 32位操作数:寄存器可以是EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP等; 16位操作数:寄存器可以是AX、BX、CX、DX、SI、DI、SP和BP等。 8位操作数:寄存器AH、AL、BH、BL、CH、CL、DH和DL。 3.作用:寄存器之间传递数据。 4.注意: 源操作数的长度必须与目的操作数—致。MOV BL,BX 不允许段寄存器间直接传输。MOV ES,DS 不允许代码段寄存器作为目标操作数。 MOV CS,AX;内存操作数的寻址方式 (Register Addressing) 绝大多数操作数存放在一个或连续多个代码段以外的存储单元中。 CPU执行指令时根据程序中的逻辑地址自动转换得到物理地址后寻址某个存储单元,最后取出其中的信息。 任何一个内存单元的地址(逻辑地址)实际上由两部分组成: 1、段的基地址:该存储单元所在段的基地址,即该段的第一个存储单元的地址(如果是寻找操作数,在大多数情况下,数据存放在数据段寄存器DS中); 2、段内偏移量

文档评论(0)

过各自的生活 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档