二章微处理器和指令系统

上传人:re****.1 文档编号:567385787 上传时间:2024-07-20 格式:PPT 页数:183 大小:924.50KB
返回 下载 相关 举报
二章微处理器和指令系统_第1页
第1页 / 共183页
二章微处理器和指令系统_第2页
第2页 / 共183页
二章微处理器和指令系统_第3页
第3页 / 共183页
二章微处理器和指令系统_第4页
第4页 / 共183页
二章微处理器和指令系统_第5页
第5页 / 共183页
点击查看更多>>
资源描述

《二章微处理器和指令系统》由会员分享,可在线阅读,更多相关《二章微处理器和指令系统(183页珍藏版)》请在金锄头文库上搜索。

1、第二章第二章 微处理器和指令系统微处理器和指令系统2.1 Intel2.1 Intel系列微处理器概述系列微处理器概述2.2 Intel 804862.2 Intel 80486微处理器体系结构微处理器体系结构2.3 804862.3 80486的数据类型与寻址方式的数据类型与寻址方式2.4 804862.4 80486的汇编级指令系统的汇编级指令系统2.5 2.5 关于指令系统的说明关于指令系统的说明蚕桔搏码喇常撇饶寇郴夫搁违晕峰携赶孜藻焚识纽没尼谦嚏烂喜恢尧更揉二章微处理器和指令系统二章微处理器和指令系统1轻轧绝欢视寸擦纠堑殖媒赘龟鉴瞪健美葡爵避起睡企迟栓疫翼呕梯椭让扯二章微处理器和指令系

2、统二章微处理器和指令系统2.1 Intel2.1 Intel系列微处理器概述系列微处理器概述q Intel 8086/8088q Intel 80286q Intel 80386/80486q Pentium (80586) 俯轰象肘房容阮堂蹄骇凄颠谢箱堤按翁痔让须窗掠敷梭漳吟矗室召孕掣棋二章微处理器和指令系统二章微处理器和指令系统22.1.1 Intel 8086/80882.1.1 Intel 8086/8088 8088 8088 是准是准1616位微处理器位微处理器q8086/80888086/8088除了外数据总线位数及与此相关的部分逻辑除了外数据总线位数及与此相关的部分逻辑稍有差别

3、外稍有差别外, ,内部结构和基本性能相同内部结构和基本性能相同, ,指令系统完全兼容。指令系统完全兼容。 8086 8086 是全是全1616位微处理器位微处理器q在在8086/80888086/8088的设计中,引入了两个重要的结构概念:的设计中,引入了两个重要的结构概念: 指令流水线指令流水线 存储器分段存储器分段q数据总线和地址总线的低数据总线和地址总线的低1616位位/ /低低8 8位分时复用。位分时复用。 这两个概念在以后升级的这两个概念在以后升级的IntelIntel系列微处理器中一直被系列微处理器中一直被沿用和发展。正是这两个概念的引入,使沿用和发展。正是这两个概念的引入,使80

4、86/80888086/8088比原来比原来的的8 8位位MPUMPU在运行速度、处理能力和对存储空间的访问等性能在运行速度、处理能力和对存储空间的访问等性能方面有很大提高。方面有很大提高。记赢庸卫犹制岗馒洒翔仟村仙蘑戮恬孺闺仔总扔陛埠伎迭颖码荡及舅顽抑二章微处理器和指令系统二章微处理器和指令系统32.1.1 Intel 8086/80882.1.1 Intel 8086/80888086/8088 MPU8086/8088 MPU由两个独立的处理单元构成:由两个独立的处理单元构成:总线接口单元总线接口单元BIUBIU和执行单元和执行单元EUEU。总线总线控制电路控制电路2020位位ABAB通

5、用寄存器通用寄存器累加器累加器基址寄存器基址寄存器计数寄存器计数寄存器数据寄存器数据寄存器堆栈指针堆栈指针基址指针基址指针目的变址目的变址源变址源变址指针寄存器指针寄存器变址寄存器变址寄存器地址加法器地址加法器运算暂存器运算暂存器ALUALU标志寄存器标志寄存器 EUEU控制电路控制电路指令指针指令指针内部暂存器内部暂存器指令队列指令队列总线接口单元总线接口单元(BIU)(BIU)执行单元执行单元(EU)(EU)外部总线外部总线8086/80888086/8088DBDB8088:88088:8位位8086:168086:16位位CSCSDSDSSSSSESESIPIP1 2 3 4 5 61

6、 2 3 4 5 68 8位位8088808880868086AX AH ALAX AH ALBX BH BLBX BH BLCX CH CLCX CH CLDX DH DL DX DH DL SPSPBPBPDIDISISIALU DBALU DB1616位位为贤苦乍袁郸蔡室床酉酪理洽妙吩镇侍尹灭账鳖嚎狮叼念秸夷捣它夷帆用二章微处理器和指令系统二章微处理器和指令系统42.1.1 Intel 8086/80882.1.1 Intel 8086/8088 当当EUEU从指令队列中取出指令时,从指令队列中取出指令时,BIUBIU便从内存中取出后续便从内存中取出后续的代码放入队列中;当的代码放入队列

7、中;当EUEU需要数据时,需要数据时,BIUBIU根据根据EUEU输出的地输出的地址,从指定的内存单元或外设中取出数据供址,从指定的内存单元或外设中取出数据供EUEU使用;当运使用;当运算结束时,算结束时,BIUBIU将运算结果送给指定的内存单元或外设。将运算结果送给指定的内存单元或外设。 EU EU控制电路从指令队列取出指令代码,经译码发出相控制电路从指令队列取出指令代码,经译码发出相应的控制信号;数据在应的控制信号;数据在ALUALU中进行运算;运算结果的特征中进行运算;运算结果的特征保留在标志寄存器保留在标志寄存器(FLAGS)(FLAGS)中。中。 EU-EU-负责分析和执行指令负责分

8、析和执行指令BIU-BIU-负责执行所有的负责执行所有的“外部总线外部总线”操作操作指令队列的存在使指令队列的存在使EUEU和和BIUBIU并行工作并行工作 取指令和分析、执行指令操作可重叠进行,形成了两级指取指令和分析、执行指令操作可重叠进行,形成了两级指令流水线结构,减少了令流水线结构,减少了CPUCPU等待时间,提高了等待时间,提高了CPUCPU的利用率,的利用率,加快了整机运行速度,降低了对存储器存取速度的要求。加快了整机运行速度,降低了对存储器存取速度的要求。泛抠氢惫股沦酣堆逸铰该盎架盒子瑚蒸的擞红熄际栽棕新恼弦讹韩机烙会二章微处理器和指令系统二章微处理器和指令系统52.1.1 In

9、tel 8086/80882.1.1 Intel 8086/8088 4 4个段寄存器为个段寄存器为8086/80888086/8088采用存储器分段管理采用存储器分段管理提供了主要硬件支持。提供了主要硬件支持。 通过分段管理,把通过分段管理,把1MB1MB可寻址的物理存储空间可寻址的物理存储空间分成若干个逻辑段,每段大小为分成若干个逻辑段,每段大小为64KB64KB。 段的起始单元地址叫段基址,存放在段寄存器段的起始单元地址叫段基址,存放在段寄存器中。中。 通过通过4 4个段寄存器,个段寄存器,CPUCPU每次可同时对每次可同时对4 4个段进个段进行寻址。且分段方式不唯一,各段之间可以连续、

10、行寻址。且分段方式不唯一,各段之间可以连续、分离、部分重叠或完全重叠,具体取决于对各个段分离、部分重叠或完全重叠,具体取决于对各个段寄存器的预置内容。寄存器的预置内容。队誓贞芽垦乾仓捐兽僳测登探醋杭糠熊号淤胜牟逗榨香鸵艰肄赏栏瘦使博二章微处理器和指令系统二章微处理器和指令系统62.1.1 Intel 8086/80882.1.1 Intel 8086/8088采用分段管理,存储器地址有物理地址和逻辑地址之分。采用分段管理,存储器地址有物理地址和逻辑地址之分。 物理地址是物理地址是1MB1MB存储空间中的某一单元地址,用存储空间中的某一单元地址,用2020位地址码表示,位地址码表示,CPUCPU

11、访问存储器时,地址总线上送访问存储器时,地址总线上送出的就是物理地址。出的就是物理地址。 逻辑地址在编程时采用,由段基址和偏移地址逻辑地址在编程时采用,由段基址和偏移地址组成,两者均为组成,两者均为1616位。位。 由由1616位逻辑地址变换为位逻辑地址变换为2020位物理位物理地址的关系如下:地址的关系如下: 物理地址物理地址= =段基址段基址16+16+偏移地址偏移地址物理地址生成示意图物理地址生成示意图段基址段基址 偏移地址偏移地址地址地址加法器加法器逻辑地址逻辑地址15 0 15 0 15 0 15 0 左移四位左移四位段基址段基址 0000 00002020位物理地址位物理地址19

12、019 0盗既积姚综打篷锣那彦棕刊半宗眨竟川第吐黎史铣畦赵淆倒亮承职佬岸代二章微处理器和指令系统二章微处理器和指令系统72.1.2 Intel 802862.1.2 Intel 80286 (1) (1)内部有内部有4 4个独立的可并行操作单元:执行单元个独立的可并行操作单元:执行单元(EU)(EU)、总线单元、总线单元(BU)(BU)、指令单元、指令单元(IU)(IU)和地址单元和地址单元(AU)(AU),可实现可实现4 4级流水线作业;级流水线作业; (2) (2)地址总线和数据总线完全分开;地址总线和数据总线完全分开; (3) (3)存储空间有实地址和保护虚拟地址两种工作方式。存储空间有

13、实地址和保护虚拟地址两种工作方式。两者的实地址空间分别为两者的实地址空间分别为1MB1MB和和16MB16MB; (4) (4)在保护方式下,在保护方式下,4 4个段寄存器装入的不再是段基个段寄存器装入的不再是段基址,而是指向段描述符表中某个段描述符的索引值,称址,而是指向段描述符表中某个段描述符的索引值,称为段选择符。为段选择符。 8028680286是增强型标准是增强型标准1616位微处理器。与位微处理器。与8086/80888086/8088相比,相比,它结构上的改进和性能上的提高主要体现在它结构上的改进和性能上的提高主要体现在4 4方面:方面: 总之,总之,8028680286主要是增

14、加了多用户、多任务系统所必需主要是增加了多用户、多任务系统所必需的任务转换、虚拟存储器管理和多种保护功能,不仅提高的任务转换、虚拟存储器管理和多种保护功能,不仅提高了运算速度,而且可支持多用户、多任务操作。但其优越了运算速度,而且可支持多用户、多任务操作。但其优越性必须在多任务操作系统的支持下才能充分发挥。性必须在多任务操作系统的支持下才能充分发挥。伙嗡恬瞻爪茬巡欠焉饮元验踪收睁稳搭凿跋续柄好毫书票手堪膊褒漏概供二章微处理器和指令系统二章微处理器和指令系统82.1.3 Intel 80386/804862.1.3 Intel 80386/80486 1. 1.内部寄存器数量明显增加,并可进行内

15、部寄存器数量明显增加,并可进行6464位的数据运算,具有位的数据运算,具有全全3232位数据处理能力。位数据处理能力。 2. 2.片内存储管理部件可实现段页式存储管理,比片内存储管理部件可实现段页式存储管理,比8028680286可提供更可提供更大的虚拟存储空间和物理存储空间。大的虚拟存储空间和物理存储空间。 3. 3.比比8028680286新增了一种保护模式下的工作方式新增了一种保护模式下的工作方式, ,即虚拟即虚拟80868086方式。方式。 4.80486 4.80486的指令流水线增加到了的指令流水线增加到了6 6级。级。 5. 5.提供了提供了3232位外部总线接口,最大数据传输速

16、率显著提高。位外部总线接口,最大数据传输速率显著提高。 6. 6.运算速度大大加快。运算速度大大加快。 80386/80486 80386/80486是针对多用户和多任务的应用而推是针对多用户和多任务的应用而推出的出的3232位微处理器。与位微处理器。与8028680286相比,相比,80386/8048680386/80486在在结构和性能上的主要特点如下:结构和性能上的主要特点如下:嫁散惑孤洒赠淹密拄足撼丙五挞卞洼瘫槽梯冕战痔公居蔑稻课勋冗涸兜襟二章微处理器和指令系统二章微处理器和指令系统92.1.4 Pentium2.1.4 Pentium微处理器微处理器(8058680586) 1.

17、1.采用超标量体系结构,内含两条指令流水线。采用超标量体系结构,内含两条指令流水线。 2. 2.内置的浮点运算部件采用超流水线技术。内置的浮点运算部件采用超流水线技术。 3. 3.增加了分支指令预测。增加了分支指令预测。 4. 4.内置了指令和数据两个独立的超高速缓存器,避免了预取指令和内置了指令和数据两个独立的超高速缓存器,避免了预取指令和数据可能发生的冲突。数据可能发生的冲突。 5. 5.采用采用6464位外部数据总线。位外部数据总线。 6. 6.引入了大型机中采用的内部错误检测、功能冗余检验和错误报告引入了大型机中采用的内部错误检测、功能冗余检验和错误报告等自诊断功能。等自诊断功能。 7

18、. 7.进行了更多的可测性设计。进行了更多的可测性设计。 8. 8.提供了独特的性能监察功能,以利于软、硬件产品的优化和升级。提供了独特的性能监察功能,以利于软、硬件产品的优化和升级。 9. 9.提供了灵活的存储器页面管理。提供了灵活的存储器页面管理。PentiumPentium是一种高性能的是一种高性能的6464位微处理器。其对位微处理器。其对8048680486作了下列重大改进:作了下列重大改进:坊罐莉钥拷喧棺瓦勘牟惹憾晋哎盔匿专胡逾帝造冤鼠樱肇服汰洪炳妓因仗二章微处理器和指令系统二章微处理器和指令系统102.2 Intel 804862.2 Intel 80486微处理器体系结构微处理器

19、体系结构q 8048680486的体系结构特点的体系结构特点q 80486 80486的内部结构与内部寄存器的内部结构与内部寄存器q 80486 80486的三种工作方式及转换的三种工作方式及转换q 80486 80486的外部引脚信号的外部引脚信号溪篆奸相滨红茂铺猖挫我梆邢阵苦桅姨甲枣贪邢侦彝惑琉框苇谈抄筋氧幻二章微处理器和指令系统二章微处理器和指令系统112.2.1 804862.2.1 80486的体系结构特点的体系结构特点 1.1.采用单倍的时钟频率,即采用单倍的时钟频率,即CPUCPU的的CLKCLK端输入的外部时钟频端输入的外部时钟频 率就是其内部的工作时钟频率。率就是其内部的工作

20、时钟频率。 2. 2.内部包含有内部包含有8K8K字节的指令字节的指令/ /数据合用型高速缓存。数据合用型高速缓存。 3. 3.内部包含了相当于增强型内部包含了相当于增强型8038780387功能的浮点协处理器功能的浮点协处理器(FPU)(FPU)。 4. 4.对使用频率较高的基本指令,改为硬件逻辑直接控制,并在指对使用频率较高的基本指令,改为硬件逻辑直接控制,并在指 令执行单元采用了令执行单元采用了RISCRISC技术和流水线技术。技术和流水线技术。 5. 5.采用突发式总线传输方式。采用突发式总线传输方式。 6. 6.内部数据总线宽度有内部数据总线宽度有3232位、位、6464位和位和12

21、8128位多种,分别用于不同位多种,分别用于不同 单元之间的数据通路。单元之间的数据通路。 7. 7.对某些内部寄存器中部分位的内容进行了变动和增加。对某些内部寄存器中部分位的内容进行了变动和增加。 8. 8.面向多处理器结构,增加了总线监视功能和支持多机操作的指面向多处理器结构,增加了总线监视功能和支持多机操作的指令。令。8048680486的特点主要表现在:的特点主要表现在:档栅妖评基赘谴至甫猎减诲围瞄吏仅缸宿鸥碧护琼凳鼠洱汝络捕源婚秒张二章微处理器和指令系统二章微处理器和指令系统122.2.2 804862.2.2 80486的内部结构与内部寄存器的内部结构与内部寄存器内内部部结结构构构

22、构成成总线接口单元总线接口单元指令预取单元指令预取单元指令译码单元指令译码单元指令执行单元指令执行单元段管理单元段管理单元页管理单元页管理单元高速缓存单元高速缓存单元浮点运算单元浮点运算单元8038680386所具有所具有8048680486新增新增权病趴宣包汗嘉蔷磊热挥了氖涂止窒闯乏哭金份挝渺陨赛倔沸川少茅俏卒二章微处理器和指令系统二章微处理器和指令系统131.1.内部结构内部结构总线接口单元总线接口单元 主要用于管理访问外主要用于管理访问外部存储器和部存储器和I/OI/O端口必须的端口必须的地址、数据和控制总线,完地址、数据和控制总线,完成预取指令、读成预取指令、读/ /写数据等写数据等总

23、线操作。总线操作。指令预取单元指令预取单元 指令预取单元平均可指令预取单元平均可预取预取1010条指令。内含一个条指令。内含一个3232字节的指令预取队列,字节的指令预取队列,当指令预取队列不满且总当指令预取队列不满且总线空闲时,指令预取单元线空闲时,指令预取单元通过总线接口单元从存储通过总线接口单元从存储器读取指令放到队列中。器读取指令放到队列中。指令译码单元指令译码单元 从指令预取队列中读取指令,从指令预取队列中读取指令,进行预译码后将其送入已译码的指进行预译码后将其送入已译码的指令队列等待执行。如果预译码时发令队列等待执行。如果预译码时发现是转移调用指令,可提前通知总现是转移调用指令,可

24、提前通知总线接口部件去新的目标地址取指令,线接口部件去新的目标地址取指令,以刷新指令预取队列。以刷新指令预取队列。指令执行单元指令执行单元 包括算术逻辑单元包括算术逻辑单元ALUALU、8 8个个3232位的通用寄位的通用寄存器、桶形移位寄存器和控制单元等。作用是存器、桶形移位寄存器和控制单元等。作用是完成各种算术完成各种算术/ /逻辑运算和变址地址生成。控制逻辑运算和变址地址生成。控制单元中大多数指令采用微程序控制结构执行,单元中大多数指令采用微程序控制结构执行,常用基本指令采用硬件逻辑控制执行。常用基本指令采用硬件逻辑控制执行。段管理单元段管理单元用于进行存储器分段管理,用于进行存储器分段

25、管理,将逻辑地址变换为将逻辑地址变换为3232位线性位线性地址。地址。页管理单元页管理单元 用于进行存储器用于进行存储器分页管理,将线性分页管理,将线性地址变换为地址变换为3232位物位物理地址。理地址。高速缓存单元高速缓存单元 用于加速指令用于加速指令/ /数据的访问过程。数据的访问过程。浮点运算单元浮点运算单元 相当于一个增强型浮点协相当于一个增强型浮点协处理器处理器8038780387,专门作浮点运算,专门作浮点运算,可与可与ALUALU的整数运算并行进行。的整数运算并行进行。校窥烃酵芝召颗须眠采降壮霓淆嘻刑优哗帅尺绒球纶倡炭区途敦辈搂噶塔二章微处理器和指令系统二章微处理器和指令系统14

26、q基本寄存器基本寄存器q系统级寄存器系统级寄存器q调试和测试寄存器调试和测试寄存器q浮点寄存器浮点寄存器2.2.2 804862.2.2 80486的内部结构与内部寄存器的内部结构与内部寄存器2.2.内部寄存器内部寄存器 8048680486的内部寄存器除的内部寄存器除FPUFPU部分外,与部分外,与8038680386完全相同,按功能可分为完全相同,按功能可分为4 4类:类:伴惮挥早鸿馆晰帚啪烃萤假倡狸豆横伞娩孰胆壁热和坚呻坪巍吟掠北串洽二章微处理器和指令系统二章微处理器和指令系统152.2.2 804862.2.2 80486的内部结构与内部寄存器的内部结构与内部寄存器1)1)基本寄存器基

27、本寄存器EAX EAX AH AH AX AX ALALEBX EBX BH BH BX BX BLBLECX ECX CHCH CX CX CLCLEDX EDX DHDH DX DX DLDLEDI DIEDI DIESI SIESI SIEBP BPEBP BPESP SPESP SP通通用用寄寄存存器器31 15 7 031 15 7 0标志寄存器标志寄存器指令指针寄存器指令指针寄存器EFLAGSEFLAGSFLAGSFLAGSEIPEIPIPIP31 15 031 15 031 15 031 15 0选择器选择器描述符高速缓存器描述符高速缓存器段段寄寄存存器器CSCSSSSSDSDS

28、ESESFSFSGSGS15 0 63 015 0 63 0脑族酶插奋栈敏节绣得她攒墩韩晰嘱百凿掠概皖钞仓林溉九椎佳陕洒佐侄二章微处理器和指令系统二章微处理器和指令系统16通用寄存器通用寄存器为了与为了与8086/80888086/8088兼容,它们的低兼容,它们的低1616位位 可以单独访问,并以同可以单独访问,并以同8086/80888086/8088中相中相 同的名称命名:同的名称命名:AXAX、BXBX、CXCX、DXDX、SISI、 DI DI、BPBP、SPSP。2.2.2 804862.2.2 80486的内部结构与内部寄存器的内部结构与内部寄存器8 8个个3232位通用寄存器位

29、通用寄存器: : EAX EAX、EBXEBX、ECXECX、EDXEDX、 ESI ESI、EDIEDI、EBPEBP、ESPESP其中其中AXAX、BXBX、CXCX、DX DX 还可进一步分成还可进一步分成 两个两个8 8位寄存器单独访问。位寄存器单独访问。胜后棕岛喷审娱谱瘁粤亲躁黄倡栈快因拢徽亲邯曳仁锐悉芯臂嫂滴亲牛礁二章微处理器和指令系统二章微处理器和指令系统17指令指针寄存器(指令指针寄存器(EIPEIP) EIPEIP用于保存下一条待预取指令相对于用于保存下一条待预取指令相对于代码段基址的偏移量。代码段基址的偏移量。 2.2.2 804862.2.2 80486的内部结构与内部寄

30、存器的内部结构与内部寄存器 80486 80486工作在工作在3232位操作方式时,采用位操作方式时,采用3232位的位的EIPEIP;工作在;工作在1616位操作方式时,采用位操作方式时,采用1616位位的的IPIP。它的低它的低1616位也可单独访问,称之为位也可单独访问,称之为IPIP。撅挨荚徽晨参瓦佛隙紧漏味改禹症狈钨娱雷品胃广虐咎艰暇趟瞎碴绪释铅二章微处理器和指令系统二章微处理器和指令系统182.2.2 804862.2.2 80486的内部结构与内部寄存器的内部结构与内部寄存器标志寄存器(标志寄存器(EFLAGSEFLAGS)3232位的位的EFLAGSEFLAGS包含三种标志:包

31、含三种标志: 状态标志状态标志(S)(S)-报告算术报告算术/ /逻辑运算指逻辑运算指令执行后的状态令执行后的状态; ; 控制标志控制标志(C)(C)-仅含一个标志仅含一个标志DF,DF,用于用于控制串操作指令的地址改变方向控制串操作指令的地址改变方向; ; 系统标志系统标志(X)(X)-用于控制用于控制I/OI/O、屏蔽中、屏蔽中断、调试、任务转换和控制保护方式与虚断、调试、任务转换和控制保护方式与虚拟拟80868086方式间的转换。方式间的转换。伙态锨莱施档咬衰笆拇稿沤雄誊诬腔拾冷练唆劫哨贾俐抽缘峙言蝗集剃沥二章微处理器和指令系统二章微处理器和指令系统192.2.2 804862.2.2

32、80486的内部结构与内部寄存器的内部结构与内部寄存器EFLAGSEFLAGSC CF FFLAGSFLAGS31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 031 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 A AC CV VM MR RF F0 0 N

33、 NT TIOPLIOPLO OF FD DF FI IF FT TF FS SF FZ ZF F0 0A AF FO OP P F F0 0X X对准检查标志对准检查标志X X虚拟虚拟8686模式标志模式标志X X恢复标志恢复标志X X嵌套标志嵌套标志X X特权级标志特权级标志S S溢出标志溢出标志C C方向标志方向标志X X中断允许标志中断允许标志X X自陷标志自陷标志S S符号标志符号标志S S零标志零标志S S辅助进位标志辅助进位标志S S奇偶标志奇偶标志S S进位标志进位标志注注:S:S表示状态标志表示状态标志,X,X表示系统标志表示系统标志,C,C表示控制标志表示控制标志标标志志寄

34、寄存存器器鸟柒牲乳乌役厨追镐毗堂己襟愧沼吩焚刺般江董铝牡旅隶政股辑偶鹃咆训二章微处理器和指令系统二章微处理器和指令系统202.2.2 804862.2.2 80486的内部结构与内部寄存器的内部结构与内部寄存器段寄存器段寄存器8048680486有有6 6个段寄存器:个段寄存器:CS-CS-指明当前的代码段指明当前的代码段SS-SS-指明当前的堆栈段指明当前的堆栈段DSDSESESFS FS GSGS决定程序使用决定程序使用存储器区域块存储器区域块指明当前的指明当前的4 4个数据段个数据段8048680486段的定义与段的定义与80868086有所不同:有所不同: 保护方式下,段的长度可以在保

35、护方式下,段的长度可以在1 1字节到字节到4G4G字节之间变化;字节之间变化; 实地址方式下,段的长度固定为实地址方式下,段的长度固定为64KB64KB。辆料杏寡厩沿渣酮捆囚瘸肩稽凿阶侵挤源消鹏星蕊清刚乒轿柞确扳葛扔冯二章微处理器和指令系统二章微处理器和指令系统212.2.2 804862.2.2 80486的内部结构与内部寄存器的内部结构与内部寄存器选择器选择器描述符高速缓存器描述符高速缓存器CSCSSSSSDSDSESESFSFSGSGS15 0 63 015 0 63 0段寄存器的结构段寄存器的结构 段选择器是编程者可直接访问的,而描述符高速段选择器是编程者可直接访问的,而描述符高速缓存

36、器则是编程者不能访问的。缓存器则是编程者不能访问的。 段寄存器由段寄存器由1616位的段选择器和位的段选择器和6464位的描述符高位的描述符高速缓存器组成。速缓存器组成。固獭翠慈破朽色汪凄核倔椭光毕龋潞重叁莹剥副纠耐狰琳囊掣让铜锨授性二章微处理器和指令系统二章微处理器和指令系统222.2.2 804862.2.2 80486的内部结构与内部寄存器的内部结构与内部寄存器关于对段寄存器的说明:关于对段寄存器的说明:1.1.实地址方式和虚拟实地址方式和虚拟80868086方式下,段选择器就是段方式下,段选择器就是段寄存器寄存器, ,它保存的是逻辑段基址的高它保存的是逻辑段基址的高1616位,将它的位

37、,将它的内容左移内容左移4 4位即可得到实际段基址,而不必使用描位即可得到实际段基址,而不必使用描述符高速缓存器。述符高速缓存器。2.2.在保护虚地址方式下,为了描述每个段的基址、在保护虚地址方式下,为了描述每个段的基址、属性和边界,为每个段定义了一个描述符。操作属性和边界,为每个段定义了一个描述符。操作系统使用的各任务公用的段描述符放在一起构成系统使用的各任务公用的段描述符放在一起构成全局描述符表全局描述符表GDTGDT;某个任务专用的段描述符放在;某个任务专用的段描述符放在一起构成局部描述符表一起构成局部描述符表LDTLDT。泻秽灿继拟吵铺对温锭躬坡揉俯豌缓革熬劣蘑蒸旨胰试胚掣精棋锁材椒添

38、二章微处理器和指令系统二章微处理器和指令系统23段描述符格式为:段描述符格式为:段基地址段基地址15150 0位位段边界段边界15150 0位位段基段基地址地址31312424位位段边界段边界19191616位位属性属性属属 性性段基地段基地址址23231616位位2.2.2 804862.2.2 80486的内部结构与内部寄存器的内部结构与内部寄存器李足嘛吹耶盗椿拇稗屁龋荧杭妊铆蒜钒婴流斥乞蓝状热榴距僳放则掳缸弯二章微处理器和指令系统二章微处理器和指令系统24 为了说明一个段的描述符在哪个表中,表的序号为了说明一个段的描述符在哪个表中,表的序号是多少以及特权的高低,为每个段定义了一个是多少以

39、及特权的高低,为每个段定义了一个1616位的位的选择符,存于段选择器中,其格式为:选择符,存于段选择器中,其格式为:2.2.2 804862.2.2 80486的内部结构与内部寄存器的内部结构与内部寄存器描述符索引描述符索引段描述符段描述符i iLDTGDT01INDEXTIRPLb15b3b2b1b0表指示符表指示符描述符描述符i i(08911)段描述符段描述符0 0描述符描述符0 000 00 特权级特权级0 001 01 特权级特权级1 110 10 特权级特权级2 211 11 特权级特权级3 3请求特权级请求特权级沼苔苗姿撕钩呐茶潍宝镊枫指鸿钾假眷奎昔菱疲异吧蚜并收歧雹尽撤枚定二章

40、微处理器和指令系统二章微处理器和指令系统25 将一个选择符装入一个段选择器时,处理器将将一个选择符装入一个段选择器时,处理器将自动从自动从GDTGDT或或LDTLDT中找到其对应的描述符装入相应中找到其对应的描述符装入相应描述符高速缓存器中。描述符高速缓存器中。2.2.2 804862.2.2 80486的内部结构与内部寄存器的内部结构与内部寄存器描述符描述符6464基址基址物理存储器物理存储器LDTDSDS数据段数据段0040H界限界限15 3 2描述符高速缓存器描述符高速缓存器DSDS选择符选择符63 063 0属性属性装入装入DSDS段描述符段描述符TI=1指示LDT1313位索引指向位

41、索引指向LDTLDT的第的第6464个段描述符个段描述符131 0以后,每当访问存储器时,与所用段相关的段描述符高速缓以后,每当访问存储器时,与所用段相关的段描述符高速缓冲器就自动参与该次存储器访问操作。转换关系:冲器就自动参与该次存储器访问操作。转换关系: 线性地址线性地址 = = 段描述符高速缓存器中段基址段描述符高速缓存器中段基址 + + 偏移地址偏移地址 周秀癌最柿梦材擞丽嘶砧臂蚊如铣咐议雅拳烬半佣赫拯颊炎鹏党却哲酶惩二章微处理器和指令系统二章微处理器和指令系统262)2)系统级寄存器系统级寄存器2.2.2 804862.2.2 80486的内部结构与内部寄存器的内部结构与内部寄存器

42、包括包括4 4个控制寄存器和个控制寄存器和4 4个系统地址寄存器。个系统地址寄存器。 只能由特权级只能由特权级0 0的程序访问。的程序访问。 数字运算错数字运算错页目录基址寄存器页目录基址寄存器保留保留P PC CD DP PE ET T页页FaultFault线性地址线性地址保保 留留31 30 29 18 17 16 12 4 3 2 1 031 30 29 18 17 16 12 4 3 2 1 0页管理页管理 使能使能CacheCache不使能不使能不通写不通写对准标志对准标志写保护写保护保护保护允许允许监视监视FPUFPU仿真仿真FPUFPU任务转换任务转换FPUFPU类型类型CR3

43、CR3CR2CR2CR1CR1CR0CR0PGPGCDCDNWNW保留保留 AMAMWPWP保留保留NENEETET TSTSEMEMMPMP PEPE控制寄存器:控制寄存器:律尔刻惟岂逆舌郸顺耻息霸窒醋馒谬滇卧陛胞彻达此胃颓垄锚帐磊遵讲绍二章微处理器和指令系统二章微处理器和指令系统272.2.2 804862.2.2 80486的内部结构与内部寄存器的内部结构与内部寄存器 系统地址寄存器系统地址寄存器(只在保护方式下使用,(只在保护方式下使用,所以又叫保护方式寄存器)所以又叫保护方式寄存器):3232位基地址位基地址1616位界限位界限GDTRGDTRIDTRIDTR1616位选择符位选择符

44、3232位基地址位基地址1616位界限位界限 1616位其他属性位其他属性LDTRLDTRTRTR 其中其中GDTRGDTR和和LDTRLDTR分别用来存放分别用来存放GDTGDT和和LDTLDT的的3232位线性基地位线性基地址等内容;址等内容;IDTRIDTR用来存放中断描述符表的基址和界限;用来存放中断描述符表的基址和界限;TRTR用用来存放任务状态段来存放任务状态段(TSS)(TSS)的基址、界限和其他属性。的基址、界限和其他属性。坑腮载哎翻叛圆裂万窑滤盲涂瞪诗撒韧轮翼江可蚜粕欧锻锻劫拂敝坟伦喀二章微处理器和指令系统二章微处理器和指令系统282.2.2 804862.2.2 80486

45、的内部结构与内部寄存器的内部结构与内部寄存器3)3)调试和测试寄存器调试和测试寄存器8 8个个3232位可编程调试寄存器位可编程调试寄存器;5;5个个3232位测试寄存器。位测试寄存器。31 0 31 0 线性断点地址线性断点地址0 0线性断点地址线性断点地址1 1线性断点地址线性断点地址2 2线性断点地址线性断点地址3 3IntelIntel公司留用公司留用IntelIntel公司留用公司留用断点状态断点状态断点控制断点控制(a)(a)调试寄存器调试寄存器DR0DR0DR1DR1DR2DR2DR3DR3DR4DR4DR5DR5DR6DR6DR7DR7超高速缓存测试控制超高速缓存测试控制超高速

46、缓存测试数据超高速缓存测试数据超高速缓存测试状态超高速缓存测试状态TLBTLB测试控制测试控制TLBTLB测试状态测试状态31 031 0(b)(b)测试寄存器测试寄存器TR3TR3TR4TR4TR5TR5TR6TR6TR7TR7能由腕树配桑犬驴萧罕窄脾灰呕如薯标样奴慕泄遮织剪大凶降磁搀党侥浑二章微处理器和指令系统二章微处理器和指令系统292.2.2 804862.2.2 80486的内部结构与内部寄存器的内部结构与内部寄存器4)4)浮点寄存器浮点寄存器8048680486的的FPUFPU中含有中含有1313个浮点寄存器:个浮点寄存器:q8 8个个8080位浮点数据寄存器位浮点数据寄存器R0R

47、0R7-R7-用作固定寄用作固定寄 存器组或硬件堆栈;存器组或硬件堆栈;q1 1个个1616位标志字寄存器位标志字寄存器-用来标记每个数据寄存用来标记每个数据寄存 器的内容;器的内容;q1 1个个1616位控制寄存器位控制寄存器-用于提供用于提供FPUFPU的若干处理选的若干处理选 择项;择项;q1 1个个1616位状态寄存器位状态寄存器-用于反映用于反映FPUFPU的总状态;的总状态;q2 2个个4848位的指令、数据指针寄存器位的指令、数据指针寄存器-可为用户编可为用户编 写错误处理程序提供指令、数据指针。写错误处理程序提供指令、数据指针。差钻家线窥踞符伯篙风诈庙适舆准稚织骗段谱钞访沂藩旋

48、邹冈邀奖遏涩栓二章微处理器和指令系统二章微处理器和指令系统302.2.3 804862.2.3 80486的三种工作方式及转换的三种工作方式及转换.IRETD.IRETD指令指令. .任务转换任务转换 复位或修改复位或修改CR0CR0CPUCPU复位复位实地址实地址保护、虚拟地址保护、虚拟地址.LMSW.LMSW指令指令. .修改修改CR0CR0的的PEPE位位复位复位中断中断实地址实地址方式方式 保护保护虚地址方式虚地址方式 虚拟虚拟80868086方式方式实地址方式:工作原理与实地址方式:工作原理与80868086基本相同,主要区别基本相同,主要区别是借助操作数长度前缀能是借助操作数长度前

49、缀能处理处理3232位数据,运行速度位数据,运行速度也更高,且可使用也更高,且可使用4 4个数个数据段。据段。实地址实地址方式方式 保护保护虚地址方式虚地址方式保护虚地址方式:保护虚地址方式:CPUCPU可访问的物理存可访问的物理存储空间为储空间为2 23232=4GB=4GB;程序可用的虚拟;程序可用的虚拟 地址空间可达地址空间可达2 24646=64TB=64TB。段长度在启动。段长度在启动页功能时是页功能时是4GB4GB,不启动页功能时是,不启动页功能时是1MB1MB。可支持多用户和单用户的多任务操作,可支持多用户和单用户的多任务操作,并对各任务提供了多方面的保护机制。并对各任务提供了多

50、方面的保护机制。 虚拟虚拟80868086方式方式 虚拟虚拟80868086方式:既有保护功能又方式:既有保护功能又能执行能执行80868086代码的工作方式,是代码的工作方式,是保护方式的一种子方式。保护方式的一种子方式。CPUCPU的的工作原理与保护虚地址方式下相工作原理与保护虚地址方式下相同,但程序指定的逻辑地址解释同,但程序指定的逻辑地址解释与与80868086相同。相同。左踏盔租迟孰蝇值龟瑶胶骨钾淆监整芦盔贪挑胺荣鹰驳跟沈烩弯探晚怠燎二章微处理器和指令系统二章微处理器和指令系统312.2.4 804862.2.4 80486的外部引脚信号的外部引脚信号(80486 CPU(80486

51、 CPU总线总线) )D31D31D0D0ADSADS数据总线数据总线总线控制总线控制RDYRDY中断中断/ /复位信号复位信号INTRINTRRESETRESET高速缓存使无效高速缓存使无效AHOLDAHOLDNMINMIEADSEADS高速缓存控制高速缓存控制KENKENFLUSHFLUSH页面高速页面高速缓存控制缓存控制PWTPWTPCDPCD数值错报告数值错报告第第2020位地址屏蔽位地址屏蔽系统时钟系统时钟3232位地址总线位地址总线总线周期定义总线周期定义总线仲裁总线仲裁成组控制成组控制总线宽度控制总线宽度控制奇偶校验奇偶校验A31A31A2A2BE3BE3BE2BE2BE1BE1

52、BE0BE0PCHKPCHKDP0DP0DP1DP1DP2DP2DP3DP3BS16BS16BS8BS8BLASTBLASTBRDYBRDYBREQBREQBOFFBOFFHLDAHLDAHOLDHOLDPLOCKPLOCKLOCKLOCKW/RW/RD/CD/CM/IOM/IO8048680486微处理微处理器器FERRFERRIGNNEIGNNEA20MA20MCLKCLKM/IO D/C W/R启动的总线周期启动的总线周期L L L 中断响应周期中断响应周期L H L I/OI/O读周期读周期L H H I/OI/O写周期写周期H L L 微代码读周期微代码读周期H L H IntelI

53、ntel公司保留公司保留H H L 存储器读周期存储器读周期H H H 存储器写周期存储器写周期L L H停机停机/ /暂停暂停 总线周期定义总线周期定义梳疥廷抹锄专售母淖温抱髓具骨留牺谐沾碳麓林峡踢报衔徽恭举白括烯刹二章微处理器和指令系统二章微处理器和指令系统322.3 804862.3 80486的数据类型与寻址方式的数据类型与寻址方式q数据类型数据类型q寻址方式寻址方式q操作数宽度和地址宽度的确定操作数宽度和地址宽度的确定羹和丝哦凑蕴幻层券生谴午牙番优缆肇淬恐刻乍玲饿驾陪萝骡渠挂陕慈戒二章微处理器和指令系统二章微处理器和指令系统332.3.1 2.3.1 数据类型数据类型 8048680

54、486在其内部定点处理单元在其内部定点处理单元CPUCPU和浮点处和浮点处理单元理单元FPUFPU的支持下,共可处理的支持下,共可处理7 7类数据:类数据:1. 1. 无符号二进制数无符号二进制数2. 2. 带符号的二进制定点整数带符号的二进制定点整数3. 3. 浮点数浮点数4. BCD4. BCD码数码数5. 5. 串数据串数据6. ASCII6. ASCII码数据块码数据块7. 7. 指针数据类指针数据类嫡裴沽讥伟耙围趋罢潜躁佣艾民眨窖湾咆寇坎可医甩拱斟菊邪下式双姨存二章微处理器和指令系统二章微处理器和指令系统342.3.1 2.3.1 数据类型数据类型1.1.无符号二进制数无符号二进制数

55、( (序数序数) )这类数有这类数有3 3种种, ,受受CPUCPU支持支持: :q字节字节: :任何逻辑地址上的任何逻辑地址上的8 8位相邻位串。位相邻位串。q字字: :任何字节地址开始的任何字节地址开始的2 2个相邻字节。低字节个相邻字节。低字节 地址为该字地址。地址为该字地址。q双字双字: :任何字节地址开始的任何字节地址开始的2 2个相邻字个相邻字, ,即即4 4个个 相邻字节。最小字节地址为双字的地址。相邻字节。最小字节地址为双字的地址。行孝宁拍肚舷载迄泳猿赎苏詹鸳栈鉴辑帽旱声伏咳窘俩捂乖坯菠蟹晨惩留二章微处理器和指令系统二章微处理器和指令系统352.2.带符号的二进制定点整数带符号

56、的二进制定点整数( (整数整数) )2.3.1 2.3.1 数据类型数据类型 这类数均以补码表示这类数均以补码表示, ,有有8 8位数位数( (字节字节) )、1616位数位数( (字字) )、3232位数位数( (双字双字) )、6464位数位数(4(4字字) )四种。四种。CPUCPU支持前支持前3 3种,种,FPUFPU支持后支持后3 3种。种。瞅逢茨宿数扳亢份皖即遍科彩劲稻忆叛叫崔茁沧诱悦捎彩歉抖丫码剔班牧二章微处理器和指令系统二章微处理器和指令系统362.3.1 2.3.1 数据类型数据类型3.3.浮点数浮点数( (实数实数) ) 这类数由这类数由FPUFPU支持支持, ,有单精度、

57、双精度和扩有单精度、双精度和扩展精度三种形式:展精度三种形式:单精度数单精度数31 30 23 22 031 30 23 22 0符号位符号位阶阶 码码有有 效效 数数1.1.双精度数双精度数符号位符号位阶阶 码码有有 效效 数数1.1.63 62 52 51 063 62 52 51 0扩展精度数扩展精度数符号位符号位阶阶 码码1.1.有有 效效 数数79 78 64 63 079 78 64 63 0醇扼蔗农样低语免巷肘挖瓶剩笨湛九灿邻搁敲韵来趁淋迹野添刃皖各蚀笛二章微处理器和指令系统二章微处理器和指令系统372.3.1 2.3.1 数据类型数据类型关于浮点数格式的两点说明:关于浮点数格式

58、的两点说明: (1)(1)3 3种浮点数的有效数字段都做了规格化处理,种浮点数的有效数字段都做了规格化处理,其整数位总是其整数位总是1 1。但需注意,只有扩展精度格式的整数。但需注意,只有扩展精度格式的整数位位1 1真的存在,其余两种格式下整数位真的存在,其余两种格式下整数位1 1是隐含的,并是隐含的,并不真的被存放起来。不真的被存放起来。 (2) (2)格式中的阶码是以偏置形式存放的格式中的阶码是以偏置形式存放的( (即其阶码要即其阶码要加上一个常数偏置值才是格式阶码加上一个常数偏置值才是格式阶码) ),且,且偏置后的格式偏置后的格式阶码恒为正数阶码恒为正数。这样有利于简化浮点数大小的比较过

59、。这样有利于简化浮点数大小的比较过程:对两个相同格式的实数进行比较时,就像对两个程:对两个相同格式的实数进行比较时,就像对两个无符号二进制整数进行比较一样方便,当从高位到低无符号二进制整数进行比较一样方便,当从高位到低位比较两个实数阶码时,若某位的阶码有大小之分,位比较两个实数阶码时,若某位的阶码有大小之分,就不用再比较下去了。就不用再比较下去了。畦懒荔茫官戏嘎菇瞧蚌麓朔曾优凄蹄紧煽吱谷蓬斋蹦寄泅脊贩泵潮镣专轮二章微处理器和指令系统二章微处理器和指令系统382.3.1 2.3.1 数据类型数据类型 由于三种浮点数格式的阶码位数不同,其数值范由于三种浮点数格式的阶码位数不同,其数值范围也不同。为

60、了保证统一偏置后的阶码恒为正数,其围也不同。为了保证统一偏置后的阶码恒为正数,其偏置值必然也为不同正值。偏置值必然也为不同正值。最大阶码值最大阶码值 +127 +1023 +16383 +127 +1023 +16383参参 数数格格 式式单精度单精度双精度双精度扩展精度扩展精度格式总宽度(位)格式总宽度(位) 32 64 80 32 64 80符号位位数符号位位数 1 1 1 1 1 1有效数位数有效数位数( (精度位数精度位数) 23+1() 23+1(隐)隐) 52+1( 52+1(隐)隐) 64 64阶码宽度(位)阶码宽度(位) 8 11 15 8 11 15最小阶码值最小阶码值 -1

61、26 -1022 -16382 -126 -1022 -16382阶码偏置值阶码偏置值 +127 +1023 +16383 +127 +1023 +16383 在作了上述偏置处理后,进行浮点数运算时,一个数的在作了上述偏置处理后,进行浮点数运算时,一个数的真阶码需要将其格式阶码减去偏置值来获得。真阶码需要将其格式阶码减去偏置值来获得。莹泳眺窖顿据恢赣刃修舅弄押闺社撂韭跟谬枢旗池忧承拄蚁豁干烹檬收仪二章微处理器和指令系统二章微处理器和指令系统394.BCD4.BCD码数码数 BCDBCD码数有压缩码数有压缩BCDBCD码数和非压缩码数和非压缩BCDBCD码码数两种。数两种。 CPU CPU两种数

62、都支持;两种数都支持;FPUFPU只支持压缩只支持压缩BCDBCD码数,且最大长度为码数,且最大长度为8080位,最多可处理位,最多可处理2020位位BCDBCD码数。码数。2.3.1 2.3.1 数据类型数据类型鄂击礁曹循吃均股锋谚御对惦棱亩阿锗傈当躲训砂锑操匹壶瞳亩湾显衙篡二章微处理器和指令系统二章微处理器和指令系统402.3.1 2.3.1 数据类型数据类型5.5.串数据串数据 包括位串、字节串、字串和双字串,仅包括位串、字节串、字串和双字串,仅CPUCPU支持。支持。 位串是从任何字节的任何位开始的相邻位位串是从任何字节的任何位开始的相邻位的序列,最长可达的序列,最长可达2 23232

63、-1-1位位。 字节字节/ /字字/ /双字串是字节双字串是字节/ /字字/ /双字的相邻序双字的相邻序列,最长可达列,最长可达2 23232-1-1字节字节。胆柔殴虎乾锗弧淹挽堤支伙恫蛊口姨常陛材辰头举凤斟越肖罐师祥睦磅塞二章微处理器和指令系统二章微处理器和指令系统412.3.1 2.3.1 数据类型数据类型6.ASCII6.ASCII码数据类码数据类包括包括ASCIIASCII码字符串和码字符串和ASCIIASCII码数码数(0(0F)F)两种。两种。7.7.指针数据类指针数据类包括近指针和远指针两种包括近指针和远指针两种: : 近指针即近指针即3232位指针位指针, ,是一个是一个323

64、2位的段内偏位的段内偏移量移量, ,段内寻址用。段内寻址用。 远指针即远指针即4848位指针,由位指针,由1616位选择符和位选择符和3232位位偏移量组成,用于跨段访问。偏移量组成,用于跨段访问。和呛植缆惋替提世貉茅项故军鸭益获扰姐哼武蕴记征将床承坑妒弓誉将摸二章微处理器和指令系统二章微处理器和指令系统42关于数据类型的两点说明:关于数据类型的两点说明:2.3.1 2.3.1 数据类型数据类型(1)(1)字和双字数据操作的对准和不对准字和双字数据操作的对准和不对准 一般应尽可能将字操作对准于偶地址,将双字操作对准于一般应尽可能将字操作对准于偶地址,将双字操作对准于4 4的的 整数倍地址。但也

65、允许不对准。整数倍地址。但也允许不对准。 对准和不对准获得的数据传递速度不一样:对准的字和双字可对准和不对准获得的数据传递速度不一样:对准的字和双字可 一次传递完,而未对准时需几次才能传递完。一次传递完,而未对准时需几次才能传递完。(2) (2) 采用低端低地址方式存储字和双字数据采用低端低地址方式存储字和双字数据 字数据被存储在两个相邻的字节单元之中,低字节在低地址单字数据被存储在两个相邻的字节单元之中,低字节在低地址单 元,高字节在高地址单元;元,高字节在高地址单元; 双字数据存储在四个连续字节单元中,最低字节在最低地址单双字数据存储在四个连续字节单元中,最低字节在最低地址单 元,最高字节

66、在最高地址单元。元,最高字节在最高地址单元。 字或双字数据的地址是指最低字节所在的单元地址。字或双字数据的地址是指最低字节所在的单元地址。乞纯靳匙侮房念奶慑哆书篓铬卢乡侩志咬息尾葱哇攫杖缮沮疹疥坤词名小二章微处理器和指令系统二章微处理器和指令系统432.3.2 2.3.2 寻址方式寻址方式 1.1.寻址方式和有效地址概念寻址方式和有效地址概念 寻址方式:寻找指令中操作数地址的方式。寻址方式:寻找指令中操作数地址的方式。 直接包含在指令中直接包含在指令中,即指令的操作数部分就是操作,即指令的操作数部分就是操作数本身。这种操作数叫立即数数本身。这种操作数叫立即数, ,对应的指令寻址方式称对应的指令

67、寻址方式称为为立即数寻址。立即数寻址。包含在包含在CPUCPU的某个内部寄存器中的某个内部寄存器中。这时指令中的操作数。这时指令中的操作数部分是部分是CPUCPU的一个寄存器,这种指令寻址方式称为的一个寄存器,这种指令寻址方式称为寄存器寄存器寻址。寻址。在存储器中在存储器中。这时指令的操作数部分包含着该操作数。这时指令的操作数部分包含着该操作数所在的存所在的存储器储器地址。这种指令寻址方式称为地址。这种指令寻址方式称为存储器寻址存储器寻址。操作数所在地址有三种可能:操作数所在地址有三种可能:琅境质授铸漂帮棠证美胯循拽疏钥摊随耕面虏午墅翰巫煎律绿溶诺隔霄塑二章微处理器和指令系统二章微处理器和指令

68、系统442.3.2 2.3.2 寻址方式寻址方式 在在80868086系列系列MPUMPU中,内存实际地址中,内存实际地址(PA)(PA)由段基地由段基地址和段内偏移地址两部分组成。址和段内偏移地址两部分组成。EA=EA=基址基址+(+(变址变址比例因子比例因子)+)+位移量位移量其中段内偏移地址又叫有效地址(其中段内偏移地址又叫有效地址(EAEA)。)。v 基址寄存器内容基址寄存器内容v 变址寄存器内容变址寄存器内容v 比例因子比例因子v 位移量位移量有效地址四元素:有效地址四元素:磺禄辱佣墙戚大异绩脸液硕底拦胖莉雹蓑屯终逊爷喳倪厩沏滦稀潭担杰挞二章微处理器和指令系统二章微处理器和指令系统4

69、5有效地址元素有效地址元素1616位寻址位寻址3232位寻址位寻址基址寄存器基址寄存器 BX,BP BX,BP 任何任何3232位通用寄存器位通用寄存器变址寄存器变址寄存器 SI,DI SI,DI 除除ESPESP外的任何外的任何3232位通用寄存器位通用寄存器比例因子比例因子 无(或无(或1 1) 1 1,2 2,4 4,8 8位移量位移量 0 0,8 8,1616位位 0 0,8 8,3232位位1616位和位和3232位寻址时的四元素定义位寻址时的四元素定义2.3.2 2.3.2 寻址方式寻址方式遭仟贰拆大沮酪桨茬垣走涝灌敌靳覆棚捍救铝藉秦当遣狱重拓按沪已艺谋二章微处理器和指令系统二章微

70、处理器和指令系统46物理物理地址地址物理物理存储器存储器寻址过程寻址过程( (地址转换过程地址转换过程) )有效地址计算有效地址计算变址变址位移位移基址基址比例因子比例因子+ +3232位位有效地址有效地址分段分段部件部件BE3BE3BE0BE031 031 0A31A31A2A23232位位分页分页部件部件( (可选可选) )3232位位线性线性地址地址1313位位描述符索引描述符索引段寄存器段寄存器CS,DS,ES,SS,CS,DS,ES,SS,FS,GSFS,GS( () )选择符选择符 TITI RPLRPL15 3 2 1 015 3 2 1 0逻辑逻辑( (虚拟虚拟) )地址地址2

71、.3.2 2.3.2 寻址方式寻址方式时匙含休徽喂稠捆锄嚷舟蛮啸越弃藐溉喳场躁犊槐戌次伸瘤寨袱汰蔚赶沉二章微处理器和指令系统二章微处理器和指令系统472.3.2 2.3.2 寻址方式寻址方式2. 112. 11种寻址方式种寻址方式 偏移地址四元素可优化组合出偏移地址四元素可优化组合出9 9种存储器寻址方种存储器寻址方式式, ,加上立即数寻址和寄存器寻址加上立即数寻址和寄存器寻址,80486,80486共有共有1111种寻种寻址方式址方式: :(1) (1) 立即数寻址立即数寻址 (2) (2) 寄存器寻址寄存器寻址(3) (3) 直接寻址直接寻址 (4) (4) 寄存器间接寻址寄存器间接寻址(

72、5) (5) 基址寻址基址寻址 (6) (6) 变址寻址变址寻址(7) (7) 比例变址寻址比例变址寻址 (8) (8) 基址加变址寻址基址加变址寻址 (9) (9) 基址加比例变址寻址基址加比例变址寻址 (10) (10) 带位移的基址加变址寻址带位移的基址加变址寻址 (11) (11) 带位移的基址加比例变址寻址带位移的基址加比例变址寻址昌编铀吱憋份胶揣丈疏淖学阁国光凄国达躺浅蚜耀终淌扳宏芽型迭拢涪牙二章微处理器和指令系统二章微处理器和指令系统48(1)(1)立即数寻址立即数寻址2.3.2 2.3.2 寻址方式寻址方式 在这种寻址方式下在这种寻址方式下, ,操作数作为立即数直接存在指操作数

73、作为立即数直接存在指令中令中, ,可为可为8 8位、位、1616位或位或3232位。位。例:例:MOV AXMOV AX,4567H4567HMOV BLMOV BL,78H78HMOV ECXMOV ECX,12345678H12345678H 以第以第3 3条指令为例,条指令为例,动画演示动画演示立即数寻址过程。立即数寻址过程。注意注意: (1 1)源和目的操作数字长应一致;)源和目的操作数字长应一致; (2 2)立即数只能作为源操作数。)立即数只能作为源操作数。貉滥痘狙烟毡体催峨赵狸痒弟随子组囊阉读绘借漳哭稳译仪布晕宋挂勤呕二章微处理器和指令系统二章微处理器和指令系统492.3.2 2.

74、3.2 寻址方式寻址方式(2)(2)寄存器寻址寄存器寻址( (寄存器直接寻址寄存器直接寻址) ) 在这种方式下在这种方式下, ,操作数包含在指令规定的操作数包含在指令规定的8 8位、位、1616位或位或3232位寄存器中。位寄存器中。例:例:MOV EAXMOV EAX,EDXEDXINC CLINC CLMOV DSMOV DS,AXAX 这种寻址方式指令编码短,无需从存储器取操作这种寻址方式指令编码短,无需从存储器取操作数,故执行速度快。数,故执行速度快。注意:注意: (1)字节寄存器只有)字节寄存器只有8个;个; (2)源和目的操作数的字长应一致;)源和目的操作数的字长应一致; (3)C

75、S不能用不能用MOV改变。改变。芦什舆捻某高姨耐雍硬套偷让梧磋靛皋约子懦互芋掣傻骤删土求臼茄语嚏二章微处理器和指令系统二章微处理器和指令系统502.3.2 2.3.2 寻址方式寻址方式(3)(3)直接寻址直接寻址( (存储器直接寻址存储器直接寻址) ) 在这种方式下,指令中的操作数部分直接给出操在这种方式下,指令中的操作数部分直接给出操作数有效地址作数有效地址EAEA,它和操作码一起放在存储器代码段,它和操作码一起放在存储器代码段中,可以是中,可以是1616位或位或3232位整数。但操作数一般在数据段位整数。但操作数一般在数据段DSDS中。中。例:例: MOV AX MOV AX,DS:300

76、0HDS:3000H设设DS=5000HDS=5000H,执行过程见,执行过程见动画演示动画演示参脸哦媒歪赞蓑德驮汤达最玻哉注际疆匈猩舒涣匹柳废坏狭的傻弥笛鉴煎二章微处理器和指令系统二章微处理器和指令系统512.3.2 2.3.2 寻址方式寻址方式 实际中对于直接寻址实际中对于直接寻址, ,如操作数在如操作数在DSDS段中段中, ,则可直接写成则可直接写成: :MOV AX,3000HMOV AX,3000H 如操作数在如操作数在DSDS之外的其他段之外的其他段(CS,SS,ES,FS,GS)(CS,SS,ES,FS,GS)中中, ,指令中则必须用段寄存器名前缀指令中则必须用段寄存器名前缀(

77、(称为称为段超越前段超越前缀缀) )予以指明。例如:予以指明。例如:MOV AX,FS:3000HMOV AX,FS:3000H 直接寻址主要用于单个操作数的相对寻址场合直接寻址主要用于单个操作数的相对寻址场合( (如简单的标量操作数寻址和静态分配数组的起始如简单的标量操作数寻址和静态分配数组的起始地址寻址等地址寻址等) )。刻接灿平欲查胡廉焉宏果践馁捶化谅别庶寝羚饰掳捡钟谍蓑室们杜彼谰颁二章微处理器和指令系统二章微处理器和指令系统522.3.2 2.3.2 寻址方式寻址方式(4)(4)寄存器间接寻址寄存器间接寻址 在这种方式下在这种方式下, ,操作数在存储器中操作数在存储器中, ,但但存储器

78、有效地址存储器有效地址EAEA放在寄存器中放在寄存器中, ,即即 EA=EA=寄存器寄存器 。 寄存器的使用规定在寄存器的使用规定在1616位寻址和位寻址和3232位寻位寻址时不一样。址时不一样。陪颓惶挪孜寸漠绒韶淳抡诵竟写叁搅苗邵丛哼列盈犁浴文酗糕裹胺并闪掐二章微处理器和指令系统二章微处理器和指令系统532.3.2 2.3.2 寻址方式寻址方式1616位寻址时,偏移地址放在位寻址时,偏移地址放在SISI、DIDI、BPBP或或BXBX中。中。 这时又有两种段默认情况:这时又有两种段默认情况:q若以若以SISI、DIDI、BXBX间接寻址间接寻址, ,则默认操作数在则默认操作数在DSDS段中。

79、段中。 例如:例如: MOV AX,SI ;MOV AX,SI ;默认默认DSDS为段基址为段基址q若以若以BPBP间接寻址间接寻址, ,则默认操作数在则默认操作数在SSSS段中。段中。 例如:例如: MOV AX,BP ;MOV AX,BP ;默认默认SSSS为段基址为段基址 如果操作数不在上述规定的默认段,而是在其他段,则如果操作数不在上述规定的默认段,而是在其他段,则必须在指令中相应的操作数前加上段超越前缀。例如:必须在指令中相应的操作数前加上段超越前缀。例如:MOV AX,ES:SIMOV AX,ES:SIMOV AX,DS:BPMOV AX,DS:BP因账柄与曰做习折潞论荆半拯橱亲狼

80、敦懂拜舶京椭梳蒲窒饼睬绸噎脓欲缚二章微处理器和指令系统二章微处理器和指令系统542.3.2 2.3.2 寻址方式寻址方式3232为寻址时为寻址时,8,8个个3232位通用寄存器均可用作寄存位通用寄存器均可用作寄存 器间接寻址。器间接寻址。 除除ESPESP、EBPEBP默认段寄存器为默认段寄存器为SSSS外,其余外,其余6 6个通用个通用寄存器均默认段寄存器为寄存器均默认段寄存器为DSDS。如操作数在默认段之。如操作数在默认段之外,指令中必须加段超越前缀。外,指令中必须加段超越前缀。 寄存器间接寻址的应用场合与直接寻址的应用场寄存器间接寻址的应用场合与直接寻址的应用场合相似,但更灵活。合相似,

81、但更灵活。MOV EBX,EAX ;MOV EBX,EAX ;默认默认DSDS为段基址为段基址, ,传送双字给传送双字给EBXEBXMOV DX,EBX ;MOV DX,EBX ;默认默认DSDS为段基址为段基址, ,传送字给传送字给DXDXMOV CH,EAX ;MOV CH,EAX ;默认默认DSDS为段基址为段基址, ,传送字节给传送字节给CHCH例如:例如:烽虹摹弄剿狱擞迟巾粮废店倪润梅癌蒸踪茂拈雁蔫泻晃邓曙越嗅晌吼窟醛二章微处理器和指令系统二章微处理器和指令系统552.3.2 2.3.2 寻址方式寻址方式(5)(5)基址寻址基址寻址 在这种方式下在这种方式下, ,EA=EA=基址寄存

82、器基址寄存器+位移量位移量。其中位。其中位移量一定要为常数移量一定要为常数, ,且跟随在操作码之后且跟随在操作码之后, ,与操作码一与操作码一起存放在代码段中。起存放在代码段中。1616位寻址情况下位寻址情况下,BX,BX和和BPBP作为基址寄存器。作为基址寄存器。在缺省在缺省段超越前缀时段超越前缀时,BX,BX以以DSDS作为默认段寄存器作为默认段寄存器,BP,BP以以SSSS作为作为默认段寄存器。位移量可为默认段寄存器。位移量可为8 8位或位或1616位;位;3232位寻址情况下,位寻址情况下,8 8个个3232位通用寄存器均可作基址位通用寄存器均可作基址寄存器寄存器,其中,其中ESPES

83、P、EBPEBP以以SSSS为默认段寄存器,其余为默认段寄存器,其余6 6个通用寄存器均以个通用寄存器均以DSDS为默认段寄存器。位移量为为默认段寄存器。位移量为8 8位位或或3232位。位。例如:例如:MOV EAX,BX+24 ;MOV EAX,BX+24 ;也可写成也可写成MOV EAX,24BXMOV EAX,24BXMOV ECX,EBP+50 ;MOV ECX,EBP+50 ;也可写成也可写成MOV ECX,50EBPMOV ECX,50EBPMOV DX,EAX+1500;MOV DX,EAX+1500;也可写成也可写成MOV DX,1500EAXMOV DX,1500EAX易胁

84、诅阮讣夯皇捶勒知湃剧木或待磺忧泰幽谋拥伍鹅迫凹士蔼鲜功酸溺潭二章微处理器和指令系统二章微处理器和指令系统562.3.2 2.3.2 寻址方式寻址方式(6)(6)变址寻址变址寻址 在这种方式下在这种方式下, ,EA=EA=变址寄存器变址寄存器+位移位移量量。指令书写格式和寻址执行过程与基址。指令书写格式和寻址执行过程与基址寻址相同寻址相同, ,区别仅在于将基址寄存器改成区别仅在于将基址寄存器改成变址寄存器。变址寄存器。陵彪仆闯歼牢茁侄粳亭票奋臣座赃颈橙饯瓜者酵欧泳斯模潞宰母桥坦铆惠二章微处理器和指令系统二章微处理器和指令系统572.3.2 2.3.2 寻址方式寻址方式1616位寻址时,仅位寻址时

85、,仅SISI、DIDI可作变址寄存器可作变址寄存器,且默,且默认认DSDS作为段基址寄存器。如:作为段基址寄存器。如:MOV AX,COUNTSIMOV AX,COUNTSI3232位寻址时位寻址时, ,除除ESPESP外的任何通用寄存器均可作外的任何通用寄存器均可作变址寄存器变址寄存器, ,且默认且默认EBPEBP以以SSSS作段基址寄存器作段基址寄存器, ,其余其余均以均以DSDS作段基址寄存器。作段基址寄存器。 如如: :MOV EAX,5EBPMOV EAX,5EBPMOV ECX,DATAEAXMOV ECX,DATAEAX 基址、变址寻址适于对一维数组的数组元素进行基址、变址寻址适

86、于对一维数组的数组元素进行检索操作。位移量表示数组起始地址偏移量;基址检索操作。位移量表示数组起始地址偏移量;基址/ /变址表示数组元素的下标,可变。变址表示数组元素的下标,可变。帮矿亭劲标妇首倾万翌见狸裙翼田尸挠尉泪她蛰欢游陷蔓蛰贼预邻何队即二章微处理器和指令系统二章微处理器和指令系统582.3.2 2.3.2 寻址方式寻址方式(7)(7)比例变址寻址比例变址寻址在这种方式下:在这种方式下:EA=EA=变址寄存器变址寄存器比例因子比例因子+ +位移量位移量这种寻址方式只适于这种寻址方式只适于3232位寻址一种情况。例如:位寻址一种情况。例如:MOV EAX,TABLEESI*4MOV EAX

87、,TABLEESI*4 ;TABLE;TABLE是位移量是位移量,4,4是比例因子是比例因子 比例变址寻址和基址比例变址寻址和基址/ /变址寻址的作用相似变址寻址的作用相似, ,也适用也适用于对一维数组元素的检索。但当数组元素大小为于对一维数组元素的检索。但当数组元素大小为2/4/82/4/8字字节时,用它更方便、更高效。节时,用它更方便、更高效。比例变址寻址方式的执行过程如比例变址寻址方式的执行过程如动画演示动画演示。桓恐缠最法霜声丸清麦藩阂缨榴线烦肤蛰宅缸必筹尤绒生淑是脸醉它沫骋二章微处理器和指令系统二章微处理器和指令系统592.3.2 2.3.2 寻址方式寻址方式(8)(8)基址加变址寻

88、址基址加变址寻址在这种寻址方式下,在这种寻址方式下,EA=EA=基址寄存器基址寄存器+变址寄存器变址寄存器 例如:例如:MOV AX,BX+SI ;MOV AX,BX+SI ;或写成或写成MOV AX,BXSI MOV AX,BXSI 它有它有1616位寻址和位寻址和3232位寻址两种情况,每种情况下基址、位寻址两种情况,每种情况下基址、变址寄存器的使用规定和段寄存器的默认规定与前面所述变址寄存器的使用规定和段寄存器的默认规定与前面所述相同,但一种寻址方式中既有基址寄存器又有变址寄存器,相同,但一种寻址方式中既有基址寄存器又有变址寄存器,而两个寄存器默认的段寄存器又不相同时,而两个寄存器默认的

89、段寄存器又不相同时,一般规定由基一般规定由基址寄存器来决定默认哪一个段寄存器作段基址指针。址寄存器来决定默认哪一个段寄存器作段基址指针。例如:例如: MOV EAX,EBPECX MOV EAX,EBPECX ; ;由由EBPEBP决定默认决定默认SSSS为段基址寄存器为段基址寄存器基址加变址寻址主要用于二维数组元素的检索基址加变址寻址主要用于二维数组元素的检索和二重循环等。和二重循环等。酉澡蔼淹聂奄叭赏玛革笆砰伶失炼出脑帜鸟稍床归起分复匿愿乃汁脊凌被二章微处理器和指令系统二章微处理器和指令系统602.3.2 2.3.2 寻址方式寻址方式(9)(9)基址加比例变址寻址基址加比例变址寻址在这种方

90、式下在这种方式下, ,EA=EA=变址寄存器变址寄存器比例因子比例因子+基址寄存器基址寄存器 它只有它只有3232位寻址一种情况。位寻址一种情况。格式举例:格式举例:MOV ECX,EDX*8EAX ;MOV ECX,EDX*8EAX ;或或MOV ECX,EDX*8+EAXMOV ECX,EDX*8+EAXMOV AX,EBX*4ESI ;MOV AX,EBX*4ESI ;或或MOV AX,EBX*4+ESIMOV AX,EBX*4+ESI 这种方式主要用于数组元素大小为这种方式主要用于数组元素大小为2/4/82/4/8字节时字节时的二维数组检索操作等场合。的二维数组检索操作等场合。续程潞众

91、颠填搁肛屁曳搪赘毙聊拍陈碟周武代忽枪拟共斟堂造扑诊聋阎崇二章微处理器和指令系统二章微处理器和指令系统612.3.2 2.3.2 寻址方式寻址方式(10)(10)带位移的基址加变址寻址带位移的基址加变址寻址在这种方式下:在这种方式下:EA=EA=变址寄存器变址寄存器+基址寄存器基址寄存器+位移量位移量 这种方式也分这种方式也分1616位寻址和位寻址和3232位寻址两种情况。变址、位寻址两种情况。变址、基址寄存器的使用约定和对段寄存器的默认约定与前基址寄存器的使用约定和对段寄存器的默认约定与前面所述相同。面所述相同。 以第(以第(1 1)条指令为例,执行过程如)条指令为例,执行过程如动画演示动画演

92、示。 这种寻址方式也是主要用于二维数组操作,位移这种寻址方式也是主要用于二维数组操作,位移量即为数组起始地址。量即为数组起始地址。 (1 1) MOV AX,BX+DI+MASK MOV AX,BX+DI+MASK 或或MOVAX,MASKBXDIMOVAX,MASKBXDI (2 2) ADD EDX,ESIEBP+0FFFF000H ADD EDX,ESIEBP+0FFFF000H或或 ADD EDX,0FFFF000HESIEBP ADD EDX,0FFFF000HESIEBP格式举例:格式举例:泼使兄扬遵组五涂悍马舒铝啃索划脆佯睡饼韭域俊戌说倡藤垂愁钥医峪骑二章微处理器和指令系统二章微

93、处理器和指令系统622.3.2 2.3.2 寻址方式寻址方式(11)(11)带位移的基址加变址比例寻址带位移的基址加变址比例寻址这种方式将偏移地址四元素都用上了,即:这种方式将偏移地址四元素都用上了,即:EA=EA=变址寄存器变址寄存器比例因子比例因子+基址寄存器基址寄存器+位移量位移量它只有它只有3232位寻址一种情况。各种约定和默认情况同前所述。位寻址一种情况。各种约定和默认情况同前所述。格式举例:格式举例:INC EDI*8ECX+40 ;INC EDI*8ECX+40 ;或或INC EDI*8+ECX+40INC EDI*8+ECX+40 当二维数组的数组元素大小为当二维数组的数组元素

94、大小为2/4/82/4/8字节,且数组字节,且数组起始地址不为起始地址不为0 0时,适于用这种寻址方式进行数组检索时,适于用这种寻址方式进行数组检索操作。操作。辖左弊换萤侦舅跑型斜裂普悟广处铭荚秆舞费猩蹋胶猛戏们茨阑腿栋截俄二章微处理器和指令系统二章微处理器和指令系统632.3.2 2.3.2 寻址方式寻址方式3.3.存储器寻址时的段约定存储器寻址时的段约定访存操作类型访存操作类型 默认段寄存器默认段寄存器 允许超越的段寄存器允许超越的段寄存器 偏移地址寄存器偏移地址寄存器堆栈操作堆栈操作 SS SS 无无 (E)SP (E)SP取指令代码取指令代码 CS CS 无无 (E E)IPIP源串数

95、据访问源串数据访问 DS CS DS CS、SSSS、ESES、FSFS、GS (E)SIGS (E)SI目的串数据访问目的串数据访问 ES ES 无无 (E)DI (E)DI通用数据访问通用数据访问 DS CS DS CS、SSSS、ESES、FSFS、GS GS 偏移地址偏移地址以以(E)BP(E)BP、(E)SP(E)SP间接寻址的指令间接寻址的指令 SSSSCSCS、DSDS、ESES、FSFS、GSGS偏移地址偏移地址赛渺耿姚唤尽弦瓜块则迁养跌下龋返忽烂相龟可错捌么愤现式褂翟示剐凉二章微处理器和指令系统二章微处理器和指令系统642.3.2 2.3.2 寻址方式寻址方式4.4.应用举例

96、应用举例CPUCPUBXBX 0100H 0100HSISI 0002H 0002HDS DS 3000H3000H图图 2.1 2.130100H30100H 12H 12H30101H30101H 34H 34H30102H 30102H 56H 56H30103H30103H 78H 78H31200H31200H 2AH 2AH31201H31201H 4CH 4CH31202H31202H B7H B7H31203H 31203H 65H 65HM M 例例2.12.1 已知已知8048680486工作在实地址方式下,其中一些寄工作在实地址方式下,其中一些寄存器的内容和一些存储单元的

97、内容如图存器的内容和一些存储单元的内容如图2.12.1所示,试指所示,试指出下列各条指令执行后,出下列各条指令执行后,AXAX中的内容。中的内容。 MOV AX MOV AX,2010H2010H MOV AX MOV AX,BXBX MOV AX MOV AX,1200H1200H MOV AX MOV AX,BXBX MOV AX MOV AX,1100HBX1100HBX MOV AX MOV AX,BXSIBXSI MOV AX MOV AX,1100HBX+SI1100HBX+SI LEA AX LEA AX,SISI弹冉沤蘸沏函异敬垒婪拒宵奢掀枫拈倘倡辙粒芍帮叁诫彦革扬葱据属囊绸二

98、章微处理器和指令系统二章微处理器和指令系统652.3.2 2.3.2 寻址方式寻址方式 例例2.22.2 假定假定8048680486工作在实模式下,工作在实模式下,(DS)=1000H(DS)=1000H,(SS)=2000H(SS)=2000H,(SI)=007FH(SI)=007FH,(BX)=0040H(BX)=0040H,(BP)=0016H(BP)=0016H,变量变量TABLETABLE的偏移地址为的偏移地址为0100H0100H。请指出下列指令的源操。请指出下列指令的源操作数字段是什么寻址方式作数字段是什么寻址方式? ?它的有效地址它的有效地址(EA)(EA)和物理地和物理地址

99、址(PA)(PA)分别是多少分别是多少? ? MOV AX MOV AX,1234H1234H MOV AX MOV AX,TABLETABLE MOV AX MOV AX,BX+100H BX+100H MOV AX MOV AX,TABLEBPSITABLEBPSI赶潦谈婚钙褥生拒件铺倪阵钾图终莫卯涩契迟律缮菇胰互蒲众居浦船凝陷二章微处理器和指令系统二章微处理器和指令系统662.3.3 2.3.3 操作数宽度和地址宽度的确定操作数宽度和地址宽度的确定 操作数宽度和地址宽度与工作方式直接相关,还与指操作数宽度和地址宽度与工作方式直接相关,还与指令中是否加这两种宽度的超越前缀有关。令中是否加这

100、两种宽度的超越前缀有关。在实地址或虚拟在实地址或虚拟80868086方式下,操作数和地址的默认宽度都为方式下,操作数和地址的默认宽度都为1616位;位;q当指令中无宽度超越前缀时当指令中无宽度超越前缀时:在保护虚拟地址方式下,宽度则取决于可执行段的描述符中的在保护虚拟地址方式下,宽度则取决于可执行段的描述符中的D D位:位:D D位为位为0 0,表示默认宽度是,表示默认宽度是1616位位D D位为位为1 1,表示默认宽度是,表示默认宽度是3232位位q8048680486可使用宽度超越前缀来强行指定执行可使用宽度超越前缀来强行指定执行1616位或位或3232位操作位操作: 操作数宽度前缀使处理

101、器在默认的操作数宽度前缀使处理器在默认的1616位方式下寻址位方式下寻址3232位数据,位数据,或者在默认的或者在默认的3232位方式下寻址位方式下寻址1616位数据。位数据。 地址宽度前缀使处理器在默认的地址宽度前缀使处理器在默认的1616位方式下进行位方式下进行3232位寻址,或位寻址,或者在默认的者在默认的3232位方式下进行位方式下进行1616位寻址。位寻址。串汪打啼女卯证早林儿冠披鼠狗镑膨醉梭少忱枝庇歇仟甚疫拘靶顷付商僳二章微处理器和指令系统二章微处理器和指令系统672.3.3 2.3.3 操作数宽度和地址宽度的确定操作数宽度和地址宽度的确定注意:注意: (1) (1)在实地址方式下

102、,使用地址宽度前在实地址方式下,使用地址宽度前缀不能使偏移量超过缀不能使偏移量超过FFFFH,FFFFH,否则将会导致否则将会导致一个一般保护异常一个一般保护异常. . (2)80486/803862)80486/80386的操作数宽度除了的操作数宽度除了1616位位( (字字) )和和3232位位( (双字双字) )两种外,还有一种两种外,还有一种8 8位位( (字节字节) )宽度。首先由指令操作码中的宽度。首先由指令操作码中的W W域决定是域决定是8 8位字节操作数位字节操作数(W=0)(W=0)还是还是1616位字位字和和3232位双字操作数位双字操作数(W=1)(W=1);在;在W=1

103、W=1时,再由时,再由段描述符中的段描述符中的D D位值来确定是位值来确定是1616位操作模位操作模式还是式还是3232位操作模式。位操作模式。勤订饯答骂植洽抵画全搀奈巡或框绦厩沾障呜希芬棚载赊障邑沏赤巩畏沦二章微处理器和指令系统二章微处理器和指令系统682.4 804862.4 80486的汇编级指令系统的汇编级指令系统q8048680486指令系统概述指令系统概述q8048680486指令格式指令格式q8048680486的指令简介的指令简介q几类常用几类常用指令指令详解详解低胁铲呻竣迹塔闸烩稿沾书讯春黑颜曝喀板你爱达河癌痰咬版索啸斤新盆二章微处理器和指令系统二章微处理器和指令系统692.

104、4.1 804862.4.1 80486指令系统概述指令系统概述 8048680486的指令系统是在的指令系统是在80868086指令系统的基础上逐步发展指令系统的基础上逐步发展而来的,在代码级具有向上兼容性。它提供了而来的,在代码级具有向上兼容性。它提供了3232位寻址方位寻址方式和式和3232位操作方式,并且包含全部浮点运算指令。位操作方式,并且包含全部浮点运算指令。 8048680486指令的操作数指令的操作数可以是可以是0 03 3个,根据寻址方式不同,个,根据寻址方式不同,可直接包含在指令中,也可存于寄存器或存储器中。可直接包含在指令中,也可存于寄存器或存储器中。 每条每条指令的长度

105、指令的长度因指令而异,最短因指令而异,最短1 1字节,最长字节,最长1616字节,字节,平均平均3.23.2字节。字节。 指令的指令的操作数宽度操作数宽度可以是可以是8 8位、位、1616位、位、3232位,寻址宽度位,寻址宽度可以是可以是1616位或位或3232位。位。疯陋囚霸费屉稠慕涪扭丸蓬晕裹苦舆嚷恃谗蔑缚有濒小扭伸邢吧篙番嗓断二章微处理器和指令系统二章微处理器和指令系统702.4.2 804862.4.2 80486指令格式指令格式 8048680486和其他和其他80X8680X86系列系列CPUCPU一样,采用变字节的指令格式。一样,采用变字节的指令格式。指令由指令由1 11616

106、字节组成,一般格式如下字节组成,一般格式如下( (由由6 6个字段组成个字段组成) ):0,1,2,4字节字节前缀前缀PrefixPrefix0,1,2,4字节字节字段字段1 1字段字段2 2操作码操作码OP codeOP code字段字段3 3mod r/mmod r/m字段字段4 4s-i-bs-i-b字段字段5 5displdispl字段字段6 6datadata用于修改指令用于修改指令操作的某些属性操作的某些属性常用前缀有常用前缀有5 5类:类:段超越前缀段超越前缀操作数宽度前缀操作数宽度前缀地址宽度前缀地址宽度前缀重复前缀重复前缀总线锁定前缀总线锁定前缀规定指令规定指令的操作性质的操

107、作性质,包括操作数,包括操作数类型、操作数类型、操作数传送方向、寄传送方向、寄存器编码或存器编码或符号扩展等符号扩展等1字节字节1字节字节寄存器寄存器/ /存储器寻址存储器寻址方式说明符字段方式说明符字段主寻址字节主寻址字节, ,规规定操作数的寻定操作数的寻址方式址方式, ,包括操作包括操作数的存放位置数的存放位置和存储器中操作和存储器中操作数数EAEA的计算方的计算方法等法等比例比例- -变址变址- -基址字节,为基址字节,为第二寻址字节第二寻址字节位移量字段位移量字段, ,属属存储器地址的存储器地址的一部分。位一部分。位移量足够小移量足够小时时, ,通常采用通常采用带符号的带符号的8 8位

108、位整数整数,CPU,CPU自动自动将它扩展将它扩展到到1616位或位或3232位位立即数字段立即数字段8 8位立即数与位立即数与16/3216/32位操作数位操作数一起使用时一起使用时,CPU,CPU自动将其扩展至自动将其扩展至符号相同的符号相同的16/3216/32位数。同理也可将位数。同理也可将1616位立即数扩展至位立即数扩展至3232位位14字节字节12字节字节 6 6个字段中,只有操作码字段是必要的,其他字段均可个字段中,只有操作码字段是必要的,其他字段均可有可无,具体取决于涉及的特定操作和操作的位置与类型。有可无,具体取决于涉及的特定操作和操作的位置与类型。丧锋洱辜陪讶遥校史谅波耀

109、蕉蝗湍凡镀引泰颜侠华守瞥寻虑褥琳法岿祟漂二章微处理器和指令系统二章微处理器和指令系统712.4.3 804862.4.3 80486的指令简介的指令简介8048680486指令系统指令系统整数指令整数指令-最常用部分最常用部分浮点数指令浮点数指令操作系统型指令操作系统型指令妮禾额贾矿其乡伶湿侵躁敲志羡琐尹苇牵僵保阳板逛问赊贺哈规掺酿扁游二章微处理器和指令系统二章微处理器和指令系统722.4.3 804862.4.3 80486的指令简介的指令简介其中整数指令按功能又可分为:其中整数指令按功能又可分为:1.1.数据传送指令数据传送指令2.2.算术运算指令算术运算指令3 3. .逻辑运算与移位指令

110、逻辑运算与移位指令4.4.串操作指令串操作指令5.5.位操作指令位操作指令6.6.控制转移指令控制转移指令7.7.标志操作指令标志操作指令8.8.按条件设置字节指令按条件设置字节指令9.9.处理器控制指令处理器控制指令10.10.高级语言指令高级语言指令椽鞋泻姬夫余瞬迎露芥樱岗儒屿来衅涧搓枢写黍陇胺礁汰谤分绩硬茅啃庶二章微处理器和指令系统二章微处理器和指令系统732.4.3 804862.4.3 80486的指令简介的指令简介1.1.数据传送指令数据传送指令 这是计算机中最基本、最常用、最重要的一类操作。这是计算机中最基本、最常用、最重要的一类操作。 在实际程序中,它的使用频率最高,用于实现存

111、储器在实际程序中,它的使用频率最高,用于实现存储器与寄存器、寄存器与寄存器、累加器与与寄存器、寄存器与寄存器、累加器与I/OI/O端口之间字节、端口之间字节、字或双字的传送,也可将立即数传送到存储器或寄存器。字或双字的传送,也可将立即数传送到存储器或寄存器。 这类指令寻址方式最丰富,除这类指令寻址方式最丰富,除POPFPOPF外,均不影响标志外,均不影响标志寄存器的标志位。寄存器的标志位。柏者度乐舱蹋橡捣帕祝珊烷羽炙浅篆耙梯为坏恒裴淮值位烩恬益冶慰满醉二章微处理器和指令系统二章微处理器和指令系统74数据传送指令主要包括:数据传送指令主要包括:q通用数据传送指令通用数据传送指令,如数值传送类指令

112、,如数值传送类指令(MOV)(MOV)、装入有、装入有效地址指令效地址指令(LEA)(LEA)、段装入指令、交换类指令、段装入指令、交换类指令(XCHG(XCHG和和BSWAP)BSWAP)、查表转换指令、查表转换指令(XLAT)(XLAT)等。等。q堆栈指令堆栈指令,如,如PUSHPUSH类类/POP/POP类指令等。类指令等。q数据类型变换指令数据类型变换指令,如数据宽度变换指令,带符号数,如数据宽度变换指令,带符号数符号位扩展符号位扩展/ /无符号数位扩展指令等。无符号数位扩展指令等。qI/OI/O指令指令,如,如ININ类类/OUT/OUT类指令等。类指令等。2.4.3 804862.

113、4.3 80486的指令简介的指令简介谱备滴滤查哮亭免隅私约廉庶县晋谓踢粹枫郴叙声厨邦帅零横趾刁钳舔传二章微处理器和指令系统二章微处理器和指令系统752.4.3 804862.4.3 80486的指令简介的指令简介2.2.算术运算指令算术运算指令 这类指令支持加、减、乘、除四种基本算术这类指令支持加、减、乘、除四种基本算术运算,其操作对象可以是字节、字、双字的无运算,其操作对象可以是字节、字、双字的无符号和有符号的二进制整数;也可以是无符号符号和有符号的二进制整数;也可以是无符号的压缩的压缩/ /非压缩非压缩BCDBCD码数;还支持符号扩展指令码数;还支持符号扩展指令和十进制调整指令。和十进制

114、调整指令。 它的操作结果一般会影响标志寄存器中的它的操作结果一般会影响标志寄存器中的状态标志位,如状态标志位,如ZFZF、CFCF、SFSF、OFOF、AFAF、PFPF等。等。拔抚噪牟是忙氏叉助怨摩堡甜萍戴蛆脱召贴泽聘彬扶禽旭风竹蛆涟晶沟叉二章微处理器和指令系统二章微处理器和指令系统762.4.3 804862.4.3 80486的指令简介的指令简介算术运算指令有:算术运算指令有:q双操作数指令,如加、减、比较等。双操作数指令,如加、减、比较等。q单操作数指令,如增单操作数指令,如增/ /减、整数变反、乘除法指令等。减、整数变反、乘除法指令等。q无操作数指令,如十进制运算调整和符号位扩展等。

115、无操作数指令,如十进制运算调整和符号位扩展等。q三操作数指令,如有符号整数乘法指令三操作数指令,如有符号整数乘法指令IMULIMUL等。等。言蒋铺挨堡撕鞍鸯瑚霉皖最轧墩丘闪芳陛鞘沉询眺犊曰颊芯挽啊铺怪妓鲁二章微处理器和指令系统二章微处理器和指令系统772.4.3 804862.4.3 80486的指令简介的指令简介3.3.逻辑运算与移位指令逻辑运算与移位指令 这类指令包括与、或、非、异或、测试这类指令包括与、或、非、异或、测试(TEST)(TEST)和左移、右移、循环左和左移、右移、循环左/ /右移指令。右移指令。 重点要弄清各种移位操作的功能,以及重点要弄清各种移位操作的功能,以及 与与 操

116、作和操作和TESTTEST操作的区别。操作的区别。这类指令除这类指令除NOTNOT外,都会影响某些标志位。外,都会影响某些标志位。柯冲荡疙循镭川特丑耿崩扰护倡秆迸搜澎钩但健纶壳游屋檬干顶吴联椽壤二章微处理器和指令系统二章微处理器和指令系统782.4.3 804862.4.3 80486的指令简介的指令简介4.4.串操作指令串操作指令 串操作是指对存储器中的一个或多个长度为字节、串操作是指对存储器中的一个或多个长度为字节、字或双字的字符串进行操作,包括串传送、串装入、字或双字的字符串进行操作,包括串传送、串装入、串存储、串比较、串扫描、串输入、串输出等。串存储、串比较、串扫描、串输入、串输出等。

117、 串操作指令都是约定以串操作指令都是约定以DS:(E)SIDS:(E)SI来寻址源串来寻址源串, ,以以ES:(E)DIES:(E)DI来寻址目的串来寻址目的串, ,故指令中不必显式指明操作数故指令中不必显式指明操作数。其中源串的段寄存器其中源串的段寄存器DSDS可通过加段超越前缀而改变,可通过加段超越前缀而改变,但目的串的段寄存器但目的串的段寄存器ESES不能超越。源、目的两个指针不能超越。源、目的两个指针(E)SI(E)SI和和(E)DI(E)DI在每次操作后都将根据方向标志在每次操作后都将根据方向标志DFDF的值的值自动增量自动增量(DF=0(DF=0时时) )或减量或减量(DF=1(D

118、F=1时时) ),以指向串中的下,以指向串中的下一项一项。增量。增量/ /减量的大小由操作串的长度决定:字节串减量的大小由操作串的长度决定:字节串只加只加/ /减减1 1,字串加,字串加/ /减减2 2,而双字串加,而双字串加/ /减减4 4。长迂捧紧铜耍隐棒第菊辟饭酵苍韦椎凯牧慕镇毁台萎疯嗽中违枷逸恭鸯粹二章微处理器和指令系统二章微处理器和指令系统792.4.3 804862.4.3 80486的指令简介的指令简介 通常在串操作指令前通常在串操作指令前加重复前缀加重复前缀来传送一组来传送一组串数据,但必须串数据,但必须用用(E)CX(E)CX来作重复次数计数器来作重复次数计数器,每传送一次,

119、每传送一次,(E)CX(E)CX值减值减1 1,直至减为,直至减为0 0。 除了串比较指令除了串比较指令(CMPS)(CMPS)和串扫描指令和串扫描指令(SCAS)(SCAS)外,外,其余串操作指令均不影响标志位。其余串操作指令均不影响标志位。邓孺眠筐宋喝营某患业诚寐癣抿豺跋芒战乃唬冬泄象如单显睁容趾酝缎享二章微处理器和指令系统二章微处理器和指令系统805.5.位操作指令位操作指令2.4.3 804862.4.3 80486的指令简介的指令简介为为80386/8048680386/80486所特有。包括以下两类:所特有。包括以下两类:v位测试指令位测试指令-对指定的位串数据的指定位进行测试对指

120、定的位串数据的指定位进行测试 操作后送入操作后送入CFCF,然后将该位按操作规,然后将该位按操作规 定变为新值定变为新值( (置置1,1,置置0 0或变反或变反) )。v位扫描指令位扫描指令-由左至右或由右至左检索字或双字中由左至右或由右至左检索字或双字中 的第一个的第一个“1”“1”位,记下其下标存至位,记下其下标存至给给 定的寄存器中。定的寄存器中。玛阵冻损邦阐实蛆梨汀惩胖澜焦澎肄舰晓斟蛆绝奴肄昼他采详烃鼓民胰即二章微处理器和指令系统二章微处理器和指令系统812.4.3 804862.4.3 80486的指令简介的指令简介6.6.控制转移指令控制转移指令包括以下包括以下5 5种指令:种指令

121、:v无条件转移指令无条件转移指令(JMP)(JMP)v过程调用过程调用/ /返回指令返回指令(CALL/RET)(CALL/RET)v条件转移指令条件转移指令(JCC) (JCC) v循环控制指令循环控制指令(LOOP)(LOOP)v中断指令中断指令(INT)(INT) 无条件向目标地址转无条件向目标地址转移移, ,可分为段内、段间转移,可分为段内、段间转移,段内、段间转移又可分别段内、段间转移又可分别分为直接和间接转移。分为直接和间接转移。无条件转移指令无条件转移指令(JMP)(JMP)实现子程序调用,也可实现子程序调用,也可归入无条件转移指令中。归入无条件转移指令中。过程调用过程调用/ /

122、返回指令返回指令(CALL/RET)(CALL/RET) 根据指令执行后标志寄根据指令执行后标志寄存器的状态进行转移,通常存器的状态进行转移,通常和和CMPCMP或或TESTTEST指令组合使用。指令组合使用。条件转移指令条件转移指令(JCC)(JCC) 控制循环程序的循环,控制循环程序的循环,实质上也是条件转移指实质上也是条件转移指令,在令,在CX(ECX)CX(ECX)中预置循中预置循环次数。环次数。循环控制指令循环控制指令(LOOP)(LOOP)产生一个由产生一个由8 8位立即数指定位立即数指定中断号的软中断和处理溢中断号的软中断和处理溢出中断。出中断。中断指令中断指令(INT)(INT

123、) 这类指令的共同特点是可改变程序的正常执行顺序,使这类指令的共同特点是可改变程序的正常执行顺序,使之转移。而改变程序的执行顺序之转移。而改变程序的执行顺序, ,本质上就是要改变本质上就是要改变CS:(E)IPCS:(E)IP的内容。这类指令对标志位无影响。的内容。这类指令对标志位无影响。制赊雷班惦莎丈嚏阶谱腿釉混握烘产煽堤熬将峙积墩彪叔募忆略末聚兴疗二章微处理器和指令系统二章微处理器和指令系统822.4.3 804862.4.3 80486的指令简介的指令简介7.7.标志操作指令标志操作指令 标志寄存器中的标志位一般是由算术标志寄存器中的标志位一般是由算术/ /逻辑运算的结逻辑运算的结果影响

124、的,但也可通过标志操作指令直接对它或它的某果影响的,但也可通过标志操作指令直接对它或它的某些位进行操作,通过改变其状态来控制程序的运行。些位进行操作,通过改变其状态来控制程序的运行。主要包括:主要包括:v标志寄存器读标志寄存器读/ /写指令写指令(LAHF/SAHF)(LAHF/SAHF)v标志寄存器入栈标志寄存器入栈/ /出栈指令出栈指令(PUSHF / POPF(PUSHF / POPF 和和PUSHFD / POPFD)PUSHFD / POPFD)v单个标志位操作指令单个标志位操作指令歪袍桓停顾陕吊垮吸砸戈出奄狰浙夹瞩和鄙那淄逼倡磊溯绎捧氟芹吾检秤二章微处理器和指令系统二章微处理器和指

125、令系统832.4.3 804862.4.3 80486的指令简介的指令简介8.8.按条件设置字节指令按条件设置字节指令SETSET 与条件转移指令相似,只是满足条件时,与条件转移指令相似,只是满足条件时,不是转移,而是将特定的字节不是转移,而是将特定的字节( (目的操作数目的操作数) )置置“1”“1”。置。置“1”“1”的条件则直接包含在指的条件则直接包含在指令助记符之中。令助记符之中。冬婪慎丝孪佩外墟防菇淹芝探忧暑床佬裹滩株沼睛舅阁肖狞崎酸堵睦奔瘦二章微处理器和指令系统二章微处理器和指令系统849.9.处理器控制指令处理器控制指令这类指令可分为以下四类:这类指令可分为以下四类:v标志操作指

126、令标志操作指令v操作系统型指令操作系统型指令-又分系统寄存器装入与存储又分系统寄存器装入与存储 指令和保护属性检查指令两类。通常只由系统指令和保护属性检查指令两类。通常只由系统 程序员使用,一般用户很少用到。程序员使用,一般用户很少用到。v空操作指令空操作指令-NOP. -NOP. 使使CPUCPU不作任何操作,仅影不作任何操作,仅影 响响(E)IP(E)IP寄存器,对标志位无影响。寄存器,对标志位无影响。v外同步类指令外同步类指令-实现实现CPUCPU与外部时间的同步,与外部时间的同步, 包括包括HTLHTL、ESCESC、WAITWAIT、LOCKLOCK。2.4.3 804862.4.3

127、 80486的指令简介的指令简介苛级吗炳舅揪出斯场芹棘绒姓新受娃义剩迭聋靶痊滥枪矢梗衰焦洼吏编藉二章微处理器和指令系统二章微处理器和指令系统8510.10.高级语言指令高级语言指令主要包括:主要包括:v数组边界检查指令数组边界检查指令BOUNDBOUNDv进入过程指令进入过程指令ENTERENTERv退出过程指令退出过程指令LEAVELEAVE 可为实现像可为实现像C C和和PASCALPASCAL这样的结构化语言提这样的结构化语言提供机器语言支持。供机器语言支持。2.4.3 804862.4.3 80486的指令简介的指令简介蹄聊罐传擒褥南故籽饲夸猪科恍朴湛遏棱盏阿淡力劣畏奎晕左烬蛙纂沮皮二

128、章微处理器和指令系统二章微处理器和指令系统862.4.4 2.4.4 几类常用指令详解几类常用指令详解o数据传送指令数据传送指令o算术运算指令算术运算指令o逻辑运算与移位指令逻辑运算与移位指令o串操作指令串操作指令o控制转移指令控制转移指令爷帆夕仍沁露会哥排柏除讯芯尘专索挥罕汕揩茫鹅稽备甩制千简见晃志判二章微处理器和指令系统二章微处理器和指令系统87重点关注:重点关注:o指令的汇编格式指令的汇编格式o指令的基本功能指令的基本功能o指令支持的寻址方式指令支持的寻址方式o指令的执行对标志位的影响指令的执行对标志位的影响o指令的特殊要求指令的特殊要求省戳座章褪针屈好荷拘鹏懦女笋节惜缠嚎宪阮碱羡夯统俩

129、络傣逢脉橡户杯二章微处理器和指令系统二章微处理器和指令系统88数据传送指令数据传送指令o数数据据传传送送是是计计算算机机中中最最基基本本、最最常常用用的一类操作。的一类操作。使用频率最使用频率最高高不影响标志位不影响标志位寻址方式最丰富寻址方式最丰富 特点:特点:槛效釜罗廖塞疆煌诺驭哀宛剃咐冶库闰驼率猛搔鉴晤耶慌谬苍筛符旧迎虾二章微处理器和指令系统二章微处理器和指令系统89o传送指令(传送指令(MOVMOV)o交换指令(交换指令(XCHGXCHG)oI/OI/O指令(指令(IN/OUTIN/OUT)o装入有效地址指令(装入有效地址指令(LEALEA)o装装入入段段寄寄存存器器指指令令(LDSL

130、DS、LESLES、LFSLFS、LGSLGS、LSSLSS)o查表转换指令(查表转换指令(XLATXLAT)o压压栈栈/ /弹弹栈栈指指令令 (PUSH/PUSHA/PUSHAD/POP/POPA/POPAD)(PUSH/PUSHA/PUSHAD/POP/POPA/POPAD))o扩展传送指令(扩展传送指令(MOVSX/MOVZXMOVSX/MOVZX)o字节交换指令(字节交换指令(BSWAPBSWAP)出剿冷癌蜕傈雾丑鸳餐饲骚肝啃拨切氦疡们驼九很掂妹蚁捻尘轻夯棍叫贬二章微处理器和指令系统二章微处理器和指令系统901. 1. 传送指令传送指令o指令操作:指令操作:( (源操作数源操作数)目的

131、操作数目的操作数 n指令格式:指令格式:MOV MOV 目的操作数,源操作数目的操作数,源操作数n寻址规定:寻址规定: REG/MEM/SREG REG/MEM/SREG,REGREG REG/MEM REG/MEM, SREG SREG REG/SREG REG/SREG, MEM MEM REG/MEM REG/MEM, IMM IMM8/16/32位通用寄位通用寄存器存器REGREG MEMMEM8/16/32位存储器位存储器SREGSREG段寄存器段寄存器IMMIMM8/16/32位立即数位立即数仰体锥佬较唇丁赵阿勺抨砾炉浅奉蛤局系骤寇楚秘富藕结岳铀郸描活蚀窖二章微处理器和指令系统二章

132、微处理器和指令系统912.4.3 804862.4.3 80486的指令简介的指令简介通用寄存器通用寄存器(EAXEAX、EBXEBX、ECXECX、EDXEDX、 EBP EBP、ESPESP、ESIESI、EDI)EDI)立立即即数数CSCS存存储储器器段寄存器段寄存器(SS(SS、DSDS、ESES、FSFS、GS)GS)MOVMOV指令允许的传送关系指令允许的传送关系滓甄昆船磅厂眩振猴腮椿嫉钙裔呆挡棉绣被演诛库追苯吧腑粟库逛牛啡艾二章微处理器和指令系统二章微处理器和指令系统92使用说明:使用说明:o源操作数和目的操作数的源操作数和目的操作数的类型必须一致类型必须一致。o目的操作数目的操

133、作数不能为立即数不能为立即数。oCSCS和和(E)IP(E)IP均不能用作指令的目的寄存器。均不能用作指令的目的寄存器。o段寄存器间不能直接传送,也不能直接将立即数送段寄存器间不能直接传送,也不能直接将立即数送给段寄存器。给段寄存器。o源操作数为立即数源操作数为立即数, ,而目的操作数类型不确定时而目的操作数类型不确定时, ,要要给目的操作数加类型说明。给目的操作数加类型说明。q源操作数和目的操作数源操作数和目的操作数不能同为存储器不能同为存储器操作数。操作数。悍肇镐品叁迷硷桶染严贼昨伶檀弥拄墅键均曹脆腆重娃鲍妨绢扰耿锻琢桅二章微处理器和指令系统二章微处理器和指令系统93 MOV DS MOV

134、 DS,100100 例例2.3 2.3 识别下列指令的正确性,对错误的指令,识别下列指令的正确性,对错误的指令,说明错误的原因。说明错误的原因。 MOV 1000H MOV 1000H,23H23H错。错。源、目的操作数不能同为存储器寻址。源、目的操作数不能同为存储器寻址。 MOV 1000H MOV 1000H,2000H2000H错。立即数不能直接赋给段寄存器。错。立即数不能直接赋给段寄存器。错。目的操作数长度不确定。错。目的操作数长度不确定。 MOV DATA MOV DATA,1133H1133H MOV CS MOV CS,AX AX 依赖于依赖于DATADATA的定义的定义错。不

135、能用传送指令改变代码段寄存器。错。不能用传送指令改变代码段寄存器。 MOV AX MOV AX,0100H+BX+BP0100H+BX+BP错。地址寄存器不能同为基址寄存器。错。地址寄存器不能同为基址寄存器。百伊蔫嗅旱慷帆震爪访聚酿进汤献社赞颐唐倒佳朝僚腑簿螟非似常自蓖余二章微处理器和指令系统二章微处理器和指令系统94 例例2.4 FIRST2.4 FIRST,SECONDSECOND为字节变量,写出将为字节变量,写出将FIRSTFIRST开始的字内容送给变量开始的字内容送给变量SECONDSECOND开始的字单元指令序列。开始的字单元指令序列。MOVMOV AL AL,FIRSTFIRSTM

136、OVMOV SECOND SECOND,ALALMOVMOV AL AL,FIRST1FIRST1MOVMOV SECOND1 SECOND1,ALALMOVMOV AX AX,WORD PTRWORD PTR FIRST FIRSTMOVMOV WORD PTRWORD PTR SECOND SECOND,AXAX 用字传送用字传送 用字节传送用字节传送擒家鹤底憎柴琶葵妥何炽菩炙会勒割热祈册游扶肮斤毅嗓姨盖求岔旗皇仿二章微处理器和指令系统二章微处理器和指令系统952. 交换指令交换指令o操作:操作: ( (目的操作数目的操作数) ) ( (源操作数源操作数) )n格式:格式:XCHG XCH

137、G 目的操作数,源操作数目的操作数,源操作数REG/MEMREG/MEM, REG REG REG REG, MEM MEMn说明:说明:基本用法同基本用法同MOVMOV指令指令; ; 当当源源或或目目的的操操作作数数为为MEMMEM操操作作数数时时,会会自自动动激激活活LOCKLOCK信信号号, ,该该特特性性常常用用于于多多机机、多多任任务务或或多多用用户户系系统统中中的的临临界段(共享资源)访问。界段(共享资源)访问。注意:注意: (1 1)该指令不影响标志位;)该指令不影响标志位; (2 2)不允许使用段寄存器。)不允许使用段寄存器。谭公凶婴剃徊司懂亲裁惕却厌胃掸锋剔篇辱豫淀稳磁锋是镐

138、宽戍龋韩休攒二章微处理器和指令系统二章微处理器和指令系统96 例例2.5 FIRST2.5 FIRST,SECONDSECOND已定义为字节变量,写出将已定义为字节变量,写出将变量变量FIRSTFIRST和和SECONDSECOND中内容交换的指令序列。中内容交换的指令序列。 解:解: 用交换指令用交换指令XCHG AL,FIRST XCHG SECOND,ALXCHG AL,FIRST 用用MOV指令指令MOV AL,FIRSTMOV BL,SECONDMOV FIRST,BLMOV SECOND,AL钦楼违蓬省刽安乘蘑卿彝决鬃米秒剐袁颜债鬃优才氰丈枕褥渤檄氛碑弃津二章微处理器和指令系统二章

139、微处理器和指令系统97TEST: MOV AL,0FFH XCHG AL,SEMAPHORE AND AL,AL ;产生条件码;产生条件码 JNZ TEST ;忙时等待;忙时等待 (临界段程序临界段程序) MOV AL,0 MOV SEMAPHORE,AL ;清信号灯;清信号灯 例例2.62.6:临界段访问(测试与置操作):临界段访问(测试与置操作)壁与忌荤炼碟屋慧啦靠獭肤扒季鲍笔斗寸户宴跳屠铅刷反册逛盲俐硝袋汤二章微处理器和指令系统二章微处理器和指令系统98 输入输入指令指令o格式:格式:IN IN 累加器,累加器, 端口端口 AL/AX/EAXAL/AX/EAX, IMM8 IMM8 AL

140、/AX/EAX AL/AX/EAX, DX DXo操作:操作: (I/OI/O端口)端口)AL/AX/EAXAL/AX/EAX I/O指令指令直接寻址直接寻址: : 指令给出的立即数是指令给出的立即数是I/OI/O端口地址端口地址间接寻址间接寻址: : DX DX寄存器给出的是寄存器给出的是I/OI/O端口地址端口地址五尊疽琶饼烟傈挤衰舍啡零解灸愁摈膊闰危财桓围揪潭轨乱驾肆缓七动旱二章微处理器和指令系统二章微处理器和指令系统99 输出指令输出指令o格式:格式:OUT OUT 端口端口, , 累加器累加器 IMM8 , AL/AX/EAXIMM8 , AL/AX/EAX DX , AL/AX/E

141、AX DX , AL/AX/EAXo操作:(操作:(AL/AX/EAXAL/AX/EAX)I/OI/O端口端口说明:说明:I/OI/O端口有两种寻址方式端口有两种寻址方式 使用立即数的使用立即数的直接寻址直接寻址, ,寻址范围为寻址范围为0 0255;255; 使用使用DXDX寄存器的寄存器的间接寻址间接寻址, ,寻址范围为寻址范围为0 02 21616-1-1。征蓝咎棉指砾誓劲篆导拘惹霉窍们弓籽瓷晕议诫痞规缩杂耍包咽件酮引氛二章微处理器和指令系统二章微处理器和指令系统100n格式格式:LEA r16/r32, memLEA r16/r32, mem ;r16/r32-mem;r16/r32-

142、目的操作数寄存器目的操作数寄存器p例例 LEA AX, BPDI LEA AX, BPDIn说明说明pLEALEA指令处理变量的地址指令处理变量的地址(E(EA A) )而不是变量的内容而不是变量的内容p LEALEA和和MOVMOV指令的比较指令的比较 MOV BX, OFFSET VAL ; MOV BX, OFFSET VAL ;将将VALVAL的有效地址的有效地址=BX =BX MOV BX, VAL ; MOV BX, VAL ;将将VALVAL的值的值=BX=BX LEA BX, VAL ; LEA BX, VAL ;将将VALVAL的有效地址的有效地址=BX=BX4.4.地址地址

143、- -目标传送指令目标传送指令有枷挤睬扎哀毖散炭傍座刁溪掐消惩升配茁触职娶然膜元辣最属可痰狮生二章微处理器和指令系统二章微处理器和指令系统101pMOVMOV指令用指令用OFFSETOFFSET操作不能直接取数组中任意元操作不能直接取数组中任意元素的位移量,只能取数组的第一个元素的位移量,素的位移量,只能取数组的第一个元素的位移量,而而LEALEA可以传送任意数组元素的位移量。可以传送任意数组元素的位移量。 如LEA DX, BETABXSIpLEALEA的源操作数必须是存储器操作数的源操作数必须是存储器操作数pLEALEA不影响不影响F F标志标志LDS reg, mem 目的操作数为目的操

144、作数为1616位或位或3232位通用寄存器之一,源操作位通用寄存器之一,源操作数是双字长存储器指针,将双字长源操作数中的低数是双字长存储器指针,将双字长源操作数中的低地址字传送给目的寄存器,将双字长源操作数中的地址字传送给目的寄存器,将双字长源操作数中的高地址字传送给高地址字传送给DSDS段寄存器段寄存器矣隶左绷跟诸揩盒且册器描睫秸属旷胚锭阉猖拨郑责暮冻拳谤岿策炭翘世二章微处理器和指令系统二章微处理器和指令系统102p如B DB F A DD B LDS BX, A ; B的位移量=BX,B的段基址=DS MOV AL, BX ;将F=AL uLESreg,memq和和LDSLDS一样,只是把

145、双字长源操作数中的高地一样,只是把双字长源操作数中的高地址字传送给址字传送给ESES而不是而不是DSDS痞讳粘十篓认炙盐掸劳焊迂憾氨湾蕾扣埋脐禁磐束锦渍蟹芬渤簿垛落吠梨二章微处理器和指令系统二章微处理器和指令系统103o说说明明:XLATXLAT是是一一条条隐隐含含寻寻址址的的指指令令。隐隐含含两两个个操操作作数数:DSDS:(E)BX(E)BX存存放放表表基基址址, ,ALAL存存放放查查表表参参数数。使使用用前前要要给给隐隐含操作数赋初值。含操作数赋初值。5. 查表指令查表指令n 格式:格式:XLATXLATn 操作:操作:(EBX)+(AL)AL(EBX)+(AL)AL (BX)+(AL

146、)AL (BX)+(AL)ALo注意注意: (1 1)不影响标志位;)不影响标志位; (2 2)字节表格(长度不超过)字节表格(长度不超过256256)首地址存入)首地址存入BXBX; (3 3)需转换代码存入)需转换代码存入ALAL。昂脂壶葱好肿衷惰氢蛆偷础锑傣丸恿叁阐险升涟屋昂描腰挪栏央耳镭谐涡二章微处理器和指令系统二章微处理器和指令系统104 例例2.7 2.7 内内存存中中自自TABLETABLE开开始始的的1616个个单单元元连连续续存存放放着着自自然然数数0 0到到1515的的平平方方值值( (构构成成一一个个平平方方表表) ),任任给给一一整整数数M M在在XXXX单单元元中中(

147、 (该该数数为为0M15)0M15),查查表表求求M M的平方值,并将结果存入的平方值,并将结果存入YYYY单元中。单元中。解解: :LEA BXLEA BX,TABLETABLEMOVMOV AL AL,XXXX XLATXLAT MOVMOV YY YY,ALALTABLE 0+1 1+2 4+3 9+15 225XX 5蜜蛀贸注藏闹挛吧仿抽广彰逗蓄丹抖栏赌家慧孜错凸洁筑刻逮鸿素系刊英二章微处理器和指令系统二章微处理器和指令系统1056. 压栈压栈/弹栈指令弹栈指令o格式:格式:PUSHPUSH 源操作数源操作数REG16/MEM16/IMM16REG16/MEM16/IMM16REG32

148、/MEM32/IMM32REG32/MEM32/IMM32o操作:操作: (E)SP)-2/ (E)SP)-2/4 4(E)SP(E)SP ( (源操作数源操作数)(SS:(E)SP)(SS:(E)SP)阑洞价颠程五乾肾窄爷摄辞啄算挺桂瑟克抄纠益哭冈吨拄还诲夸剁各杖闸二章微处理器和指令系统二章微处理器和指令系统106n格式:格式:POP POP 目的操作数目的操作数 MEM16/REG16MEM16/REG16 MEM32/REG32 MEM32/REG32n操作操作:( (SSSS:(E)SP)(E)SP)目的操作数目的操作数 (E)SP)+ 2 (E)SP)+ 2/4/4(E)SP(E)S

149、P弹栈指令弹栈指令锅诚筒徐斡祸纪飞公勿吸砌锑涣允克忻兰锣验澄描镣库齐隧施垢颈桅运永二章微处理器和指令系统二章微处理器和指令系统107o堆栈指令的操作数只能为堆栈指令的操作数只能为字或双字字或双字。oPUSHPUSH和和POPPOP要成对出现要成对出现,以保持堆栈平衡。,以保持堆栈平衡。o堆栈指令也隐含了一个堆栈指令也隐含了一个目的目的/ /源操作数源操作数 堆栈堆栈。o压压栈栈顺顺序序是是先先压压高高字字节节后后压压低低字字节节,弹弹栈栈则则是是先先弹弹低字节后弹高字节低字节后弹高字节。(先进后出)。(先进后出)使用说明使用说明:注意:注意: (1 1)指令执行后不影响标志位;)指令执行后不影

150、响标志位; (2 2)不能用立即寻址方式;)不能用立即寻址方式; (3 3)目标操作数不能是)目标操作数不能是CSCS。碉代濒衷糊位秒赂回犀巫香幢曰噪役钳荣臼蔬挟裴禁巫萄峡书钦才羊肘晌二章微处理器和指令系统二章微处理器和指令系统108 例例2.8 2.8 用堆栈操作指令将用堆栈操作指令将BXBX和和CXCX中中的两个的两个1616位数(其中位数(其中BXBX是高是高1616位)组成位)组成3232位数传送到位数传送到EAXEAX寄存器中。寄存器中。解:解: PUSH BX ;先压高;先压高1616位位 PUSH CX ;后压低;后压低1616位位 POP EAX喘肆厄语宅稼豹刊懒婆霸猪僻劈汝爽

151、忙拼呵鲤声坑蔓您班鳞锤轮扼为荐汞二章微处理器和指令系统二章微处理器和指令系统109 例例2.92.9设程序在数据段中定义的数组如下设程序在数据段中定义的数组如下:NAMES DB TOM.NAMES DB TOM. DB 20 DB 20 DB ROSE DB ROSE DB 30 DB 30 DB KATE. DB KATE. DB 25 DB 25 请指出下列指令是否正确,如正确,请指出下列指令是否正确,如正确,A A累加累加器中的结果是多少?器中的结果是多少?7.传送指令应用举例传送指令应用举例糕弦庞嚼捷入候畸探答怖杆围交基社溉掉话逻忆阶瘁显添讽因或每瓮乏鼻二章微处理器和指令系统二章微处

152、理器和指令系统1101. MOV BX, OFFSET NAMES 1. MOV BX, OFFSET NAMES MOV AL,BX+5 MOV AL,BX+5(AL)=NAMES+5=20(AL)=NAMES+5=202. MOV AX, NAMES2. MOV AX, NAMES 错,源与目的操作数类型不一致错,源与目的操作数类型不一致3. MOV AX, WORD PTR NAMES+1 3. MOV AX, WORD PTR NAMES+1 (AX)=NAMES+1=(AX)=NAMES+1=MOMO=4D4FH=4D4FH4. 4. MOV BX,6MOV BX,6 MOV SI,

153、5 MOV SI,5 MOV AX,NAMESBXSI MOV AX,NAMESBXSI 前两条指令正确,第三条错,源与前两条指令正确,第三条错,源与目的操作数类型不一致目的操作数类型不一致 T+1 O+2 M+3 .+4 .+5 20+6 R+7 O+8 S+9 E+10 30+11 K+12 A+13 T+14 E+15 .+16 25NAMESDS帘袋疟英斟围度节瀑著涧锥渠迸山配潭醇延里仙似们梨虐其旨新夫吭敌枯二章微处理器和指令系统二章微处理器和指令系统1115. MOV BX, 6*25. MOV BX, 6*2 MOV SI,5 MOV SI,5 MOV AX,OFFSET NAME

154、SBXSI MOV AX,OFFSET NAMESBXSI INC AX INC AX 前两条指令正确;第三条错,前两条指令正确;第三条错,OFFSETOFFSET只能取直接变量的偏移地址;只能取直接变量的偏移地址;第四条错,第四条错,AXAX不能用作寄存器间址。不能用作寄存器间址。6. 6. MOV BX, 6MOV BX, 6 MOV SI,5 MOV SI,5 LEA DI,NAMESBXSI LEA DI,NAMESBXSI MOV AL,DI MOV AL,DI (DI)=NAMES(DI)=NAMES偏移地址偏移地址+(BX)+(SI)+(BX)+(SI) =NAMES =NAME

155、S偏移地址偏移地址+11+11(AL)=NAMES+11=(AL)=NAMES+11=K K=4BH=4BH T+1 O+2 M+3 .+4 .+5 20+6 R+7 O+8 S+9 E+10 30+11 K+12 A+13 T+14 E+15 .+16 25NAMESDS伐谨讥微番吊抠伪羌淹晚稳犁待恶毯菠甘蚕料烙棚调肿创逐术幽击闹贞铱二章微处理器和指令系统二章微处理器和指令系统112 例例2.102.10 8048680486工作在实地址方式时,工作在实地址方式时,(DS)=091DH(DS)=091DH,(BX)=0024H(BX)=0024H,有关存储器的内容如图所示。求指令,有关存储器

156、的内容如图所示。求指令 LES DILES DI,32HBX32HBX执行后的结果。执行后的结果。DIDIESES00F6H00F6H1E40H1E40H09226H09226H段基址段基址操作码操作码操作码操作码32H32H00H00H存储器存储器指指令令代代码码段段偏移量偏移量数数据据段段位位移移量量F6HF6H00H00H40H40H1EH1EH0032H0032HBX 0024HBX 0024H+ DS*16 091D0H+ DS*16 091D0H09226H09226H荔蚜烤川衣泊圾晃嫌淫玉券殿董醉欺顺篮驰冯臭志砚陈桑吓憎琳横钢洱础二章微处理器和指令系统二章微处理器和指令系统113

157、2.4.3.2 2.4.3.2 算术运算指令算术运算指令 算算术术运运算算指指令令用用以以完完成成加加、减减、乘乘、除除四四种种基基本本运运算算,其其操操作作对对象象可可以以是是字字节节、字字、双双字字的的有有符符号号和和无无符符号号二二进进制制整整数数,也也可可以以是是无无符符号号的的压压缩缩、非非压压缩缩BCDBCD数数。算算术术运运算算指指令令还还支支持持十十进进制制调调整整、比比较较指指令令和和数数据据宽宽度度变变换换指指令令等等。除除数数据据宽宽度度变变换换指指令令外外,算算术术运运算算指指令令影影响响标标志志寄寄存存器器EFLAGSEFLAGS中的状态标志位。中的状态标志位。鲜末蘑

158、蜡晶瑶蛹剿挽铭脖惕勿啄磊色消排二衍绍憋彩它剧崖茂召丸竭剥顽二章微处理器和指令系统二章微处理器和指令系统114算术运算指令包括算术运算指令包括: :o加加/ /减法指令减法指令(ADD/ADC/SUB/SBB)(ADD/ADC/SUB/SBB)o加加1/1/减减1 1指令指令(INC/DEC)(INC/DEC)o求补指令求补指令(NEG)(NEG)o数据宽度变换指令数据宽度变换指令(CBW/CWD/CDQ/CWDE)(CBW/CWD/CDQ/CWDE)o交换加法指令交换加法指令(XADD)(XADD)o比较指令比较指令(CMP)(CMP)o比较并交换指令比较并交换指令(CMPXCHG)(CMPX

159、CHG)o乘乘/ /除法指令除法指令(MUL/IMUL/DIV/IDIV)(MUL/IMUL/DIV/IDIV)oBCDBCD调整指令调整指令(AAA/AAS/AAM/AAD/DAA/DAS)(AAA/AAS/AAM/AAD/DAA/DAS)伶各矽绘烛际遏司叮编位邵摈嗜时溶雍坷硅盖锚扣严琉玻摸咋桩簇羽获畴二章微处理器和指令系统二章微处理器和指令系统115 加法加法/ /减法指令减法指令 n操作:操作: ADDADD:( (目的目的)+()+(源源) ) 目的目的 SUB: ( SUB: (目的目的)-()-(源源) ) 目的目的 ADCADC:( (目的目的)+()+(源源)+ CF )+ C

160、F 目的目的 SBB: ( SBB: (目的目的)-()-(源源)- CF )- CF 目的目的目的操作数,源操作数目的操作数,源操作数REGREG, REG/MEM/IMM REG/MEM/IMMMEMMEM, REG/IMM REG/IMMn格式:格式:ADDADD SUB SUB ADCADC SBB SBB衡朋昧城熊粪印嫌马捷售孙桓管衣第百井罩句诈毒医邯下咎氖窜般欠此盘二章微处理器和指令系统二章微处理器和指令系统116使用说明:使用说明:nADD/SUBADD/SUB指指令令用用于于单单个个字字节节/ /字字/ /双双字字数数的的加加/ /减减法法运算;运算;nADC/SBBADC/S

161、BB指指令令则则常常用用于于多多精精度度或或多多字字节节/ /多多字字/ /多多双双字数字数的加的加/ /减法运算。减法运算。nINC/DEC INC/DEC REG/MEM REG/MEM 指指令令与与 ADD/SUB ADD/SUB REG/MEMREG/MEM,1 1 的的异异同同:两两者者都都执执行行加加1/1/减减1 1操操作作,但但前前者者不不影影响响进位,而后者影响。进位,而后者影响。淖驶赊酋论套撩座赚研综醋缅捣撰任陪谢牲庐瓮磅陀份妥湖趣灭莽削牧粤二章微处理器和指令系统二章微处理器和指令系统117加法指令对条件标志位的影响:加法指令对条件标志位的影响:SF=1 结果为负结果为负0

162、 否则否则ZF=1 结果为结果为00 否则否则CF=1 和的最高有效位有向高位的进位和的最高有效位有向高位的进位0 否则否则OF=1 2个操作数符号相同,而结果符号个操作数符号相同,而结果符号与之相反与之相反0 否则否则表示无符表示无符号数相加号数相加的溢出的溢出表示带符表示带符号数相加号数相加的溢出的溢出神踢跳欺幸蜂戴展老婪丹职屯音谚欧修啄僻醚酿载掏嗽仔领赎鬃栽苑册惜二章微处理器和指令系统二章微处理器和指令系统118减法指令对条件标志位的影响:减法指令对条件标志位的影响:CF=1 减法转换为加法运算时无进位减法转换为加法运算时无进位0 否则否则OF=1 2个操作数符号相反,而结果符号个操作数

163、符号相反,而结果符号与减数相同与减数相同0 否则否则表示无符表示无符号数相减号数相减的溢出的溢出表示带符表示带符号数相减号数相减的溢出的溢出CF=1 被减数最高有效位有向高位的借位被减数最高有效位有向高位的借位0 否则否则柞运找肆磅图疵潞暇约藉洽拭芒捣嘛柴氰贫撬雪翔层迷侈络舷秃旷献编烽二章微处理器和指令系统二章微处理器和指令系统119 例例2.11 2.11 两个两个3232位双字数据位双字数据X X、Y Y定义如下:定义如下: X DW X DW 1234H1234H,5678H5678H Y DW 3FEAH Y DW 3FEAH,A033HA033H请编写计算请编写计算X=XX=XY Y

164、的程序段(低位在前)。的程序段(低位在前)。解:解: 用用80868086指令指令 MOV MOV AXAX,Y Y SUB SUBX X,AXAX ;低;低1616位字数据相减位字数据相减MOVMOVAXAX,2Y2YSBB SBB 2X2X,AX AX ;高;高1616位字数据相减位字数据相减 用用80386/48680386/486指令指令 MOV MOV EAXEAX,DWORD PTRDWORD PTR Y Y ;3232位数位数Y Y送送EAXEAX SUB SUBDWORD PTRDWORD PTR X X,EAXEAX ;X=X-YX=X-Y暗辨柒舰蒜托蚀漾盼那亿倚国凶芬扇妻友

165、盟菠狗槛畸泛葛浚研们接嫩娱询二章微处理器和指令系统二章微处理器和指令系统120 解:解: MOV SIMOV SI,0 ;SI0 ;SI用作数组下标用作数组下标 MOV AX MOV AX,0 ;AX0 ;AX用于求和,初值为用于求和,初值为0 0 MOV CX MOV CX,5 ;CX5 ;CX用作循环计数器用作循环计数器AGAINAGAIN:ADD ALADD AL,BUFSIBUFSI;求和;求和 ADC AH ADC AH,0 0;处理进位;处理进位 INC SI INC SI;数组下标;数组下标SISI加加1 1 LOOP AGAIN LOOP AGAIN;未完继续;未完继续 MOV

166、 BUFSIMOV BUFSI,ALAL;保存结果低位;保存结果低位 MOV BUFSI+1 MOV BUFSI+1,AHAH;保存结果高位;保存结果高位 HLT HLT 例例2.12 2.12 编编写写一一程程序序段段,求求内内存存中中5 5个个单单元元字字节节(单单元元地地址址:BUFBUFBUF+4BUF+4)无无符符号号数数之之和和。结结果果存存在在BUF+5BUF+5(低位)和(低位)和BUF+6BUF+6(高位)单元。(高位)单元。簿政嚼篓牢粉机腹斡究地铅吠耳账堤腊引俺蒸拷攘捡雌椒衣佬巴挑序堆蝶二章微处理器和指令系统二章微处理器和指令系统1212.2.整数变反指令整数变反指令( (

167、求补求补) )o格式:格式: NEG NEG 目的操作数目的操作数 REG/MEMREG/MEMo操作:操作: 0-(OP1) OP1 0-(OP1) OP1o应用:常用于求绝对值。应用:常用于求绝对值。解解: TEST AX: TEST AX,8000H8000H JZ NEXT JZ NEXT NEG AX NEG AX NEXT NEXT:HLTHLT 例例2.112.11:求:求AXAX中存放的有符号数的绝对值。中存放的有符号数的绝对值。戒腑车拐峭诊锥涂捐茹顷滨杜涵鲸腆掇摆牲棘准晰票猛敌那匀驹士奏肢费二章微处理器和指令系统二章微处理器和指令系统1223. 3. 比较指令比较指令o操操作

168、作:(OP1) (OP1) (OP2)(OP2),根根据据操操作作结结果果修修改改状状态态标标志志,但不改变目标操作数值。但不改变目标操作数值。o说说明明: CMPCMP指指令令常常用用于于比比较较两两个个数数,然然后后根根据据指指令令产生的状态标志进行程序转移。产生的状态标志进行程序转移。 CMP CMP与与SUBSUB指令都执行减法操作,但前者不因指令都执行减法操作,但前者不因操作结果改变目标操作数值,而后者改变。操作结果改变目标操作数值,而后者改变。v格式:格式:CMP 目的操作数,目的操作数, 源操作数源操作数 REG, REG/MEM/IMM MEM,REG/IMM围士弓伺挛袒蔼烬雨

169、最墙昼凰战渍遏锤沸陌耿蝎杖泰抛座斜淳账橱碴放矿二章微处理器和指令系统二章微处理器和指令系统1234. 4. 乘法指令乘法指令 乘法指令分为有乘法指令分为有符号数符号数和和无符号数无符号数乘法指令乘法指令(IMUL/MUL)。)。 无符号数乘法指令只有单操作数格式一种;无符号数乘法指令只有单操作数格式一种; 有符号数乘法指令则有有符号数乘法指令则有单操作数、双操作数单操作数、双操作数和三操作数和三操作数三种格式。三种格式。碱堕燥骆琵蔡菊辈月件锡享兼蕾此腥艇臭砧石浓森雇秤域绎才忱甭掳莉嫂二章微处理器和指令系统二章微处理器和指令系统124单操作数乘法指令单操作数乘法指令o格式:格式:MUL/IMUL

170、 源操作数源操作数 REG/MEMn操操作作:MUL和和IMUL分分别别为为有有符符号号数数和和无无符符号号数数乘乘法法指指令,两种指令除令,两种指令除操作数类型操作数类型不同外,操作完全相同:不同外,操作完全相同:字字: (AX)(源操作数源操作数)DX:AX双字双字: (EAX)(源操作数源操作数)EDX:EAX字节字节: (AL)(源操作数源操作数)AX源操作数源操作数遁图庐函睡骡据骑鼠谈驱纠骤炎夹瓦掠仲挽叉茹调掌智馅脑赌貌黄笺坚巡二章微处理器和指令系统二章微处理器和指令系统125o说明:说明:单操作数乘法指令的被乘数是隐含的单操作数乘法指令的被乘数是隐含的( (在在AL/AX/EAXA

171、L/AX/EAX中中) ),而结果长度一定是被乘数,而结果长度一定是被乘数/ /乘数的二倍乘数的二倍( (在在AX/DX:AX/EDX:EAXAX/DX:AX/EDX:EAX中中) )。源操作数不能为立即数。源操作数不能为立即数。要根据是有符号数还是无符号数,分别选用要根据是有符号数还是无符号数,分别选用IMULIMUL或或MULMUL指令指令指令执行影响指令执行影响CFCF和和OFOF标志,若指令执行后,结果的标志,若指令执行后,结果的高一半是有效数值位,则高一半是有效数值位,则CF=OF=1CF=OF=1,否则,否则CF=OF=0CF=OF=0。漓诡它仇旋婶焉乐仙镶妆抹标剂妹瘤饮矛动晚倪捅

172、唾今足泽赢贩话萧淑臼二章微处理器和指令系统二章微处理器和指令系统126 例例2.12 2.12 若若(AL)=96H(AL)=96H,(BL)=12H(BL)=12H,求分别执行,求分别执行MUL MUL BLBL和和IMUL BLIMUL BL指令后的结果及指令后的结果及OFOF、CFCF状态。状态。 解解: MUL BL: MUL BL完成完成ALAL和和BLBL中的两个无符号数相乘,即:中的两个无符号数相乘,即: (AX)=(AL)(BL)=96H12H=0A8CH (AX)=(AL)(BL)=96H12H=0A8CH IMUL IMUL BLBL完完成成ALAL和和BLBL中中的的两两

173、个个有有符符号号数数相相乘乘,此此时时ALAL中的数是负数,真值为中的数是负数,真值为-6AH-6AH,即:,即: -6AH -6AH 12H = -774H12H = -774H 用补码表示:用补码表示: (AX)=F88CH (AX)=F88CH AHAH含有效数字,含有效数字, OF=1 OF=1、CF=1CF=1。AHAH含有效数字,含有效数字, OF=1 OF=1、CF=1CF=1。佩斌栈儡听防晾绞了剧琳般瞎选撅堕冀伞仆糟郊恩竹消欣麓口剥炭翅疗厚二章微处理器和指令系统二章微处理器和指令系统127 双操作数乘法指令双操作数乘法指令 格式:格式: IMUL IMUL 目的操作数,源操作数

174、目的操作数,源操作数 REGREG, REG/MEM/IMM REG/MEM/IMM 操作:操作:( (目的操作数目的操作数)()(源操作数源操作数)目的操作数目的操作数 三操作数乘法指令三操作数乘法指令 格式:格式:IMUL IMUL 目的操作数,源操作数,立即数目的操作数,源操作数,立即数 REG REG, REG/MEM REG/MEM, IMM IMM 操作:操作:( (源操作数源操作数) )( (立即数立即数)目的操作数目的操作数 星杯塘饮泡蜡开网买罚窥酷架环慷葫熬痴修何孪舒葛荣前缸付皿袄穴避墙二章微处理器和指令系统二章微处理器和指令系统1285.5.除法指令除法指令o格式:格式:D

175、IVIDIV DIVIDIV 源操作数源操作数 REG/MEM REG/MEMo操作:按源操作数类型操作:按源操作数类型: : 字节字节:(AX)/(:(AX)/(源源) ),商存于,商存于ALAL中,余数存于中,余数存于AHAH。 字字: (DX:AX)/(: (DX:AX)/(源源) ),商存于,商存于AXAX中中, ,余数存于余数存于DXDX。 双字双字:(EDX:EAX)/(:(EDX:EAX)/(源源) ),商在,商在EAXEAX中中, ,余数在余数在EDXEDX。客掸氨挫茹企惠盟搬实搬屉训盼斜令悦炬淘乔踩盅寿桥夷猜琢汇卫轨哨浊二章微处理器和指令系统二章微处理器和指令系统129除法指

176、令的被除数是隐含的,且除法指令的被除数是隐含的,且长度一定是除数的长度一定是除数的二倍二倍( (在在AX/DX:AX/EDX:EAXAX/DX:AX/EDX:EAX中中) )。所以所以, ,使用除法指令使用除法指令常要扩展被除数长度常要扩展被除数长度。扩展时无符号数一般用:。扩展时无符号数一般用: MOVZX AX MOVZX AX,ALAL MOV DX MOV DX,0 0 MOV EDX MOV EDX,0 0 有符号数一般用:有符号数一般用:CBW/CWD/CDQCBW/CWD/CDQ源操作数不能为立即数源操作数不能为立即数对所有条件标志位均无定义对所有条件标志位均无定义o说明说明:

177、:烘主荤吞撤地坛捶券墒揣颜厕茁茧嗡烈锅舍椽少烘搞滓羹肺仔汲悠衍温稻二章微处理器和指令系统二章微处理器和指令系统130乘乘/ /除法指令应用举例除法指令应用举例 例例2.12 2.12 编写完成编写完成(EAX)(EAX)9/49/4的程序段。的程序段。 解:解: MOVMOVEBXEBX,9 9 MUL/ MUL/IMULIMULEBX EBX ;(EAX)9EDX(EAX)9EDX:EAXEAX MOV MOVEBXEBX,4 4 DIV/ DIV/IDIVIDIVEBX EBX ;(EAX)9/4EAX(EAX)9/4EAX箩挡植蛆惨涎歇矫噬犊然悯弗狈淹郊满阂旗牵扛潦挽筷参挚奉滩父昨得醋二

178、章微处理器和指令系统二章微处理器和指令系统131 MOV AX,a ;ab在在CX:BX中中 MOV AX,c ;c在在DX:AX中中 ;ab+c在在DX:AX中中 ;商存入;商存入S IMUL bMOV CX,DXMOV BX,AXCWDADD AX,BXMOV DX,CXIDIV aMOV S,AX 例例2.13 2.13 下下列列程程序序段段完完成成S=(ab+c)/aS=(ab+c)/a的的运运算算,其其中中变变量量a a、b b、c c和和S S均均为为带带符符号号的的字字数数据据,结结果果的的商商存存入入S S,余数则不计,请在下列空格中填入合适的指令。,余数则不计,请在下列空格中

179、填入合适的指令。榜骑腿嗽阉卓踪建浑峭晤勇倒葵傀蚂戍歉殆谢弟啄御荫邹非弥刹值送颁讹二章微处理器和指令系统二章微处理器和指令系统1326. BCD6. BCD调整指令调整指令 AAA: AAA: 未组合未组合BCDBCD加法调整指令,隐含操作数为加法调整指令,隐含操作数为ALAL。AAS:AAS:未组合未组合BCDBCD减法调整指令,隐含操作数为减法调整指令,隐含操作数为ALAL。AAM:AAM:未组合未组合BCDBCD乘法调整指令,隐含操作数乘法调整指令,隐含操作数AXAX、AHAH、ALAL。 将将AXAX中乘积调整为两个未组合中乘积调整为两个未组合BCDBCD数存于数存于AHAH和和ALAL

180、AAD:AAD:调整除法运算前调整除法运算前AXAX中的被除数内容。中的被除数内容。操作:操作:(AH)10+(AL)AX(AH)10+(AL)AXDAA:DAA:组合组合BCDBCD加法调整指令加法调整指令, , 隐含操作数为隐含操作数为ALAL。DAS:DAS:组合组合BCDBCD减法调整指令减法调整指令, , 隐含操作数为隐含操作数为ALAL。格式格式: AAAAASAAMAADDAADAS: AAAAASAAMAADDAADAS装师博掷谆浆盐鲁吭走笑吉慌货估呵茂楞喉萧甜敛寡轿托惩退傍抑芜效齿二章微处理器和指令系统二章微处理器和指令系统133 DAA/DASDAA/DAS、AAA/AAS

181、AAA/AAS隐隐含含的的操操作作寄寄存存器器是是ALAL,所所以以BCDBCD码码加加法法/ /减减法法只只能能用用累累加加器器ALAL为为目目的的操操作作数数的的加加法法/ /减减法法指指令令,且且加加法法/ /减减法法指令后要跟调整指令。指令后要跟调整指令。 多多字字节节、字字和和双双字字BCDBCD加加法法/ /减减法法只只能能用用带带进进位位/ /借借位位的的字字节节加加法法/ /减法指令实现。减法指令实现。 ASCIIASCII码码数数的的运运算算与与非非压压缩缩BCDBCD码码数数的的运运算算基基本本相相同同,但但要要保保持结果仍为持结果仍为ASCIIASCII码,则需转换。码,

182、则需转换。 AAM AAM隐含的操作寄存器是隐含的操作寄存器是AXAX,要跟在,要跟在MULMUL指令之后。指令之后。 AAD AAD指令的功能不是将除法后的结果调整为指令的功能不是将除法后的结果调整为BCDBCD码,而是在除码,而是在除法前将法前将AXAX保存的两位非压缩保存的两位非压缩BCDBCD数调整为二进制数。该指令要放在数调整为二进制数。该指令要放在DIVDIV指令之前。指令之前。 说明:说明:傍梳宠肇酮做涩娱彪剁弘剩低雁杯尺坞都肄例葡洼娄兼塔娶粤慷痕瀑缘炮二章微处理器和指令系统二章微处理器和指令系统134 解:解:MOV ALMOV AL,BYTE PTRBYTE PTR X X

183、; ;取字变量的低字节取字变量的低字节 ADD AL ADD AL,BYTE PTRBYTE PTR Y ; Y ;低位相加低位相加 DAA DAA ;BCD ;BCD码调整码调整 MOV MOV BYTE PTRBYTE PTR X X,AL ;AL ;保存低位结果保存低位结果 MOV AL MOV AL,BYTE PTRBYTE PTR X1 ; X1 ;取字变量的高字节取字变量的高字节 ADC AL ADC AL,BYTE PTRBYTE PTR Y1 ; Y1 ;高位相加高位相加 DAA DAA MOV MOV BYTE PTRBYTE PTR X1 X1,ALAL 例例2.14 2.

184、14 两个两个4 4位压缩位压缩BCDBCD码定义如下:码定义如下: X X DW 3526HDW 3526HY YDW 1234HDW 1234H 请编写计算请编写计算X+YX+Y的程序段。的程序段。熬革肿耘勘惰菠屁丢哎摩吻砾狈踌擦脂券烟汐撤孺粉抖惩另赶贷旗立呸回二章微处理器和指令系统二章微处理器和指令系统135 例例2.15 2.15 程序段程序段 MOVAX,405H MOVBL,06H AAD DIV BL 执行后执行后AXAX的内容为的内容为 。 A. 307H B. 703H C. 4231H D. 806HA搭轩榔广减蘸立龟雾钝竟邓稗扦辫剖证陕械朽瑰媒棚脑妻规眠葛寺砧谐苏二章微处

185、理器和指令系统二章微处理器和指令系统1362.4.3.3 2.4.3.3 逻辑运算和移位指令逻辑运算和移位指令 1. 1. 逻辑运算指令逻辑运算指令 逻逻辑辑运运算算指指令令包包括括ANDAND、OROR、XORXOR、NOTNOT和和TESTTEST指指令令,所所有有指指令令都都对对其其操操作作数数按按位位进进行行逻辑运算。操作数可以是字节、字和双字。逻辑运算。操作数可以是字节、字和双字。叫记矿衷拔枯物圆丹旅娘栈须侍互谣铲证墨垛蒜汀恢仇骆砷探毙疲琴感胡二章微处理器和指令系统二章微处理器和指令系统137n功功能能:分分别别按按位位进进行行逻逻辑辑“与与”、“或或”、“异或异或”、“测试测试”和

186、和“非非”。格式:格式:ANDAND OR OR XOR XOR TEST TEST 目标操作数,源操作数目标操作数,源操作数 REGREG, REG/MEM/IMM REG/MEM/IMM MEM MEM, REG/IMM REG/IMM NOT NOT 目标操作数目标操作数 REG/MEMREG/MEM逻辑运算指令逻辑运算指令瓤穷因盛娱薯躇追田霸廓界犹梦胖貌玛葵追重弛愈啥累崩用拟乓嘴涨坎镁二章微处理器和指令系统二章微处理器和指令系统138使用说明使用说明: : 逻辑运算指令除逻辑运算指令除NOTNOT指令指令外,都影响标志寄存器外,都影响标志寄存器的状态标志位,且逻辑运算后进位标志的状态标

187、志位,且逻辑运算后进位标志CFCF一定为一定为0 0,所以逻辑运算指令,所以逻辑运算指令常用于清常用于清0 0和清进位位和清进位位。编程时要根据操作合理选用指令,一般编程时要根据操作合理选用指令,一般: : 对某些二进制位对某些二进制位清零清零用逻辑用逻辑与与指令指令ANDAND; 对某些二进制位对某些二进制位置位置位用逻辑用逻辑或或指令指令OROR; 对对某某些些二二进进制制位位求求反反用用逻逻辑辑异异或或指指令令XORXOR,全全部位部位求反求反用逻辑用逻辑非非指令指令NOTNOT。晃揪皮核胰蚂改催柴鲁尸绥柜汁颊孵底睡药猖彩末瑰价秃疽突莎馅炽抄到二章微处理器和指令系统二章微处理器和指令系统

188、139 ANDAND指指令令与与TESTTEST指指令令的的相相同同之之处处是是都都执执行行按按位位“与与”操操作作,两两者者执执行行后后对对标标志志寄寄存存器器中中状状态态标标志志位位的的影影响响相相同同, ,不不同同之之处处是是前前者者改改变变目目标标操操作作数数的的值值, ,而而后后者者并并不不改改变变目目标标操操作作数数的的值值。所所以以TESTTEST指指令令与与CMPCMP指指令令的的用用法法类类似似,用用于产生按位测试的条件码。于产生按位测试的条件码。缸僳他消刑刀荣男爬昆高讹找竟傲曾即肄层臻门秃灯挪持舵通吃里拾纫炙二章微处理器和指令系统二章微处理器和指令系统140 例例2.17

189、2.17 写出一条能完成下述操作的指令:写出一条能完成下述操作的指令: 将将AXAX的高字节清零,低字节不变;的高字节清零,低字节不变; 将将BXBX的低字节置成全的低字节置成全11,高字节不变;,高字节不变; 将将CXCX的高字节变反,低字节不变。的高字节变反,低字节不变。嘻曼迁沫终札黍火健卤购蛮倚娩刻熙倾祷捏逼狠药揣绊竖涤耘赶靡川请臀二章微处理器和指令系统二章微处理器和指令系统141 解解: TEST DX: TEST DX,8000H ;8000H ;测试符号位,产生状态测试符号位,产生状态 JZ EXIT ; JZ EXIT ;符号位符号位=0=0,结束,结束 NEG DX ; NEG

190、 DX ;求绝对值求绝对值 NEG AX NEG AX SBB DX SBB DX,0 0 EXIT EXIT:HLTHLT 例例2.18 2.18 已已知知寄寄存存器器DXDX:AXAX的的内内容容为为3232位位带带符符号号数数,编编写写一一段段程程序序使使DXDX:AXAX的的内内容容成成为为原原来来数据的绝对值。数据的绝对值。糯云万骂儡祈挣嗽装妒繁范纯沟辫耳梁网铆碌戳姜幕刃惮飞拘幻搬磺煞陷二章微处理器和指令系统二章微处理器和指令系统1422. 2. 移位指令移位指令 移位指令包括移位指令包括: :o算术移位指令算术移位指令(SAL/SAR)(SAL/SAR)o逻辑移位指令逻辑移位指令(

191、SHL/SHR)(SHL/SHR)o循环移位指令循环移位指令(ROR/ROL/RCR/RCL)(ROR/ROL/RCR/RCL)o双精度移位指令双精度移位指令(SHLD/SHRD)(SHLD/SHRD)纶距惰柴铁斤血田替馋擎区琢噪谣求裴甚曾脚部糖肥镊兹唆扼插笔隧押纵二章微处理器和指令系统二章微处理器和指令系统143o算术算术/ /逻辑左移指令逻辑左移指令(SAL/SHL)(SAL/SHL)CF0o算术右移指令算术右移指令(SAR)(SAR)CFo逻辑右移指令逻辑右移指令(SHR)(SHR)CF0刘构吴陶趟路枕助寅障香仓纯哭立腊印及梅闻挣笨毕颊震台毋租堰邓鸡粹二章微处理器和指令系统二章微处理器和

192、指令系统144o循环左移指令循环左移指令(ROL)(ROL)o循环右移指令循环右移指令(ROR)(ROR)CFCFo带进位位循环左移指令带进位位循环左移指令(RCL)(RCL)CFo带进位位循环右移指令带进位位循环右移指令(RCR)(RCR)CF被均渺密酚鹏隋跑邦特祭啦白柬淳臭峡昏的箔晶缘丢搏敌料揭库野睁眠膨二章微处理器和指令系统二章微处理器和指令系统145使用说明使用说明o移位指令的源操作数采用立即数寻址时,移位指令的源操作数采用立即数寻址时,80868086指令只能为指令只能为1 1,8048680486则为则为8 8位,实际使用低位,实际使用低5 5位。位。o移位指令常用于二进制数的倍乘

193、和倍除,即算术移位指令常用于二进制数的倍乘和倍除,即算术/ /逻辑移逻辑移n n位,位,相当于把二进制数乘以或除以相当于把二进制数乘以或除以2 2n n。o要注意算术右移要注意算术右移(SAR)(SAR)与逻辑右移与逻辑右移(SHR)(SHR)的区别的区别: :前者在符号前者在符号位和数值位依次右移的同时,用符号位充填符号位,而后者位和数值位依次右移的同时,用符号位充填符号位,而后者用用0 0充填符号位。充填符号位。所以所以, ,有符号和无符号数倍乘用有符号和无符号数倍乘用SHL/SALSHL/SAL均均可,但倍除时,有符号数用可,但倍除时,有符号数用SARSAR和无符号数用和无符号数用SHR

194、SHR。o移位指令也常用于循环控制,如逻辑尺控制循环。移位指令也常用于循环控制,如逻辑尺控制循环。臼化马针类迅北驼瑶星锯踢撒姨阂齐饯叉堵掳孽孟表损爽诛仑嫁哇旁胀朋二章微处理器和指令系统二章微处理器和指令系统146 例例2.19 2.19 试编写用移位和加法指令完成试编写用移位和加法指令完成(EAX)9/4(EAX)9/4的程序段。的程序段。 解解: (EAX): (EAX)9/4=(EAX)9/4=(EAX)8+(EAX)/48+(EAX)/4MOV EBXMOV EBX,EAX EAX ;保存;保存EAXEAXSAL/SAL/SHLSHL EAX EAX,3 3 ;(EAX)8EAX(EAX

195、)8EAXADDADD EAX EAX,EBX EBX ;(EAX)8+(EAX)EAX(EAX)8+(EAX)EAXSAR/SAR/SHRSHR EAX EAX,2 2 ;(EAX)9/4EAX(EAX)9/4EAX触轧础课呸犹复身福维其芥唐坝絮弗沮傀逾外臀浑恬烈揍谨倘计瞬讳膀受二章微处理器和指令系统二章微处理器和指令系统147 MOV BLMOV BL,AL ;ALAL ;AL内容存于内容存于BLBL MOV CX MOV CX,8 ;8 ;循环次数为循环次数为8 8AGAINAGAIN:ROL BLROL BL,1 ;(BL)1 ;(BL)依次左移,最高位送依次左移,最高位送CFCF R

196、CR AL RCR AL,1 ;(AL)1 ;(AL)依次右移依次右移, ,最高位用最高位用CFCF充填充填 LOOP AGAIN LOOP AGAIN 例例2.20 2.20 编编写写一一程程序序段段,将将寄寄存存器器ALAL的的8 8位位二二进制内容颠倒过来。进制内容颠倒过来。 解解: : ALAL内内容容为为ALAL7 7ALAL6 6ALAL5 5ALAL4 4ALAL3 3ALAL2 2ALAL1 1ALAL0 0,颠颠倒倒是是使使ALAL内内容容成成为为ALAL0 0ALAL1 1ALAL2 2ALAL3 3ALAL4 4ALAL5 5ALAL6 6ALAL7 7 。用用带带进进位

197、位的的循循环环指令实现:指令实现:琉促衍昭户咖勒瘪治弄平进稽烩愧笋修抉宛寺项绍案篆度我颊箔谋捡蕉澈二章微处理器和指令系统二章微处理器和指令系统1482.4.4 2.4.4 串操作指令串操作指令o串传送指令串传送指令 MOVSB/MOVSW/MOVSD MOVSB/MOVSW/MOVSDo串装入指令串装入指令 LODSB/LODSW/LODSD LODSB/LODSW/LODSDo串存储指令串存储指令 STOSB/STOSW/STOSD STOSB/STOSW/STOSDo串比较指令串比较指令 CMPSB/CMPSW/CMPSD CMPSB/CMPSW/CMPSDo串扫描指令串扫描指令 SCAS

198、B/SCASW/SCASD SCASB/SCASW/SCASDo串输入指令串输入指令 INSB/INSW/INSD INSB/INSW/INSDo串输出指令串输出指令 OUTSB/OUTSW/OUTSD OUTSB/OUTSW/OUTSD 串操作指令是指用于对存储器中字节串、字串和串操作指令是指用于对存储器中字节串、字串和双字串进行操作的指令,包括双字串进行操作的指令,包括: : 坑硅副传喜肩抒预爱拧喊殴堑局棚爸吐何暗正驾铜嚎蚂汗页拴暗褒俘杏曲二章微处理器和指令系统二章微处理器和指令系统149串操作约定串操作约定: :用用DS:(E)SIDS:(E)SI寻址源串寻址源串, ,允许段超越;允许段

199、超越;用用ES:(E)DIES:(E)DI寻址目的串,但寻址目的串,但ESES段不能超越;段不能超越;由由DFDF标志位决定标志位决定(E)SI(E)SI,(E)DI (E)DI 指针增减:指针增减: DF=0,DF=0,递增;递增;DF=1,DF=1,递减;递减;由串长度决定指针增减量大小;由串长度决定指针增减量大小;带重复前缀时,用带重复前缀时,用(E)CX(E)CX作重复计数器。作重复计数器。 舵翱律标钢粟疗肮卧己组虞饯芒丙堕碴盅籍筋抚撰科腺主购菇致颐灼症畏二章微处理器和指令系统二章微处理器和指令系统1501.1.串传送指令串传送指令 o格式:格式: MOVSB/MOVSW/MOVSD

200、MOVSB/MOVSW/MOVSD MOVS MOVS 目的串,源串目的串,源串 MEM MEM, MEM MEMn说明说明: : 该该指指令令允允许许加加重重复复前前缀缀REPREP。此此时时由由(E)CX(E)CX控控制制串串传传送指令送指令MOVSMOVS的执行次数。相当于指令序列:的执行次数。相当于指令序列: AGAINAGAIN:MOVSB/MOVSW/MOVSDMOVSB/MOVSW/MOVSD LOOP AGAIN LOOP AGAINn操作操作: : (DS:(E)SI)(ES:(E)DI)(DS:(E)SI)(ES:(E)DI) 按按DFDF指示和操作数长度修改指示和操作数长

201、度修改(E)SI(E)SI,(E)DI(E)DI指针指针n应用:用于数据块传送应用:用于数据块传送励泡列遮肝宾需壶贵铂腕盆匈戍而掖肩烫爷短舟茬害农处法周囊筷扬选梁二章微处理器和指令系统二章微处理器和指令系统151 例例2.212.21编写将数据段中自编写将数据段中自AREA1AREA1开始的开始的100100个字数据搬到附加段中以个字数据搬到附加段中以AREA2AREA2开始的数据区中开始的数据区中的程序段。的程序段。解:解:用用MOV指令指令 LEA SI, AREA1 LEA DI, AREA2 MOV CX, 100 DONE: MOV AX,SI MOV ES:DI,AX ADD SI

202、,2 ADD DI,2 LOOP DONE瑞千搽博套氮嘘蔫仓血碗贯贡波祭塞缝登峦本专颗们腾骇魏读念撒洋威文二章微处理器和指令系统二章微处理器和指令系统152 用基本串传送指令用基本串传送指令 LEA SI, AREA1 LEA DI, AREA2 MOV CX, 100 CLD DONE: MOVSW LOOPDONE 用重复串传送指令用重复串传送指令 LEA SI, AREA1 LEA DI, AREA2 MOV CX, 100 CLD REP MOVSW植铡瑟回叛崔鲤割滤懈屏蓄豢显砂驱肌两娩庄伪娃跪黎挞阑费汹开探肩置二章微处理器和指令系统二章微处理器和指令系统1532.2.串装入指令串装入

203、指令 n格式:格式: LODSB/LODSW/LODSD LODSB/LODSW/LODSD LODS LODS 源串源串 MEM MEMn说明说明: : 一般不与重复前缀一般不与重复前缀REPREP连用。连用。n操作操作: : (DS:(E)SI)AL/AX/EAX(DS:(E)SI)AL/AX/EAX 按按DFDF指示和操作数长度修改指示和操作数长度修改(E)SI(E)SI指针指针n应用:用于取数据块中元素值应用:用于取数据块中元素值窄角栗芥螺屡券侨预眼途响讽耘纵遥改酮宁巾枢性比岸木亢岳融接岗做完二章微处理器和指令系统二章微处理器和指令系统1543.3.串存储指令串存储指令 n格式:格式:

204、 STOSB/STOSW/STOSD STOSB/STOSW/STOSD STOSSTOS 目的串目的串 MEM MEMn说明说明: : 允许加重复前缀允许加重复前缀REPREP。n操作操作: : AL/AX/EAX(ES:(E)DI)AL/AX/EAX(ES:(E)DI) 按按DFDF指示和操作数长度修改指示和操作数长度修改(E)DI(E)DI指针指针n应应用用:用用于于数数据据块块初初始始化化。LODSLODS和和STOSSTOS结结合合常用于数据块传送。常用于数据块传送。纤范老喻耍支酶侮嗅俞蛔大瞳锡襄唁眨钨归孝劳囚空穿鲜霞肠拇浇镁迢蝶二章微处理器和指令系统二章微处理器和指令系统1554.

205、4.串扫描指令串扫描指令 n格式:格式: SCASB/SCASW/SCASD SCASB/SCASW/SCASD SCAS SCAS 目的串目的串 MEM MEMn说说明明: : 允允许许加加重重复复前前缀缀REPEREPE或或REPNEREPNE。扫扫描描次次数数由由(E)CX(E)CX指定。重复条件:指定。重复条件: REPE REPE :IF (E)CX)0 AND ZF=1IF (E)CX)0 AND ZF=1, THEN THEN 重复串扫描重复串扫描 REPNE: IF (E)CX)0 AND ZF=0REPNE: IF (E)CX)0 AND ZF=0, THEN THEN 重复

206、串扫描重复串扫描n操操作作: : (AL/AX/EAX)-(ES:(E)DI),(AL/AX/EAX)-(ES:(E)DI),影影响响标标志志, ,但但不不改改变目的串内容。变目的串内容。 按按DFDF指示和操作数长度修改指示和操作数长度修改(E)DI(E)DI指针指针n应用:应用:用于在串数据中查找关键字用于在串数据中查找关键字。贩低冒钮域喉岸贸纵噶赵审耪葫幌谎节睡垒芹隅来厢藩屑激剃鞭歉狰淤闻二章微处理器和指令系统二章微处理器和指令系统156 MOV SI,2170H ;搬移;搬移 MOV CX,100H CLD MOV DI,1000H ;查找;查找 MOV CX,100H JNZ K1

207、MOV BYTE PTR DI,20H ;ASCII码码20H为空为空K1:MOV DI,1000HREP MOVSBREPNE SCASBDEC DI 例例2.22 2.22 串串操操作作指指令令将将100H100H个个数数的的字字符符从从2170H2170H处处搬搬到到1000H1000H处处,然然后后从从中中检检索索与与ALAL中中字字符符相相同同的的单单元元,并并将将此此单单元元换换成成空空格格符符,程程序序段段如如左左,请请把把所所缺缺指指令令填填上上(本本程程序序只只换换第第一一个个相相同单元)。同单元)。晴屡帕温匙虏瞪筹警叠犯姓钎瓢诉图祝嗓胳铺您脂斤陌东奇妈房睁邢腺嗜二章微处理器

208、和指令系统二章微处理器和指令系统1575.5.串比较指令串比较指令n格式:格式: CMPSB/CMPSW/CMPSD CMPSB/CMPSW/CMPSD CMPS CMPS 源串,目的串源串,目的串 MEM MEM , MEM MEMn说明说明: : 允许加重复前缀允许加重复前缀REPEREPE或或REPNEREPNE。n操操作作: : (DS:(E)SI)-(ES:(E)DI),(DS:(E)SI)-(ES:(E)DI),影影响响标标志志, ,但但不不改改变变源源串串和和目目的的串串内内容容。按按DFDF指指示示和和操操作作数数长长度修改度修改(E)DI(E)DI、(E)SI(E)SI指针指

209、针n应用:应用:常用于比较两个串数据是否匹配常用于比较两个串数据是否匹配。废豺鸯旭旬悦窑镀使堵蘑窜龚季朽婴雕焊我展诗氓粤奖匙呼风舶咳如眯悲二章微处理器和指令系统二章微处理器和指令系统1582.4.5 2.4.5 控制转移指令控制转移指令 控制转移指令包括:控制转移指令包括:n无条件转移指令(无条件转移指令(JMPJMP)n调用调用/ /返回指令(返回指令(CALL/RETCALL/RET)n条件转移指令(条件转移指令(JCCJCC)n循环控制指令(循环控制指令(LOOPLOOP)n中断指令(中断指令(INTINT)五类。)五类。 控制转移指令的共同特点是可以改变控制转移指令的共同特点是可以改变

210、CS:(E)IPCS:(E)IP的内容,从而改变程序执行顺序。的内容,从而改变程序执行顺序。呼羹析森荐似魔王彤父例哑烯依猿伪怖息戳勘窄腔侧删虽袄浑秃差羔本斧二章微处理器和指令系统二章微处理器和指令系统159o直接转移直接转移此时,指令中直接给出转移的目标地址。又分为此时,指令中直接给出转移的目标地址。又分为: :控制转移指令使用说明:控制转移指令使用说明:1.1.按目标地址的寻址方式,转移可分为:按目标地址的寻址方式,转移可分为: 直接直接短短(SHORT)(SHORT)转移转移 段内段内(NEAR)(NEAR)直接直接转移转移 段间段间(FAR)(FAR)直接直接转移转移 段段内内直直接接短

211、短转转移移和和段段内内直直接接转转移移又又称称为为相相对对转转移移。即即转转移移的的目目标标地地址址为为当当时时的的(E)IP(E)IP地地址址加加上上一一8 8位位位位移移量量( (短短转转移移) )、1616位位位位移移量量(16(16位位寻寻址址) )或或3232位位位位移移量量(32(32位位寻寻址址) ) ,即即:(E)IP)+DISP (E)IP(E)IP)+DISP (E)IP敌疾讳掀庭技勒将猎刹飞踊切纸典第酝嫡舅丙遮欠率蚁锚瓜胜浙趣顷挝氦二章微处理器和指令系统二章微处理器和指令系统160q间接转移间接转移 2. 2. 8086/80888086/8088的的条条件件转转移移指指

212、令令都都为为短短转转移移,80386/8048680386/80486则推广到段内转移。则推广到段内转移。v寄存器间接转移。仅有段内转移。寄存器间接转移。仅有段内转移。v存储器间接转移。分段内和段间转移存储器间接转移。分段内和段间转移。 3. 3. CALLCALL指指令令与与JMPJMP指指令令的的不不同同之之处处是是:CALL:CALL指指令令执行时,增加了保存断点地址进栈的操作。执行时,增加了保存断点地址进栈的操作。 此此时时, ,指指令令中中给给出出的的寄寄存存器器或或存存储储单单元元中中间间接接存存放放着着转转移的目标地址。移的目标地址。又分为又分为: : 4. 4. 循环指令只能是

213、短转移。循环指令只能是短转移。 糟盔篱牺泥褐艳携赏肖幂镇湃站腋杆菊借缠插礁筑下饮故导硕坪窝傀咽岛二章微处理器和指令系统二章微处理器和指令系统1611. JMP/CALL LABEL1. JMP/CALL LABEL;段内直接转移;段内直接转移/ /调用调用转移目标转移目标: IP(IP)+Disp16/32: IP(IP)+Disp16/32 例例2.232.23控制转移指令举例控制转移指令举例4. JMP DWORD PTR DISPBX 4. JMP DWORD PTR DISPBX ;1616位段间间接转移位段间间接转移转移目标转移目标: : IPBX+DISPIPBX+DISP,CSB

214、X+DISP+2CSBX+DISP+22. JMP/CALL FAR PTR LABEL 2. JMP/CALL FAR PTR LABEL ;段间直接转移;段间直接转移/ /调用调用 转移目标转移目标: CSSEG LABEL: CSSEG LABEL,(E)IPOFFSET LABEL(E)IPOFFSET LABEL3. JMP/CALL BX3. JMP/CALL BX ;1616位段内间接转移位段内间接转移/ /调用调用 转移目标转移目标: IP(BX): IP(BX)5. CALL FWORD PTR EAX5. CALL FWORD PTR EAX;3232位段间间接调用位段间间

215、接调用 转移目标转移目标: : EIP EAXEIP EAX,CS EAX+4CS EAX+4蚂讣渐斥咖硕戍巢讫成戴维唉仔脓怎淬劈底杀绞于趴蕊来琉锯对暴缓舱犊二章微处理器和指令系统二章微处理器和指令系统162 例例2.24 2.24 指指令令JMP JMP NEAR NEAR PTR PTR PROGPROG在在程程序序代代码码段段中中的的偏偏移移地地址址为为2013H2013H(这这是是该该指指令令第第一一字字节节的的偏偏移移地地址址),组组成成该该指指令令的的三三字字节节机机器器码码为为E91234HE91234H(其其中中E9HE9H为为操操作作码)。码)。该指令执行后,程序将转去何处该

216、指令执行后,程序将转去何处? ? 解:解:该指令执行过程如下该指令执行过程如下: :5428H5428H2013H2013HE9HE9H12H12H34H34H存储器存储器指指令令代代码码段段位位移移量量3412H3412H+ IP 2016H+ IP 2016HIP 5428HIP 5428H 程序转移到当前代码段中偏移地址为程序转移到当前代码段中偏移地址为5428H5428H的单元执行的单元执行峨贷垃秉决尺卑轻炉蠢搔湃琵榨宦甸恢伶篙两短盟刃尿觅絮令双光廊贰恕二章微处理器和指令系统二章微处理器和指令系统163 CMP CMP AX AX,BXBXJNOJNO PROG1 PROG1JNCJN

217、C PROG2 PROG2JMPJMP PROG3 PROG3 解:解: 指令指令CMPCMP AXAX,BXBX的的功功能能是是: (AX)-(BX)(AX)-(BX),根根据据结结果果置置相相应应标标志志位位,而而80X86MPU80X86MPU中中数数是是用用补补码码表表示示,补补码码减减法法可可用用补补码加法实现码加法实现。于是:于是: (AX)-(BX)= (AX)+-(BX)(AX)-(BX)= (AX)+-(BX)补补 例例2.252.25已知已知(AX)=14C6H(AX)=14C6H,(BX)=80DCH(BX)=80DCH,执行以下程,执行以下程序后,程序转向哪里?序后,程

218、序转向哪里?暇咎舔庙晚栋仟肖搂赔哦教依眯涪疮贤式郸弟逮遁梢暖幽肢慢略遵桥奎卿二章微处理器和指令系统二章微处理器和指令系统164 (AX) =14C6H=0001010011000110(AX) =14C6H=0001010011000110 + +-(BX)(BX)补补=7F24H=0111111100100100=7F24H=0111111100100100 1001001111101010=93EAH 1001001111101010=93EAH 符号位向进位位的进位符号位向进位位的进位C C2 2=0=0 最高数据位向符号位的进位最高数据位向符号位的进位C C1 1=1=1 OF= C

219、OF= C1 1CC2 2=1=1,溢出。,溢出。 程序转向程序转向PROG3加法无进位表明减法有借位加法无进位表明减法有借位, CF=C, CF=C2 2=1=1。程序段如下:程序段如下:CMPCMP AX AX,BXBXJNOJNO PROG1 PROG1JNCJNC PROG2 PROG2JMPJMP PROG3 PROG3刷开列云憎怯册欣欣瑞病天矮嫉络寒浪周瞪膛抡酚励媒掣钎剧枢甲尘封瞻二章微处理器和指令系统二章微处理器和指令系统165 例例2.29 2.29 编编写写一一程程序序段段,BUFBUF单单元元有有一一单单字字节节无无符符号号数数X X,编编程程计计算算Y Y(仍仍为为单单字

220、字节节),结结果果保保留留在在累累加加器中。器中。 解:解: MOV MOVALAL,BUFBUF; ;BUFBUF内容(内容(X X)ALAL CMPCMPALAL,2020; ;与与2020比较比较 JNCJNCNEXTNEXT; ;X X 2020,转去执行,转去执行X-20X-20 MOV MOVBLBL,ALAL; ;Y=3X=2X+XY=3X=2X+X,用移位和加法实现,用移位和加法实现 SHL SHLALAL,1 1 ADD ADDALAL,BLBL JMPJMPEXITEXIT; ;跳过计算跳过计算Y=X-20Y=X-20的指令的指令NEXT:NEXT: SUB AL SUB

221、AL,2020EXIT:EXIT: HLT HLTY=Y=3X X203X X20X-20 X20X-20 X20噬第筒纺榷肯斜卡伞荡洞限虾贾角烽龋尹象契驳镰景耶贰瞬棋疤饰烟役背二章微处理器和指令系统二章微处理器和指令系统1662.5 2.5 关于指令系统的说明关于指令系统的说明正确使用指令系统,关键要弄清楚:正确使用指令系统,关键要弄清楚:指令的各种类型指令的各种类型每条指令的功能及格式每条指令的功能及格式每条指令对操作数的要求每条指令对操作数的要求指令执行后对标志寄存器的影响指令执行后对标志寄存器的影响源源/ /目的操作数目的操作数 及其寻址方式及其寻址方式操作数长度操作数长度显式还是隐式

222、显式还是隐式指令运用的多样性与优化指令运用的多样性与优化探邵苍蔫胚汗忽狂搔醋墒几派旨贡室魄经袁娥庐掷狮填含方狞拦茁齿堑怕二章微处理器和指令系统二章微处理器和指令系统1671.1.应把指令格式应把指令格式( (句法句法) )与寻址方式联系起与寻址方式联系起来理解、掌握。来理解、掌握。 每条指令的显式操作数,无论是每条指令的显式操作数,无论是OP1,OP2OP1,OP2还是还是OP3,OP3,都无非是立即数、寄存器数或存储都无非是立即数、寄存器数或存储器数,其对应的寻址方式可能是前面所讲的器数,其对应的寻址方式可能是前面所讲的十一种寻址方式之一。十一种寻址方式之一。2.5 2.5 关于指令系统的说

223、明关于指令系统的说明扮笋聘找庸次摸翘态豹桌百癌队毖狗荣减礼孩愤栏养淆羡胀飞巨通彝城媚二章微处理器和指令系统二章微处理器和指令系统1682.5 2.5 关于指令系统的说明关于指令系统的说明2.2.使用指令时,要特别注意弄清楚指令隐使用指令时,要特别注意弄清楚指令隐含的操作寄存器含的操作寄存器例如:例如:v乘、除法指令的单操作数格式下,只显式指出乘、除法指令的单操作数格式下,只显式指出了源操作数的乘数或除数,但应注意目的操作数了源操作数的乘数或除数,但应注意目的操作数和源操作数的被乘数和源操作数的被乘数/ /被除数必须存放在被除数必须存放在A A累加器累加器或或DX:AX(EDX:EAX)DX:A

224、X(EDX:EAX)中。中。v加、减、乘、除运算的组合加、减、乘、除运算的组合/ /未组合未组合BCDBCD码调整码调整指令看起来均无操作数,但目的操作数均隐含在指令看起来均无操作数,但目的操作数均隐含在A A累加器中。累加器中。v串操作指令规定传送操作是从串操作指令规定传送操作是从DS:ESI(DS:ESI(或或SI)SI)地址传到地址传到ES:EDI(ES:EDI(或或DI)DI)地址;存取操作时,地址;存取操作时,A A累累加器和变址寄存器加器和变址寄存器DI/SIDI/SI是取寄存器;入是取寄存器;入/ /出操出操作时,作时,DX(DX(或或EDX)EDX)是端口寄存器。是端口寄存器。

225、v重复前缀重复前缀REPREP和循环指令和循环指令LOOPLOOP都是以都是以CX(CX(或或ECX)ECX)作为隐含的重复作为隐含的重复/ /循环次数计数寄存器。循环次数计数寄存器。绑殷殊柴遥湛骤唯及稳顷膊灌犊半澡罚果馋绩僻劝氓她缄恩师隙厌绳沛咬二章微处理器和指令系统二章微处理器和指令系统1692.5 2.5 关于指令系统的说明关于指令系统的说明v查表转换指令查表转换指令XLATXLAT必须以必须以EBXEBX作为被查表的表基址,作为被查表的表基址,以以ALAL作为表指针和存放结果的目的寄存器。所以必须作为表指针和存放结果的目的寄存器。所以必须预先将表的基址送到预先将表的基址送到EBXEBX

226、中,而将被查表元素的下标送中,而将被查表元素的下标送到到ALAL中。中。v标志处理指令标志处理指令LAHFLAHF、SAHFSAHF隐含的寄存器是隐含的寄存器是AHAH寄存器和寄存器和标志寄存器标志寄存器F F的低字节。的低字节。v比较并交换指令比较并交换指令CMPXCHGCMPXCHG看起来只有看起来只有2 2个操作数,而实个操作数,而实际上隐含了累加器际上隐含了累加器A A作为第三个操作数。作为第三个操作数。v数据长度扩展数据长度扩展( (转换转换) )指令指令CBW/CWDE/CWD/CDQCBW/CWDE/CWD/CDQ隐含了隐含了A A累加器和累加器和DXDX寄存器作为源寄存器作为源

227、/ /目的操作数。目的操作数。 窗跌年捌燕乙遏瞬妆椎叁船耿的豪彭冈怖蚤掠侮滁饭铲兹奥哇莲并讼绍囱二章微处理器和指令系统二章微处理器和指令系统1702.5 2.5 关于指令系统的说明关于指令系统的说明3.3.对带符号和无符号数,许多同种操作却对带符号和无符号数,许多同种操作却要使用不同的指令。要使用不同的指令。例如:例如:最高位扩展的传送指令最高位扩展的传送指令 MOVSX MOVZX MOVSX MOVZX指令名称指令名称 对带符号数对带符号数 对无符号数对无符号数乘法指令乘法指令 IMUL MUL IMUL MUL除法指令除法指令 IDIV DIV IDIV DIV移位指令移位指令* * S

228、AL/SAR SHL/SHR SAL/SAR SHL/SHR* *算术算术/ /逻辑左移相同,但右移过程不同。例如:逻辑左移相同,但右移过程不同。例如:设设 AX=8520H AX=8520HSHR AX,1 SHR AX,1 后,结果是后,结果是AX=4290HAX=4290HSAR AX,1 SAR AX,1 后,结果是后,结果是AX=C290HAX=C290H单价新淮烫吗原正殖款疾池代乎滁迎手旬帐摧鹅苫顿辐斥盘航幅咒尿撑寸二章微处理器和指令系统二章微处理器和指令系统1712.5 2.5 关于指令系统的说明关于指令系统的说明4.4.应注意指令和指令序列中标号与变量的区别。应注意指令和指令序

229、列中标号与变量的区别。 两者都是存储单元的符号地址。但标号是某条指令所两者都是存储单元的符号地址。但标号是某条指令所存放单元的符号地址,位于指令的操作符存放单元的符号地址,位于指令的操作符( (助记符助记符) )前面;前面; 变量是某个数据所存放单元的符号地址,位于操作符变量是某个数据所存放单元的符号地址,位于操作符后面的操作数部分。后面的操作数部分。 换言之,标号对应的存储单元中存放的是指令换言之,标号对应的存储单元中存放的是指令( (操作操作码码) ),而变量所对应的存储单元中存放的是数据,而变量所对应的存储单元中存放的是数据( (操作数操作数) )。 所有控制转移指令可以转移到代表指令地

230、址的标号去,所有控制转移指令可以转移到代表指令地址的标号去,但决不允许转移到某一变量。但决不允许转移到某一变量。评妨浑毙叉恃齐列瘟信郎勇旷抖展崎梭填鲤苫胜啃蛇勘虎存奇疆嘛峙伸琼二章微处理器和指令系统二章微处理器和指令系统1722.5 2.5 关于指令系统的说明关于指令系统的说明5.5.要严格区分指令是对地址还是对地址中要严格区分指令是对地址还是对地址中的内容的内容( (数据数据) )进行操作进行操作例如:例如:LEA BX,TABLE LEA BX,TABLE ;TABLE;TABLE的偏移地址的偏移地址BXBXMOV BX,TABLEMOV BX,TABLE* * ; ;字变量字变量TABL

231、ETABLE中的内容中的内容BXBXMOV BX,OFFSET TABLE MOV BX,OFFSET TABLE ;TABLE;TABLE的偏移地址的偏移地址BXBXXCHG AX,BX XCHG AX,BX ;BX;BX中的内容与中的内容与AXAX中的内容变换中的内容变换XCHG AX,BX XCHG AX,BX ;BX;BX所指示的地址所指示的地址( (内存单元内存单元) )中中 ; ;的内容与的内容与AXAX中的内容变换中的内容变换* *当将当将TABLETABLE作为一个变量用数据定义伪指令定义过时,作为一个变量用数据定义伪指令定义过时,它是一个符号地址;当将它作为一个数用它是一个符

232、号地址;当将它作为一个数用EQUEQU或等号或等号=定义过时,它是一个立即数。定义过时,它是一个立即数。肤燕弛出艘团泵蹄宁主额根浦咀痈蜀伦借雁尺圆堡傍穿垂榆疫事缩囱貉笔二章微处理器和指令系统二章微处理器和指令系统1731 1、若自若自BLOCKBLOCK开始的内存缓冲区中开始的内存缓冲区中, ,有有100100个个1616位带符号数位带符号数, ,要求找出其中的最大值要求找出其中的最大值, ,将它存放到将它存放到MAXMAX单元中。单元中。2 2、将将ASCIIASCII码数转换为紧凑型码数转换为紧凑型BCDBCD码数。若在内存数据区中码数。若在内存数据区中( (输入缓冲区中输入缓冲区中) )

233、,已有若干个用,已有若干个用ASCIIASCII码表示的十进制数码码表示的十进制数码( (显然每个存储单元只存放一位十进制数显然每个存储单元只存放一位十进制数) )。要求把它们转。要求把它们转换为相应的换为相应的BCDBCD码,且把相邻两个存储单元的十进制数码的码,且把相邻两个存储单元的十进制数码的BCDBCD码合并在一个单元中,地址高的放在高码合并在一个单元中,地址高的放在高4 4位。这样就可位。这样就可节省一半存储单元。节省一半存储单元。课后练习/讨论题析遣复旋包缀盂果菊梳刷抿含每戊乱押咋蜀踌鹊淬泉汹轮售尉伶厘渊滔钩二章微处理器和指令系统二章微处理器和指令系统1743 3、与上例相反。要求

234、将存放在内存中的若干个组与上例相反。要求将存放在内存中的若干个组合型合型BCDBCD码数分别转换为码数分别转换为ASCIIASCII码,存于输出缓冲器码,存于输出缓冲器中,高中,高4 4位位BCDBCD码对应的码对应的ASCIIASCII码放在较高地址的单码放在较高地址的单元。元。4 4、内存中起始地址为内存中起始地址为BLOCKBLOCK的数据块中的数据有正的数据块中的数据有正有负,要求把其中的正、负数分开,分别送至同一有负,要求把其中的正、负数分开,分别送至同一段中的两个缓冲区,正、负数的缓冲区的首址分别段中的两个缓冲区,正、负数的缓冲区的首址分别为为PLUS-DATAPLUS-DATA和

235、和MINUS-DATAMINUS-DATA。课后练习/讨论题乃论吮夹埋程雨拱剪也碉窝殉渗闸倡昨钒什占函鄂过臆描晤丧册锁贤琶扑二章微处理器和指令系统二章微处理器和指令系统175课后练习/讨论题分析:要解决这个问题,可先把数据块的第一分析:要解决这个问题,可先把数据块的第一个数取至个数取至AXAX中,然后从第二个存储单元开始,中,然后从第二个存储单元开始,依次与依次与AXAX中的内容比较。如中的内容比较。如AXAX中的值大,则不中的值大,则不作改变,接着进行下一次比较;如作改变,接着进行下一次比较;如AXAX中的值小,中的值小,则将内存单元的内容送至则将内存单元的内容送至AXAX,取代原来小的数。

236、,取代原来小的数。这样,经过这样,经过9999次比较后,在次比较后,在AXAX中存的必然是中存的必然是100100个数中最大的数。个数中最大的数。 要进行要进行9999次比较,显然要编一个循环程序,次比较,显然要编一个循环程序,在每一循环中要用比较指令,然后用条件转移指在每一循环中要用比较指令,然后用条件转移指令判别大小。循环开始前要置初值。令判别大小。循环开始前要置初值。1 1、若自、若自BLOCKBLOCK开始的内存缓冲区中开始的内存缓冲区中, ,有有100100个个1616位带位带符号数符号数, ,要求找出其中的最大值要求找出其中的最大值, ,将它存放到将它存放到MAXMAX单元单元中。

237、中。尘甸塌傅粟栖铸张窄邮孟婆趾擂淡营陨小鲍樊傀稽佃俩葬吗塌沦丸腥普吃二章微处理器和指令系统二章微处理器和指令系统176参考程序段如下:参考程序段如下: MOV BX,OFFSET BLOCK MOV BX,OFFSET BLOCK ; ;将将BLOCKBLOCK偏移地址送偏移地址送BXBX MOV AX,BX MOV AX,BX ADD BX ADD BX,2 2 ; ;数据指针加数据指针加2 2,指向下个字数据,指向下个字数据 MOV CX,99 ; MOV CX,99 ;设循环比较次数设循环比较次数AGAIN:AGAIN:CMP AX,BX CMP AX,BX ;AX;AX与与BXBX所指

238、存储单元中的两个数比较所指存储单元中的两个数比较 JG JG NEXTNEXT ; ;若若AXAX中的数大,转中的数大,转NEXTNEXT MOV AX,BX ; MOV AX,BX ;否则,将大数送否则,将大数送AXAXNEXT:NEXT:INC BX INC BX INC BX INC BX DEC CX ;CX=CX-1DEC CX ;CX=CX-1 JNZ JNZ AGAIN AGAIN ;CX0, ;CX0,转转AGAINAGAIN继续循环继续循环 MOV MAX,AX ;CX=0, MOV MAX,AX ;CX=0,循环结束,最大数送循环结束,最大数送MAXMAX HLT HLT

239、屯陀辐筋真毕坟捍丫退胜历执杭婚秋早哼宾札捷愈渣蜡内嵌衍俞碴屈师疟二章微处理器和指令系统二章微处理器和指令系统177课后练习/讨论题2 2、将、将ASCIIASCII码数转换为紧凑型码数转换为紧凑型BCDBCD码数。若在内存数据码数。若在内存数据区中区中( (输入缓冲区中输入缓冲区中) ),已有若干个用,已有若干个用ASCIIASCII码表示的十码表示的十进制数码进制数码( (显然每个存储单元只存放一位十进制数显然每个存储单元只存放一位十进制数) )。要求把它们转换为相应的要求把它们转换为相应的BCDBCD码,且把相邻两个存储单码,且把相邻两个存储单元的十进制数码的元的十进制数码的BCDBCD码

240、合并在一个单元中,地址高的码合并在一个单元中,地址高的放在高放在高4 4位。这样就可节省一半存储单元。位。这样就可节省一半存储单元。分析:分析:要把要把ASCIIASCII码十进制数变为码十进制数变为BCDBCD码很简单,只要将码很简单,只要将高高4 4位变为位变为0 0即可即可; ;要把两位要把两位BCDBCD码组合在一个单元中,则码组合在一个单元中,则只要把地址高的左移只要把地址高的左移4 4位,再与地址低的装配为一个字位,再与地址低的装配为一个字节即可。节即可。还有一点要注意,被转换的还有一点要注意,被转换的ASCIIASCII码个数可能是偶数,码个数可能是偶数,也可能是奇数。若是奇数,

241、则把地址最低或地址最也可能是奇数。若是奇数,则把地址最低或地址最高的一个转换为非组合型高的一个转换为非组合型BCDBCD码码( (高高4 4位为位为0)0),然后将,然后将剩下的偶数个按统一的方法处理。剩下的偶数个按统一的方法处理。荡撬截拂犁矗堤饼蝎厢访凹抑确进技翠秀窥婿吝楔篷刨唾墩猴诅讣情佐峭二章微处理器和指令系统二章微处理器和指令系统178MOV SI,OFFSET ASCBUFMOV SI,OFFSET ASCBUFMOV DI,OFFSET BCDBUF MOV DI,OFFSET BCDBUF MOV CX,COUNT MOV CX,COUNT ROR CX,1 ROR CX,1 J

242、NC NEXT JNC NEXT ROL CX,1 ROL CX,1 MOV AL,SIMOV AL,SIINC SIINC SIAND AL,0FHAND AL,0FHMOV DI,ALMOV DI,ALINC DIINC DIDEC CX DEC CX ROR CX,1 ROR CX,1 NEXT:NEXT:MOV AL,SI MOV AL,SI INC SI INC SI AND AL,0FH AND AL,0FH MOV BL,AL MOV BL,AL MOV AL,SI MOV AL,SI INC SI INC SI PUSH CXPUSH CX MOV CL,4 MOV CL,4

243、SAL AL,CL SAL AL,CL POP CXPOP CX ADD AL,BL ADD AL,BL MOV DI,AL MOV DI,AL INC DI INC DI LOOP LOOP NEXT NEXT HLT HLT 参考程序段如下:参考程序段如下:判断判断ASCIIASCII码个数是奇码个数是奇数还是偶数数还是偶数保护、保护、恢复恢复CXCX连续连续2 2位位ASCIIASCII码转换码转换为为1 1位压缩位压缩BCDBCD码码另陨世邱俭阂坯巍薄面伍被廷莫兢韵擦输肢涨熬号翘购抛妄榴剔羡梯盐煤二章微处理器和指令系统二章微处理器和指令系统1793 3、与上例相反。要求将存放在内存中的

244、与上例相反。要求将存放在内存中的若干个组合型若干个组合型BCDBCD码数分别转换为码数分别转换为ASCIIASCII码,存于输出缓冲器中,高码,存于输出缓冲器中,高4 4位位BCDBCD码对码对应的应的ASCIIASCII码放在较高地址的单元。码放在较高地址的单元。课后练习/讨论题逻戳灵密妥垢脸宾拇速易殴肇狱涟抒扭蜗般拭绊丸画哼耽亢左罪答礼友坟二章微处理器和指令系统二章微处理器和指令系统180 MOV SI,OFFSET BCDBUF MOV SI,OFFSET BCDBUF MOV DI,OFFSET ASCBUF MOV DI,OFFSET ASCBUF MOV CX,COUNT MOV

245、CX,COUNT TRANTTRANT:MOV AL,SI MOV AL,SI INC SI INC SI MOV BL,AL MOV BL,AL AND AL,0FH AND AL,0FH OR AL,30H OR AL,30H MOV DI,AL MOV DI,AL INC DI INC DI MOV AL,BL MOV AL,BL PUSH CX PUSH CX MOV CL,4MOV CL,4SHR AL,CL SHR AL,CL OR AL,30H OR AL,30H MOV DI,AL MOV DI,AL INC DIINC DIPOP CX POP CX LOOPLOOP TRA

246、NT TRANT HLT HLT 参考程序段如下:参考程序段如下:砸唐烈皂啪钎央朱降焉闻藤斌刊柬眯莎验硫冠醋瓦靳部淤倪髓幸歇菊剁匿二章微处理器和指令系统二章微处理器和指令系统1814 4、内存中起始地址为、内存中起始地址为BLOCKBLOCK的数据块中的数据的数据块中的数据有正有负,要求把其中的正、负数分开,分别有正有负,要求把其中的正、负数分开,分别送至同一段中的两个缓冲区,正、负数的缓冲送至同一段中的两个缓冲区,正、负数的缓冲区的首址分别为区的首址分别为PLUS-DATAPLUS-DATA和和MINUS-DATAMINUS-DATA。课后练习/讨论题分析:分析:要解决这一问题,可设要解决这

247、一问题,可设SI(SI(或或ESI)ESI)为源数为源数据块的指针,设据块的指针,设DI(DI(或或EDI)EDI)和和BX(BX(或或EBX)EBX)分别为正、分别为正、负数的目的区指针,使用串装入指令负数的目的区指针,使用串装入指令LODSLODS把源数把源数据取至据取至AL(AL(或或EAX)EAX)中中; ;然后检查其符号位然后检查其符号位, ,若是正若是正数数, ,则用串存储指令则用串存储指令STOSSTOS指令送至正数缓冲区指令送至正数缓冲区; ;若若是负数是负数, ,则可把则可把DIDI与与BXBX交换交换, ,将负数区指针交换到将负数区指针交换到DIDI中中, ,再用再用STO

248、SSTOS指令送至负数缓冲区。同时指令送至负数缓冲区。同时, ,可用可用CXCX来控制循环次数。来控制循环次数。穴类植客椎汲圣邯薛衡豁洋浇挚倪侣病押拍锯甫怂鳞溢迅桐渺立河睫甫挚二章微处理器和指令系统二章微处理器和指令系统182 MOV SI,OFFSET BLOCK MOV SI,OFFSET BLOCK MOV DI,OFFSET PLUS MOV DI,OFFSET PLUS DATADATA MOV BX,OFFSET MINUS MOV BX,OFFSET MINUS DATADATA MOV CX,COUNT MOV CX,COUNT GOON:GOON:LODSB LODSB TEST AL,80H TEST AL,80H JNZ JNZ MINUS MINUS STOSB STOSB JMP JMP AGAINAGAINMINUS:MINUS:XCHG BX,DI XCHG BX,DI STOSB STOSB XCHG BX,DI XCHG BX,DI AGAIN:AGAIN:DEC CX DEC CX JNZ JNZ GOONGOON HLT HLT参考程序段如下:参考程序段如下:嘻崔庚剖俗梅的龄炼赂彰雍琼剥蹭冒陈宋牡篷思栗讲芋蹿庚倾壳柴称自奎二章微处理器和指令系统二章微处理器和指令系统183

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号