新编位微型计算机原理及应用(同名194)课件.ppt

上传人(卖家):晟晟文业 文档编号:5145456 上传时间:2023-02-14 格式:PPT 页数:148 大小:1.46MB
下载 相关 举报
新编位微型计算机原理及应用(同名194)课件.ppt_第1页
第1页 / 共148页
新编位微型计算机原理及应用(同名194)课件.ppt_第2页
第2页 / 共148页
新编位微型计算机原理及应用(同名194)课件.ppt_第3页
第3页 / 共148页
新编位微型计算机原理及应用(同名194)课件.ppt_第4页
第4页 / 共148页
新编位微型计算机原理及应用(同名194)课件.ppt_第5页
第5页 / 共148页
点击查看更多>>
资源描述

1、优秀精品课件文档资料第第3 3章章 指令系统指令系统 3.1 3.1 概述概述 3.2 804863.2 80486寻址方式寻址方式 3.3 804863.3 80486标志寄存器标志寄存器 3.4 3.4 汇编语言语法规则之一汇编语言语法规则之一 3.5 804863.5 80486基本集指令基本集指令 3.3.概述概述 1.1.指令指令:通知:通知 CPUCPU执行某种操作的执行某种操作的“命令命令”,CPUCPU全部指令的集合,称为指令系统全部指令的集合,称为指令系统2.2.指令的书写格式指令的书写格式H 目标指令(机器指令)用一串目标指令(机器指令)用一串0 0,1 1代码书写代码书写

2、 注意:硬件只能识别,存储,运行目标指令注意:硬件只能识别,存储,运行目标指令H 符号指令:用规定的助记符符号指令:用规定的助记符,规定的书写格式规定的书写格式书写的指令书写的指令大多数指令由操作码和地址码大多数指令由操作码和地址码2部分组成部分组成 操作码:通知操作码:通知CPU执行什么操作执行什么操作(唯一唯一)地址码:指令的操作对象所存放的位置地址码:指令的操作对象所存放的位置(根根据操作对象的多样性其表现形式很多据操作对象的多样性其表现形式很多)教材上把地址码称为操作数教材上把地址码称为操作数3.3.指令的组成指令的组成 相应的编码规则对指令进行编码相应的编码规则对指令进行编码 操作码

3、的编码操作码的编码 地址码的编码地址码的编码 80486 80486符号指令与机器指令对照表符号指令与机器指令对照表 操作操作 80486 80486符号指令符号指令 80486 80486机器指令机器指令 1234HAX 1234HAX MOV AX,1234H MOV AX,1234H B8 34 12 B8 34 12 AX+BXAX AX+BXAX ADD AX,BX ADD AX,BX 03 C3 03 C3 CX-DXCXCX-DXCX SUB CX,DXSUB CX,DX 2B CA 2B CA返回调用程序返回调用程序 RETRET C3C3MOV:MOVEMOV:MOVE传送传

4、送 ADD:ADD:加加 SUB:SUB:减减 RET:RETURN RET:RETURN 返回返回4.4.目标程序的生成目标程序的生成 汇编汇编源程序源程序编辑、编译、链接编辑、编译、链接可执行的机器指令可执行的机器指令程序(目标程序程序(目标程序)5.5.指令长度指令长度 486 486指令长度(机器指令长度)为指令长度(机器指令长度)为1 11616字节字节规定:多字节指令占用连续的内存单元,存放指规定:多字节指令占用连续的内存单元,存放指令第一字节的内存地址,称为令第一字节的内存地址,称为“指令地址指令地址”。CPUCPU只能识别,存储,运行目标指令,而用机只能识别,存储,运行目标指令

5、,而用机器指令编程非常困难。于是早期的专家们发明了器指令编程非常困难。于是早期的专家们发明了符号指令,再经过软件把符号指令符号指令,再经过软件把符号指令机器指令。机器指令。图示如下:图示如下:6.6.指令存放指令存放 如:如:12345H12345H单元中有一条指令单元中有一条指令 MOV AX,6789HMOV AX,6789H67H67H89H89HB8HB8H12345H:12345H:操作码操作码操作数操作数6789H6789HMOV AX,6789H 先写操作码,再写操作数。多字节操作数连续先写操作码,再写操作数。多字节操作数连续存放。存放规律存放。存放规律:低位字节存放在低地址单元

6、,低位字节存放在低地址单元,高位字节存放在相邻的高地址单元高位字节存放在相邻的高地址单元7.符号指令的符号指令的 书写格式书写格式标号标号:操作码助记符操作码助记符 空格空格 操作数助记符操作数助记符;注释;注释 如如:NEXT:ADD AX,BX ;AX+BX AXNEXT:ADD AX,BX ;AX+BX AX INC SI INC SI ;SI+1 SI;SI+1 SI 标号:以字母开头标号:以字母开头,后跟字母后跟字母,数字数字,下划线下划线,长度长度3131字符字符 标号又称符号地址标号又称符号地址,代表该指令的逻辑地址。代表该指令的逻辑地址。可有可无,设置是为了程序的转向可有可无,

7、设置是为了程序的转向注解:以注解:以“;”开头,不执行,打印程序清单时照开头,不执行,打印程序清单时照原样打印,原样打印,“系统保留字系统保留字”不能做标号。不能做标号。3.2 3.2 486486寻址方式寻址方式 操作数是指令的操作对象,寻址方式与地址操作数是指令的操作对象,寻址方式与地址码有密切关系。形成操作数地址码的过程就是码有密切关系。形成操作数地址码的过程就是寻址。寻址。“寻址方式寻址方式”:通俗的讲,就是通知:通俗的讲,就是通知CPUCPU本条本条指令的操作数在哪儿?或者说用什么方式才能得指令的操作数在哪儿?或者说用什么方式才能得到操作数。到操作数。微机系统有微机系统有3 3类操作

8、数:类操作数:H立即数:操作数包含在本条指令中立即数:操作数包含在本条指令中,是指令的一部分。是指令的一部分。H寄存器操作数:寄存器操作数:CPUCPU内部的通用寄存器,段寄存器内容。内部的通用寄存器,段寄存器内容。H内存操作数:操作数在存储单元中。内存操作数:操作数在存储单元中。486486有有3 3类类7 7种寻址方式种寻址方式立即寻址方式:获得立即数立即寻址方式:获得立即数寄存器寻址方式:获得寄存器操作数寄存器寻址方式:获得寄存器操作数存储器寻址方式:获得存储器操作数(内存操存储器寻址方式:获得存储器操作数(内存操作数)作数)H学习重点学习重点:怎样在符号指令中,正确的描述各:怎样在符号

9、指令中,正确的描述各种寻址方式种寻址方式1.1.立即寻址立即寻址操作数包含在本条指令中操作数包含在本条指令中,是指令是指令的一部分的一部分,完整地取出该条指令,也就获得了完整地取出该条指令,也就获得了操作数。操作数。如如:MOVEAX,12345678H MOVBL,10101010B ;AAH BL MOV CL,4;FCH CL MOVDL,A;41H DL ADD AL,0C8H MOVSI,3*5;15 SI上例源操作数即为立即寻址,上例源操作数即为立即寻址,立即数书写规定:立即数书写规定:H立即数以数字开头,以开头的立即数以数字开头,以开头的1616进制数,必须进制数,必须前缀前缀0

10、 0。程序员可以按自己的习惯书写立即数,各种合法的立即数程序员可以按自己的习惯书写立即数,各种合法的立即数经汇编后,一律自动转换成等值的二进制数,负数用补码表经汇编后,一律自动转换成等值的二进制数,负数用补码表示。示。H立即数的数制用后缀表示立即数的数制用后缀表示,B,B表示二进制数表示二进制数,H,H表示十六表示十六进制数进制数,D D或缺省为十进制数,单引号括起来的字符编或缺省为十进制数,单引号括起来的字符编译成相应的译成相应的ASCIIASCII码码 。H可以用可以用+*/组成立即数表达式组成立即数表达式2.寄存器寻址寄存器寻址操作数在操作数在CPU的某个寄存器中,的某个寄存器中,符号指

11、令中直接写出寄存器名称。符号指令中直接写出寄存器名称。如如:MOV AX,DS ;DS内容内容 AX INC SI ;SI+1 SI (Increase 增量增量)DEC DI ;DI 1 DI (Decrease 减量减量)如:下述条指令,目标操作数即为寄存器寻址如:下述条指令,目标操作数即为寄存器寻址 MOV EAX,12345678H MOV BL,10101010B ;AAH BL MOV CL,4;FCH CL MOV DL,5;35H DL ADD AL,0C8H MOV SI,3*5;15 SI3.3.存储器操作数寻址方式存储器操作数寻址方式 重申:重申:H 在读写内存操作数之前

12、,在读写内存操作数之前,CPUCPU必须知道相关存必须知道相关存储单元的物理地址。储单元的物理地址。H 程序员的责任仅在于正确的书写逻辑地址表达程序员的责任仅在于正确的书写逻辑地址表达式,然后由式,然后由CPUCPU自动运算以求出物理地址。自动运算以求出物理地址。H 由于由于CPUCPU对存储器采用分段管理对存储器采用分段管理,因此指令格式因此指令格式中只能写出存放操作数的内存单元的中只能写出存放操作数的内存单元的“逻辑地逻辑地址址”。H 存储单元逻辑地址表达式的一般形式存储单元逻辑地址表达式的一般形式 段寄存器:段寄存器:偏移地址偏移地址有有5 5种寻址方式种寻址方式段超越前缀助记符,访问约

13、定的逻辑段可以省略段超越前缀助记符,访问约定的逻辑段可以省略H 实模式下,物理地址实模式下,物理地址=段寄存器段寄存器2 24 4+偏移地址偏移地址(1)(1)直接寻址直接寻址 地址表达式的格式地址表达式的格式1 1:段寄存器:段寄存器:偏移地址偏移地址 地址表达式的格式地址表达式的格式2 2:段寄存器:变量名段寄存器:变量名 用变量名代表存储单元的有效地址用变量名代表存储单元的有效地址 如:如:MOVMOVAL,ES:2CHAL,ES:2CH 从从ESES附加段偏移地址为附加段偏移地址为2CH2CH的单元取数的单元取数ALAL如:如:MOV AX,DS:1234HMOV AX,DS:1234

14、H 从数据段偏移地址为从数据段偏移地址为1234H1234H的单元取一字的单元取一字AXAX 这种格式很少使用,这种格式很少使用,通常情况下,程序员不通常情况下,程序员不知道某单单元的偏移地址知道某单单元的偏移地址(本书仅在本书仅在P349P349有过一有过一次应用)次应用)设数据段设数据段XXXX字节单元的内容为字节单元的内容为11H11H ES ES附加段附加段YYYY字单元的内容为字单元的内容为2233H2233H MOV AL,DS:XX ;MOV AL,DS:XX ;取数据段取数据段XXXX字节单元的内容字节单元的内容ALAL 或或 MOV AL,XX ;AL=11HMOV AL,X

15、X ;AL=11H MOV MOV AX,ES:YY ;AX,ES:YY ;取取ESES附加段附加段YYYY字单元的内容字单元的内容AXAX 或或 MOV AX,YY ;AX=2233HMOV AX,YY ;AX=2233H说明:说明:H汇编语言允许为某单元起一个汇编语言允许为某单元起一个“名字名字”,这个名这个名字就称为该单元的字就称为该单元的“变量名变量名”,经汇编之后,变,经汇编之后,变量名有段基址和偏移量两种属性。量名有段基址和偏移量两种属性。H变量名是唯一的,程序中不能有重复的变量名,变量名是唯一的,程序中不能有重复的变量名,“段寄存器:段寄存器:”可以省略。可以省略。(2)(2)寄

16、存器间接寻址寄存器间接寻址 寄存器间接寻址又称间接寻址,间址寄存器间接寻址又称间接寻址,间址 什么是间接寻址?什么是间接寻址?操作数在内存单元,该单元的段基址在段寄存器中操作数在内存单元,该单元的段基址在段寄存器中有效地址在间址寄存器中,有效地址在间址寄存器中,CPUCPU首先进行地址计算首先进行地址计算 间接寻址的地址表达式间接寻址的地址表达式 段寄存器:段寄存器:间址寄存器间址寄存器 某单元的物理地址某单元的物理地址=段寄存器内容段寄存器内容16+16+间址寄存器间址寄存器 访问约定的逻辑段,间接寻址的地址表达式访问约定的逻辑段,间接寻址的地址表达式简简化为:化为:间址寄存器间址寄存器 某

17、单元的物理地址某单元的物理地址=约定的段寄存器内容约定的段寄存器内容16+16+间址寄存器间址寄存器 间址寄存器间址寄存器 和约定访问的逻辑段和约定访问的逻辑段486486规定:规定:间址寄存器间址寄存器约定访问的逻辑段约定访问的逻辑段BPBP堆栈段堆栈段1616位寻址方式位寻址方式BX,SI,DIBX,SI,DI数据段数据段EBP,ESPEBP,ESP堆栈段堆栈段3232位寻址方式位寻址方式EAXEAXEDX,ESI,EDIEDX,ESI,EDI数据段数据段举例:举例:设数据段设数据段BUFBUF字节单元的内容为字节单元的内容为55H,55H,取出该取出该数数 ALAL解解1 1:用:用BX

18、BX间址间址 MOV AX,MOV AX,数据段段基址数据段段基址 MOV DS,AXMOV DS,AX MOV BX,BUF MOV BX,BUF单元的有效地址单元的有效地址 MOV AL,DS:BX ;AL=55HMOV AL,DS:BX ;AL=55H等价于等价于:MOV AL,BX MOV AL,BX 由于由于BXBX间址,约定访问的是数据段,间址,约定访问的是数据段,“DS:DS:”可省可省解解2 2:用:用BPBP间址间址 MOV AX,MOV AX,数据段段基址数据段段基址 MOV DS,AXMOV DS,AX MOV BP,BUF MOV BP,BUF单元的有效地址单元的有效地

19、址 MOV AL,DS:BP ;AL=55HMOV AL,DS:BP ;AL=55H 不能写成不能写成:MOV AL,BP :MOV AL,BP 由于由于BPBP间址约定访问的是堆栈段,间址约定访问的是堆栈段,“DS:DS:”不可省不可省解解3 3:用变量名直接寻址:用变量名直接寻址 MOV AX,MOV AX,数据段段基址数据段段基址 MOVMOV DS,AX DS,AX MOV AL,BUF MOV AL,BUF ;AL=55H ;AL=55H(3)(3)基址寻址基址寻址 在基址寻址中,有效地址由两部分组成。在基址寻址中,有效地址由两部分组成。一部分在基址寄存器中,另一部分为常量一部分在基

20、址寄存器中,另一部分为常量 。基址寻址的地址表达式:基址寻址的地址表达式:段寄存器段寄存器:基址寄存器基址寄存器+位移量位移量 物理地址物理地址=段寄存器内容段寄存器内容16+16+基址寄存器基址寄存器+位移量位移量 访问约定的逻辑段,简化的地址表达式:访问约定的逻辑段,简化的地址表达式:基址寄存器基址寄存器+位移量位移量 物理地址物理地址=约定的段寄存器内容约定的段寄存器内容16+16+基址寄存器基址寄存器 +位移量位移量 基址寄存器和约定访问的逻辑段基址寄存器和约定访问的逻辑段基址寄存器基址寄存器约定访问的逻辑段约定访问的逻辑段BPBP堆栈段堆栈段1616位寻址方式位寻址方式BXBX数据段

21、数据段EBP,ESPEBP,ESP堆栈段堆栈段3232位寻址方式位寻址方式EAXEAXEDX,ESI,EDIEDX,ESI,EDI数据段数据段 举例举例设数据段设数据段BUFBUF单元依次有:单元依次有:78H,56H,34H,12H78H,56H,34H,12H则:则:MOVMOVAX,AX,数据段段基址数据段段基址MOV DS,AXMOV DS,AXMOV BX,BUFMOV BX,BUF单元有效地址单元有效地址MOV DH,BX+1 ;DH=56HMOV DH,BX+1 ;DH=56HMOV DX,BX+2 ;DX=1234HMOV DX,BX+2 ;DX=1234H12H34H56H7

22、8HBUF(4)(4)变址寻址变址寻址 有比例因子的变址寻址其地址表达式为有比例因子的变址寻址其地址表达式为 段寄存器:段寄存器:比例因子比例因子*变址寄存器变址寄存器+位移量位移量 物理地址物理地址=段寄存器段寄存器16+16+比例因子比例因子变址寄存器变址寄存器 +位移量位移量 没有比例因子的变址寻址其地址表达式为:没有比例因子的变址寻址其地址表达式为:段寄存器:段寄存器:变址寄存器变址寄存器+位移量位移量 访问约定的逻辑段可简化为访问约定的逻辑段可简化为 :变址寄存器变址寄存器+位移量位移量 物理地址物理地址=约定的段寄存器约定的段寄存器16+16+变址寄存器变址寄存器+位移量位移量 变

23、址寄存器与约定访问的逻辑段变址寄存器与约定访问的逻辑段变址寄存器变址寄存器约定访问的逻辑段约定访问的逻辑段 适用于适用于SI,DISI,DI数据段数据段无比例因子无比例因子,16,16位寻址位寻址EBPEBP堆栈段堆栈段有比例因子有比例因子,32,32位寻址位寻址EAXEAXEDX,ESI,EDIEDX,ESI,EDI数据段数据段说明:比例因子只能是说明:比例因子只能是1 1、2 2、4 4、8 8 因此因此:MOV AL,8MOV AL,8*SI+15;SI+15;非法,非法,1616位寻址不能使用位寻址不能使用 比例因子比例因子 MOV AL,10MOV AL,10*ESI+5;ESI+5

24、;非法指令,比例因子错了非法指令,比例因子错了 MOV AL,ES:SI ;MOV AL,ES:SI ;访问附加段访问附加段 MOV AL,SI ;MOV AL,SI ;访问数据段访问数据段(5)(5)基址加变址寻址基址加变址寻址 存储单元的有效地址由存储单元的有效地址由3 3部分组成部分组成 有比例因子的基址加变址的地址表达式为:有比例因子的基址加变址的地址表达式为:段寄存器:段寄存器:基址寄存器基址寄存器+比例因子比例因子*变址寄存器变址寄存器+位移量位移量 访问约定逻辑段其地址表达式简化为:访问约定逻辑段其地址表达式简化为:基址寄存器基址寄存器+比例因子比例因子*变址寄存器变址寄存器+位

25、移量位移量 无比例因子基址加变址无比例因子基址加变址地址表达式:地址表达式:段寄存器:段寄存器:基址寄存器基址寄存器+变址寄存器变址寄存器+位移量位移量 访问约定逻辑段:访问约定逻辑段:基址寄存器基址寄存器+变址寄存器变址寄存器+位移量位移量 基址加变址寻址是基址寻址和变址寻址的组合基址加变址寻址是基址寻址和变址寻址的组合,要求要求基址寄存器和变址寄存器都是基址寄存器和变址寄存器都是1616位或都是位或都是3232位,位,否则(否则(1616位寻址和位寻址和3232位寻址混合使用)是非法位寻址混合使用)是非法指令指令默认的段寄存器不一致,这样的组合虽然是合默认的段寄存器不一致,这样的组合虽然是

26、合法,但容易出错法,但容易出错如:如:BP+SIBP+SI,BP+DIBP+DIBPBP约定的逻辑段为堆栈段,而约定的逻辑段为堆栈段,而SISI、DIDI约定的逻约定的逻辑段为数据段,它们组合之后约定访问的逻辑辑段为数据段,它们组合之后约定访问的逻辑段是谁?段是谁?实验证明是堆栈段实验证明是堆栈段,这样的组合最好要加段前缀。这样的组合最好要加段前缀。寻址方式的学习要点寻址方式的学习要点:1.1.访问内存操作数由访问内存操作数由5 5种寻址方式种寻址方式 直接寻址、间址、基址、变址、基址加变址直接寻址、间址、基址、变址、基址加变址2.2.关于关于1616位寻址和位寻址和3232位寻址位寻址 16

27、16位寻址:位寻址:采用采用1616位间址、基址、变址、基址加变址位间址、基址、变址、基址加变址 3232位寻址:位寻址:采用采用3232位间址、基址、变址、基址加变址位间址、基址、变址、基址加变址3 3.在实模式下,一个逻辑段的体积最大为在实模式下,一个逻辑段的体积最大为64K64K,存储存储 单元的有效地址为单元的有效地址为1616位,不可能超过位,不可能超过FFFFH,FFFFH,在实模式下运行的程序通常采用在实模式下运行的程序通常采用1616位寻址位寻址4.4.关于段约定和段超越关于段约定和段超越在用间址、基址、变址、基址加变址寻址内在用间址、基址、变址、基址加变址寻址内存操作数时,其

28、地址表达式都有存操作数时,其地址表达式都有2 2种书写格种书写格式式有段有段 前缀和无段前缀前缀和无段前缀如用如用BPBP、EBPEBP、ESPESP参与寻址,参与寻址,CPUCPU自动认自动认为是访问堆栈段为是访问堆栈段,段超越前缀段超越前缀“SSSS:”可省可省MOV AL ,SSMOV AL ,SS:BP BP ;访问;访问SSSS段,用段,用BPBP间址间址MOV AL ,BPMOV AL ,BP如用如用BPBP、EBPEBP、ESPESP参与寻址非堆栈段,必参与寻址非堆栈段,必须明确写出段超越前缀,如:须明确写出段超越前缀,如:MOV AL ,DSMOV AL ,DS:BP BP;访

29、问堆栈段,用;访问堆栈段,用BPBP间址间址MOV AL ,ESMOV AL ,ES:BP+2BP+2如用如用BXBX、SISI、DIDI、EAXEAXEDXEDX、ESIESI、EDIEDI参参与寻址与寻址,CPU,CPU自动认为是访问数据段,自动认为是访问数据段,“DSDS:”可省可省明确写出,不能省明确写出,不能省如:如:MOV ALMOV AL,DSDS:BXBX MOV AL MOV AL,BXBX 如用如用BXBX、SISI、DIDI、EAXEAX、EDXEDX、ESIESI、EDIEDI参与参与寻址非数据段,必须明确写出段超越前缀,如:寻址非数据段,必须明确写出段超越前缀,如:M

30、OV AL,ES:BXMOV AL,FS:SI+25 5使用段约定访问内存操作数是最常用的使用段约定访问内存操作数是最常用的编程风格编程风格明确写出,不能省明确写出,不能省 3.3 标志寄存器标志寄存器AC VM RNT IOPL ODITSZAPC D31 D19 D18 D080486标志寄存器标志寄存器80486标志寄存器为标志寄存器为32位位,实际使用实际使用15位位 15位标志分为两类位标志分为两类:状态标志状态标志和和控制标志控制标志 H状态标志记录了当前指令执行后的状态信息状态标志记录了当前指令执行后的状态信息 H控制标志用来控制微处理器操作控制标志用来控制微处理器操作本节首先介

31、绍本节首先介绍6种状态标志种状态标志一状态标志一状态标志1.C标志标志进位进位/借位标志借位标志H 字节加字节加/减减,最高位最高位(D7)产生进位产生进位/借位时借位时:C标志置标志置1,否则置否则置0H 字加字加/减减,最高位最高位(D15)产生进位产生进位/借位时借位时:C标志置标志置1,否则置否则置0 H 双字加双字加/减减,最高位最高位(D31)产生进位产生进位/借位时借位时:C标志置标志置1,否则置否则置02.A2.A标志标志辅助进位辅助进位/辅助借位标志辅助借位标志H 字节加字节加/减减,D3位产生进位位产生进位/借位时借位时:A A标志置标志置1,否则置否则置0 H 字加字加/

32、减减,D7位产生进位位产生进位/借位时借位时:A A标志置标志置1,1,否则置否则置0 0 H 双字加双字加/减减,D15,D15位产生进位位产生进位/借位时借位时:A A标志置标志置1,1,否则置否则置0 03.S S标志标志符号标志符号标志H字节运算后字节运算后,结果的最高位结果的最高位D7位为位为1,1,S S标志置标志置1,1,否则置否则置0 0H字运算后字运算后,结果的最高位结果的最高位D15D15位为位为1,1,S S标志置标志置1,1,否则置否则置0 0H双字运算后双字运算后,结果的最高位结果的最高位D31D31位为位为1,1,S S标志置标志置1,1,否则置否则置0 04.Z标

33、志标志结果标志结果标志 运算结果为全运算结果为全0时时,Z标志置标志置1,1,否则置否则置0 0 5.P.P标志标志奇偶标志奇偶标志(实际上是偶标志实际上是偶标志)运算结果中运算结果中,“1 1”的个数为偶数个的个数为偶数个(没没 有有“1 1”也是偶数也是偶数),P),P标志置标志置1,1,否则置否则置0 06.O O标志标志溢出标志溢出标志 运算结果产生溢出运算结果产生溢出,则则O O标志置标志置1,1,否则置否则置0 0二二.复习复习:有关溢出的几个概念有关溢出的几个概念 1.什么是溢出?什么是溢出?运算结果超出寄存器能表示的范围运算结果超出寄存器能表示的范围,称为溢出。称为溢出。溢出和

34、操作数的性质有关。溢出和操作数的性质有关。8位无符号数运算位无符号数运算,结果结果255 有溢出有溢出16位无符号数运算位无符号数运算,结果结果65535 有溢出有溢出32位无符号数运算位无符号数运算,结果结果 232_1 有溢出有溢出8位有符号数运算位有符号数运算,-128结果结果127 有溢出有溢出16位有符号数运算位有符号数运算,-32768结果结果32767 有溢出有溢出32位有符号数运算位有符号数运算,-231结果结果 231_1 有溢出有溢出2.CPU如何判断溢出如何判断溢出 由于溢出和操作数的性质有关由于溢出和操作数的性质有关,而操作数的性而操作数的性质是由程序员定义的。质是由程

35、序员定义的。CPU只能默认一种选择只能默认一种选择,即即CPU一律一律 默认操作数是有符号补码数默认操作数是有符号补码数,并以此并以此来设置溢出标志。来设置溢出标志。3.3.程序员如何判断溢出程序员如何判断溢出H 有符号数运算有符号数运算,判判O O标志标志,O,O标志为标志为1,1,有溢出有溢出H 无符号数加无符号数加/减减,判判C C标志标志,C,C标志为标志为1,1,有溢出有溢出例例:下列指令执行后下列指令执行后 AL=?A.C.O.P.S.Z AL=?A.C.O.P.S.Z 为何值为何值?MOV AL,0C8HADD AL,0C8H AL=90H,AL=90H,如果如果C8HC8H为无

36、符号数为无符号数(值值=200),=200),则有溢则有溢出。如果出。如果C8HC8H为有符号数为有符号数(值值=-56),=-56),则无溢出。则无溢出。这这6 6个标志中个标志中,C.O.P.S.Z,C.O.P.S.Z可为程序的转移提供可为程序的转移提供测试条件。测试条件。000010011000 100 110 01 0 0 1 1 0C=1S=1P=1 O=0Z=01A=13.4 804863.4 80486基本集指令基本集指令分分6 6类,为讲授方便,用类,为讲授方便,用N 代表立即数,代表立即数,N8、N16、N32代表代表8、16、32位立即数位立即数R 代表寄存器操作数,代表寄

37、存器操作数,R8、R16、R32代代表表8、16、32位寄存器操作数位寄存器操作数M 代表内存操作数,代表内存操作数,M8、M16、M32代代表表8、16、32位内存操作数位内存操作数S 代表段寄存器代表段寄存器总说明:总说明:源、目操作数不可同为内存操作数源、目操作数不可同为内存操作数源、目操作数属性一致(长度相同)源、目操作数属性一致(长度相同)当目标操作数为间址、变址、基址、当目标操作数为间址、变址、基址、基基+变址的内存操作数,而源操作数变址的内存操作数,而源操作数为单字节为单字节/双字节立即数,则目标操作双字节立即数,则目标操作数必须用数必须用PTR说明类型说明类型若操作数为间、变、

38、基、基若操作数为间、变、基、基+变的内存变的内存操作数,则必须用操作数,则必须用PTR说明类型说明类型2.对于单操作数指令对于单操作数指令(如:(如:I NC,DEC)1.于双操作数指令于双操作数指令(如:(如:MOV,ADD,CMP)第一类、第一类、传送类传送类本类指令执行后,不影响状态标志本类指令执行后,不影响状态标志1.通用传送通用传送(1)数据传送数据传送MOV 目目 ,源源 R/M ,N R/M/S ,R ;目标不允许是;目标不允许是CS R/M ,S R/S ,M ;目标不允许是;目标不允许是CS功能:功能:源源目,源不变,不影响目,源不变,不影响6种标志种标志H HCSCS不能做

39、目标,不能向段寄存器写入立即数不能做目标,不能向段寄存器写入立即数H H禁止禁止2 2个内存单元直接传送个内存单元直接传送H H源、目属性要一致源、目属性要一致说明:说明:为了深入理解数值定义伪指令、学习为了深入理解数值定义伪指令、学习PTRPTR运算符运算符的使用的使用,请仔细阅读以下例题。请仔细阅读以下例题。【例例】阅读以下程序阅读以下程序,写出指令执行后的目标写出指令执行后的目标操作数。操作数。代码段代码段:MOV AX,SEG 数据段段名数据段段名 MOV DS,AX ;对对DS初始化初始化 MOV BL,BNUM ;BL=?所以,所以,BL=12H数据段经过汇编之后,数据段经过汇编之

40、后,设数据段设数据段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H BNUM:12H34H56H78H90H 代码段代码段:MOV AX,SEG 数据段段名数据段段名 MOV DS,AX MOV BX,WNUM+2 ;BX=?数据段经过汇编之后,数据段经过汇编之后,WNUM:22H11H44H33H66H55H所以,所以,BX=3344H设数据段设数据段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,33

41、44H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H 代码段代码段:MOV AX,SEG 数据段段名数据段段名 MOV DS,AX MOV EBX,DNUM+4;EBX=?数据段经过汇编之后数据段经过汇编之后,所以,所以,EBX=87654321HDNUM:68H24H57H13H21H43H65H87H设数据段设数据段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H 代码段代码段

42、:MOV AX,SEG 数据段段名数据段段名 MOV DS,AX MOV BL,BYTE PTR DNUM ;BL=?数据段经过汇编之后,数据段经过汇编之后,所以,所以,BL=68HDNUM:68H24H57H13H设数据段设数据段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H 代码段代码段:MOV AX,SEG 数据段段名数据段段名 MOV DS,AX ;对对DS初始化初始化 MOV BX,WORD PTR BNUM+1 ;BX=?所以,

43、所以,BX=5634HBNUM:12H34H56H78H90H数据段经过汇编之后数据段经过汇编之后,设数据段设数据段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H 代码段代码段:MOV AX,SEG 数据段段名数据段段名 MOV DS,AX ;对对DS初始化初始化 MOV EBX,DWORD PTR WNUM+1 ;EBX=?所以,所以,EBX=66334411H数据段经过汇编之后数据段经过汇编之后,设数据段设数据段:BNUM DB 12H

44、,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H WNUM:22H11H44H33H66H55H 代码段代码段:MOV AX,SEG 数据段段名数据段段名 MOV DS,AX MOV BX,WORD PTR DNUM 3 ;BX=?数据段经过汇编之后,数据段经过汇编之后,所以,所以,BX=2113H设数据段设数据段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,876543

45、21HFNUM DF 112233445566H DNUM:68H24H57H13H21H43H65H87H代码段代码段:MOV AX,SEG 数据段段名数据段段名 MOV DS,AX ;对对DS初始化初始化 MOV BX,WORD PTR FNUM ;BX=?所以,所以,BX=5566H数据段经过汇编之后,数据段经过汇编之后,设数据段设数据段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H FNUM:66H55H44H33H22H11H 代

46、码段代码段:MOV AX,SEG 数据段段名数据段段名 MOV DS,AX ;对对DS初始化初始化 MOV BX,3 MOV BL,BNUM BX ;BL=?所以,所以,BL=78H数据段经过汇编之后,数据段经过汇编之后,设数据段设数据段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H BNUM:12H34H56H78H90H 代码段代码段:MOV AX,SEG 数据段段名数据段段名 MOV DS,AX ;对对DS初始化初始化 MOV SI,

47、OFFSET BNUM MOV BX,SI+1 ;BX=?所以,所以,BX=5634H数据段经过汇编之后,数据段经过汇编之后,设数据段设数据段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H BNUM:12H34H56H78H90H(2)符号扩展符号扩展/零扩展传送指令零扩展传送指令MOVSX 目标寄存器目标寄存器 ,源操作数源操作数MOVZX 目标寄存器目标寄存器 ,源操作数源操作数 R ,R/M说明:源操作数字长要小于或等于目标寄存说明:

48、源操作数字长要小于或等于目标寄存器字长器字长功能:功能:H H源操作数不变源操作数不变H H MOVSX 源操作数符号位向高位扩展,再源操作数符号位向高位扩展,再送给目标送给目标H H MOVZX 源操作数高位补零,再送给目标源操作数高位补零,再送给目标如:如:MOV DL ,-16 ;DL=F0HMOVSX BX ,DL ;BX=FFF0H,DL、DH不变不变MOVZX BX ,DL;BX=00F0H,DL、DH不变不变(3)有效地址传送有效地址传送LEA 目标寄存器目标寄存器 ,源操作数源操作数 R16/R32 ,内存地址表达式内存地址表达式功能:功能:计算内存单元的有效地址计算内存单元的

49、有效地址(不是其中的操作数不是其中的操作数)目标目标LEA BX ,BUF;将;将BUF单元的有效地址单元的有效地址BXLEA BX,SI+5;将数据段;将数据段SI+5变址的那个单变址的那个单元的有效地址元的有效地址BX 注注:有效地址就是偏移地址有效地址就是偏移地址,LEA指令等效与指令等效与OFFSET运算符运算符 LEA BX,BUF 等效于等效于 MOV BX,OFFSET BUF (4)交换指令交换指令XCHG 第一操作数第一操作数 ,第二操作数第二操作数 R ,R M ,R R ,M功能:完成功能:完成2个操作数互换个操作数互换说明:说明:H H段寄存器、立即数不能参加互换段寄存

50、器、立即数不能参加互换H H 2个内存操作数不能互换,源、目的类型一致个内存操作数不能互换,源、目的类型一致(5)字节交换字节交换BSWAP 32位通用寄存器位通用寄存器功能:功能:D31D24 D23D16 D15D8 D7D0说明:说明:该指令查找数据段中的字节表,即要求数该指令查找数据段中的字节表,即要求数据表放在数据段,每个表元素为单字节数据表放在数据段,每个表元素为单字节数 指令执行前:指令执行前:EBX或或BX=表头的有效地址表头的有效地址 AL=表元素相对于表头的地址位移量表元素相对于表头的地址位移量 功能:功能:DS:BX+ALAL或或DS:EBX+ALAL例:查找例:查找NU

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(新编位微型计算机原理及应用(同名194)课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|