




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 8086指令系统本章主要教学内容 1、8086指令的基本格式 2、8086指令系统的寻址方式 3、8086指令的应用3.1 基本数据类型基本数据类型x86x86系列处理器的系列处理器的基本数据类型基本数据类型: : 字节字节: : 8 8位位 字字: : 1616位位 双字双字: : 3232位位 四字四字: : 6464位位 双四字双四字: : 128128位位 如图如图3-13-1所示。所示。图3-2 图图3-23-2显示了基本数据类型作为显示了基本数据类型作为内存中的操作数引内存中的操作数引用时的字节顺序用时的字节顺序。 内存是按字节编址的(每个字节有一个地址内存是按字节编址的(
2、每个字节有一个地址号码)。各号码)。各基本数据类型的地址基本数据类型的地址用最低字节的地用最低字节的地址表示址表示。 低字节(位低字节(位0 0至位至位7 7)占用内存中的最低地址)占用内存中的最低地址,该地址也是此该地址也是此操作数的地址操作数的地址。称之为。称之为“小端优先小端优先(小印地安型)(小印地安型)”字、双字、四字和双四字的对齐字、双字、四字和双四字的对齐自然边界自然边界:字字的的自然边界是自然边界是偶数编号偶数编号的地址的地址; 双字双字的的自然边界地址能自然边界地址能被被4 4除尽除尽; 四字四字的的自然边界地址能自然边界地址能被被8 8除尽除尽。 字、双字和四字在内存中并不
3、需要对齐至字、双字和四字在内存中并不需要对齐至自然自然边界边界。 然而,为了改进程序的性能,数据结构然而,为了改进程序的性能,数据结构(特别是堆栈)只要可能就应该在自然边界上对(特别是堆栈)只要可能就应该在自然边界上对齐。因为对于齐。因为对于不对齐的存储访问不对齐的存储访问,处理器要求做处理器要求做两次存储访问操作两次存储访问操作;而对于对齐的访问而对于对齐的访问,只要进只要进行一次存储访问操作行一次存储访问操作。数字数据类型数字数据类型 虽然虽然字节字节、字字和和双字双字是是IA-32 IA-32 结构的基本结构的基本数据类型,但某些指令对这些数据类型的数据类型,但某些指令对这些数据类型的附
4、加解释允许在附加解释允许在数字数据类型数字数据类型(带符号的(带符号的或无符号整数和浮点数)上操作。这些数或无符号整数和浮点数)上操作。这些数字数据类型如图字数据类型如图3-33-3所示。所示。整数(1) (1) 无符号整数无符号整数 无符号整数是包含无符号整数是包含字节字节、字字、双字双字和和四字四字中的无符号中的无符号的二进制数。它们的值的范围,对于字节是从的二进制数。它们的值的范围,对于字节是从0 0到到255255;对;对于字,从于字,从0 0到到6553565535;对于双字,从;对于双字,从0 0到到2 23232-1-1;对于四字,;对于四字,从从0 0到到2 26464-1-1
5、。无符号整数有时作为原始数引用。无符号整数有时作为原始数引用。(2) (2) 符号整数符号整数 符号整数是保存在字节、字、双字或四字中的带符号符号整数是保存在字节、字、双字或四字中的带符号的二进制数。的二进制数。对于符号整数的所有操作都假定用对于符号整数的所有操作都假定用2 2的补码的补码表示表示。符号位定位在操作数的最高位符号位定位在操作数的最高位(见表(见表3-13-1中符号整中符号整数编码)。数编码)。 负数的符号位为负数的符号位为1 1,正数的符号位为正数的符号位为0 0。整数值的范。整数值的范围,对于围,对于字节字节,从,从-128-128到到+127+127;对于;对于字字从从-3
6、2768-32768到到+32767+32767;对于对于双字双字,从,从-2-23131到到+ +(2 23131-1-1);对于;对于四字四字,从,从-2-26363到到+ +(2 26363-1-1)。 2. 浮点数据类型浮点数据类型 IA-32结构定义和操作结构定义和操作三种浮点数据类三种浮点数据类型型:单精度浮点数单精度浮点数、双精度浮点数双精度浮点数和和扩展扩展的双精度浮点数的双精度浮点数(见图(见图3-3)。)。 这些数据类型的数据格式与这些数据类型的数据格式与IEEE标准标准754二进制浮点算术所规定的格式直接对应。二进制浮点算术所规定的格式直接对应。 指针数据类型指针数据类型
7、指针是内存单元的地址指针是内存单元的地址。IA-32 IA-32 结构定义结构定义两种类型的指针两种类型的指针: 近(近(nearnear)指针()指针(80868086中中1616位,位,8038680386以上为以上为3232位)位) nearnear指针是段内的指针是段内的1616位偏移量(也称为有效地址)位偏移量(也称为有效地址)。NearNear指针在平面存储模式中用于所有存储器引用;或在分段存储模式指针在平面存储模式中用于所有存储器引用;或在分段存储模式中用于同一段内的存储器引用。中用于同一段内的存储器引用。 远(远(farfar)指针()指针( 80868086中中3232位,位
8、,8038680386以上为以上为4848位)位)。 farfar指针是一个指针是一个4848位的逻辑地址位的逻辑地址,包含包含1616位段选择子位段选择子和和3232位位的偏移量的偏移量。farfar指针用于在分段存储模式中的跨段存储引用。指针用于在分段存储模式中的跨段存储引用。位字段数据类型位字段数据类型 一个位字段一个位字段(见图(见图3-53-5)是连续的位序列是连续的位序列。它能它能在内存中任何字节的任一位位置开始在内存中任何字节的任一位位置开始并能包含并能包含最多至最多至3232位位。串数据类型串数据类型 串是位、字节、字或双字的连续序列。串是位、字节、字或双字的连续序列。位位串能
9、从任一字节的任一位开始并能包含多串能从任一字节的任一位开始并能包含多至至232-1位。字节串能包含字节、字或双字,位。字节串能包含字节、字或双字,其范围能从其范围能从0至至232-1字节(字节(4GB)。)。3.2 8086的指令格式 操作码字段操作码字段 地址码字段地址码字段操作中用到的数据操作中用到的数据或数据所在的地址或数据所在的地址1. 操作码操作码反映机器做什么操作反映机器做什么操作2.地址码地址码8086 8086 汇编语言指令有以下汇编语言指令有以下格式格式: label:label:mnemonic mnemonic argument1, argument2 , argumen
10、t3argument1, argument2 , argument3 标号:标号:助记符助记符 参数参数1 1,参数,参数2 2,参数,参数3 3 ABCABC:ADDADD AX, BX AX, BX (1) (1)标号标号(label)(label)是一个标识符后面跟有冒号;是一个标识符后面跟有冒号; (2)(2)助记符(助记符(mnemonicmnemonic)是一类具有相同功能的是一类具有相同功能的指令操作码指令操作码的保留名的保留名; (3)(3)操作数参数操作数参数1 1(argument1argument1)、参数)、参数2 2(argument2argument2)和参)和参数
11、数3 3(argument3argument3)是任选的,可以有零到三个操作数。)是任选的,可以有零到三个操作数。 地址码地址码(1) 四地址四地址OP A1 A2 A3 A4A1 第一操作数地址第一操作数地址A2 第二操作数地址第二操作数地址A3 结果的地址结果的地址A4 下一条指令地址下一条指令地址若若 PC 代替代替 A4(A1) OP (A2) A34 次访存次访存OP A1 A2 A3(A1) OP (A2) A33次访存次访存若若 A3 用用 A1 或或 A2 代替代替(2) 三地址(3) 二地址二地址OP A1 A2(A1) OP (A2) A1(A1) OP (A2) A2或或
12、3 次访存次访存若寄存器若寄存器 代替代替 A1(或(或A2)若结果存于若结果存于 寄存器寄存器 3次访存次访存(4) 一地址一地址(5) 零地址零地址OP A1无地址码无地址码(ACC) OP (A1) ACC1次访存次访存 8086指令系统有两个级别:汇编级和机器级。以二进制代码形式表示的指令称为指令的机器码(Machine Code)。 指令和数据都是以二进制的形式存放在存储器中的,微处理器在接受指令和数据时,都是通过数据总线传输的。因此,微处理器把指令也当作数据来处理,它们之间惟一的区别是微处理器将指令送往IR寄存器,而将数据送往数据寄存器和ALU。 80X86指令格式中的操作数有:零
13、操作数、一操作数和二操作数三种形式。 对两操作数指令格式来说,出现在格式左边的是目的操作数(常用dest来表示),右边的是源操作数(常用src来表示)。 操作数可有不同的表示形式,也可来自机器的不同地方。对于不同的操作数,其在指令中的表示形式也不同,确定操作数存储地址的过程也不相同。 在8086/8088指令系统中,操作数有寄存器操作数、存储器操作数、立即数和输入输出端口操作数4种类型。 操作数在CPU中通用寄存器或段寄存器中的称为寄存器操作数;操作数在存储器的存储单元中的称为存储器操作数;操作数在指令代码中的称为立即数;操作数在输入输出端口的寄存器中的操作数称为输入输出端口操作数。 3.3
14、寻址方式寻址方式 所谓寻址方式是指寻找指令的操作数或操作数地址的方式。 如何寻找操作数或操作数所在地址,就是寻址方式所要解决的问题。 一般来说,寻址方式越多样,指令系统的功能就越强,灵活性也越大。操作数以常数的形式直接存放在指令中,紧跟操作码之后。操作数以常数的形式直接存放在指令中,紧跟操作码之后。它作为指令的一部分存放在指令操作码之后的存储单元中,这它作为指令的一部分存放在指令操作码之后的存储单元中,这种操作数称为立即数。种操作数称为立即数。立即数只能是源操作数(立即数只能是源操作数(SRC),可以是),可以是8位或位或16位常数。位常数。立即数寻址立即数寻址 例: MOVAX,1234H
15、; 指令执行后,(AX)=1234H 例: MOVAL,5H; 指令执行后,(AL)=05H立即数寻址 立即数也可以是数值表达式的形式,数值表达式既是用运算符号、圆括号等将常量、已经赋值的变量联系起来的有意义的式子。例如:MOV AL,27 MOD 6 ADD BL,2+3立即数寻址 立即数只能作为源操作数,不能用做目的操作数。 采用立即数寻址时,要注意立即数的取值大小,应在合理的范围之内。 立即数寻址 立即数可以是8位(字节常数),也可以是16位(字常数)。 如果立即数是16位的,在存储器中存放时,低8位在前,高8位在后。 指令中使用的立即数,在机器中存放时带符号数均做了符号位扩展处理,即将
16、最高位有效位扩展,以便存满8位或16位。 例: MOV BX,-27 指令之后(BX)= FFE5H指令指定寄存器的符号,指令所要的操作数存放在某寄存器中。指令指定寄存器的符号,指令所要的操作数存放在某寄存器中。 8位寄存器有:位寄存器有:AH、AL、BH、BL、CH、CL、DH和和DL等;等; 16位寄存器有:位寄存器有:AX、BX、CX、DX、SI、DI、SP和和BP等;等;段寄存器:段寄存器:CS、DS、SS、ESFlags寄存器寄存器寄存器寻址寄存器寻址例: MOVAX,BX;如指令执行前AX=0001H,BX=4321H,则执行后,AX=4321H,BX=4321H。 几点说明:操作
17、数类型与寄存器宽度一致;双操作数指令中,两个操作数不能同为段寄存器;目的操作数不能为CS;三、存储器寻址三、存储器寻址在内存中的源和目的操作数由在内存中的源和目的操作数由段选择子段选择子和和偏移量偏移量引用(见图引用(见图3-3-8 8)。)。 段选择子规定包含操作数的段段选择子规定包含操作数的段; ; 偏移量(从段的开始至操作数的第一个字节的字节数)偏移量(从段的开始至操作数的第一个字节的字节数)规定操作数的线性或有效地址规定操作数的线性或有效地址(EA(EA)。)。 对于对于8086CPU8086CPU,物理地址的计算为,物理地址的计算为: 物理地址物理地址 = = 段选择子段选择子16
18、16 + + 偏移量偏移量 段选择子段选择子1616即左移即左移4 4位位 示例:示例: MOV AXMOV AX,DS:SIDS:SI 简写为:简写为: MOV AXMOV AX,SISI1. 1. 规定段选择子规定段选择子 段选择子能隐含或用指令显式规定段选择子能隐含或用指令显式规定。规定段选择子。规定段选择子的最公共的方法是把它加载(的最公共的方法是把它加载(LOADLOAD)至段寄存器,然后允)至段寄存器,然后允许处理器根据正在执行的操作类型,隐含地选择寄存器。许处理器根据正在执行的操作类型,隐含地选择寄存器。 当存数据到内存或者从内存中取数据时,当存数据到内存或者从内存中取数据时,D
19、S DS 段为默段为默认的段。但它能被超越以允许访问其他段。认的段。但它能被超越以允许访问其他段。 以下的默认段,不能被超越:以下的默认段,不能被超越: (1) (1) 必须从码段必须从码段(CS)(CS)取指令取指令; (2) (2) 在串操作中的目的必须存储在由在串操作中的目的必须存储在由ESES寄存器指向寄存器指向的数据段的数据段; (3) (3) 推入和弹出操作必须总是引用推入和弹出操作必须总是引用SS SS 段段。 某些指令要求显式规定一个段选择子, 可以采取的方法 (1)直接赋值 MOV DS,BX 将BX中的段选择子传送至DS (2)使用内存中的Far指针,内存中第一个字包含偏移
20、量,下一个字包含段选择字。 段超越前缀用来改变默认段寻址,通常内址寻址是数据段或者堆栈段,但你可以在指令前面加上段超越前缀,就可以访问到其它段内的数据。 通常存储器数据寻址方式会用到DI, SI, BX, BP 几个寄存器,其中前三个对应的段默认为DS,就是数据段寄存器 而最后一个BP默认对应的是SS, 就是堆栈段寄存器 所以当我们要用到代码段寄存器或者附加段寄存器的时候就会用到段超越前缀 例如: mov al, si = mov al, ds:si mov al, bp = mov al, ss:si 而段超越的则必须在前边加上段地址: mov al, cs:si 2. 2. 规定偏移量规定
21、偏移量 存地址的偏移量部分,或者直接作为一个静态值(称为存地址的偏移量部分,或者直接作为一个静态值(称为位移量)规定,或者由以下一个或多个成员通过位移量)规定,或者由以下一个或多个成员通过加法计算加法计算得到地址:得到地址: (1)(1) 位移量位移量一个一个8 8位、位、1616位或位或3232位值;位值; (2) (2) 基地址基地址在通用寄存器中的值;在通用寄存器中的值; (3) (3) 索引(变址)索引(变址)在通用寄存器中的值;在通用寄存器中的值; (4) (4) 比例系数比例系数值值2 2、4 4或或8 8,用于与索引值相乘。,用于与索引值相乘。 由这些成员相加的结果的偏移量称为由这些成员相加的结果的偏移量称为有效地址有效地址。 EA=BASE+INDEX+DISPLACEMENTEA=BASE+INDEX+DISPLACEMENT 作为基地址或索引的作为基地址或索引的通用寄存器限制通用寄存器限制如下:如下: (1) SP(1) SP寄存器不能用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年康复医院护理服务发展计划
- 健康检测与评估人员培训计划
- 桩基土石方基坑支护复习试题有答案(二)
- 铁路工程废弃物控制措施
- 2025年语文毕业复习全景计划
- 2019-2025年中级银行从业资格之中级个人理财自我检测试卷A卷附答案
- 水利工程机械设备使用与维护措施
- 教科版(2017秋)六年级科学下册期末备考真题分类汇编专题05 综合题(含答案)
- 九年级物理实验补差计划
- 大型拆除项目的质量保证措施
- 大理石知识培训课件
- 2025年福建省厦门市中考数学二检试卷
- 《拥抱健康拒绝烟草》课件
- 济南幼儿师范高等专科学校招聘真题2024
- 鼻咽癌口腔炎护理查房
- 创业扶持政策对数字化转型的影响研究试题及答案
- 疗休养协议格式合同
- 2025航天知识竞赛考试题库(含答案)
- 人工智能技术在混合式日语教学中的应用及效果评估
- 郑州电子商务职业学院《文化创意产业管理学》2023-2024学年第二学期期末试卷
- 2024建安杯信息通信建设行业安全竞赛题库(试题含答案1-464题)
评论
0/150
提交评论