版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言第第3章章 80 x86指令系统和寻址方式指令系统和寻址方式教学要求:教学要求:1. 掌握指令系统的基本概念:指令格式、寻址方掌握指令系统的基本概念:指令格式、寻址方式、指令类型;掌握式、指令类型;掌握8086/8088指令系统中,各指指令系统中,各指令的格式、功能和注意事项。令的格式、功能和注意事项。2. 了解其他的寻址方式和指令类型。了解其他的寻址方式和指令类型。 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言 相关概念相关概念一、什么是指令系统?
2、一、什么是指令系统? 计算机的指令系统就是指该计算机能够执行计算机的指令系统就是指该计算机能够执行的全部指令的集合。的全部指令的集合。 每种计算机都有它支持的指令集合。每种计算机都有它支持的指令集合。 16位位8086指令系统是整个指令系统是整个Intel 80 x86 系列微处系列微处理器指令系统的基础。理器指令系统的基础。 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言 指令由操作码和操作数两部分组成。指令由操作码和操作数两部分组成。 说明计算机要执行哪种操作,如传送、运算、说明计算机要执行哪种操作,如传送、运算、移位、跳转等操作,它是指令中
3、不可缺少的组成部分。移位、跳转等操作,它是指令中不可缺少的组成部分。 是指令执行的参与者,即各种操作的对象。是指令执行的参与者,即各种操作的对象。 有些指令不需要操作数,通常的指令都有一个或两个有些指令不需要操作数,通常的指令都有一个或两个操作数,也有个别指令有操作数,也有个别指令有3个甚至个甚至4个操作数,通常成为一个操作数,通常成为一地址指令、二地址指令、三地址指令、二地址指令、三操作码操作码操作数操作数 操作数操作数 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言三、学习指令的注意事项三、学习指令的注意事项 该指令能够实现何种操作。通常指令
4、助该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或其缩写形式。记符就是指令功能的英文单词或其缩写形式。 该指令中的操作数可以采用何该指令中的操作数可以采用何种寻址方式。种寻址方式。 该指令执行后是否对各个标志位该指令执行后是否对各个标志位有影响,以及如何影响。有影响,以及如何影响。 该指令其他需要特别注意的地方,如指令该指令其他需要特别注意的地方,如指令执行时的约定设置、执行时的约定设置、等。等。 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言3.1 80 x86寻址方式寻址方式寻址、寻址方式的概念寻址、寻址方式的概念 指令中操作数
5、字段实质上是指出操作数存放于何处。一指令中操作数字段实质上是指出操作数存放于何处。一般来说,般来说,称为,称为立即数立即数;,称为,称为寄存器操作寄存器操作数数。,称为,称为存储器操作存储器操作数数。指令指定操作数的位置,即给出地址信息,在执行时需。指令指定操作数的位置,即给出地址信息,在执行时需要根据这个地址信息找到需要的操作数。这种要根据这个地址信息找到需要的操作数。这种称为称为寻址寻址,而寻找操作数的方法称为,而寻找操作数的方法称为寻址方式寻址方式。 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言指令的助记符格式:指令的助记符格式: 指令助
6、忆符指令助忆符 操作数操作数1 , 操作数操作数2 , 操作数操作数3 ;注释注释 指令助忆符体现该指令的功能,它指令助忆符体现该指令的功能,它。指令的操作数个数由该指令确定,。指令的操作数个数由该指令确定,绝大多数指令的操作数要显式的写出绝大多数指令的操作数要显式的写出来,但也有指令的操作数是隐含的,不需要在指令中写出。来,但也有指令的操作数是隐含的,不需要在指令中写出。注:注:当指令含有操作数,则在书写时必须遵守:当指令含有操作数,则在书写时必须遵守:v v 。 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言3.1.1 与数据有关的寻址方式与
7、数据有关的寻址方式以以 MOV 指令为例:指令为例:立即寻址立即寻址 MOV AX , 3069H寄存器寻址寄存器寻址 MOV AL , BH直接寻址直接寻址 MOV AX , 2000H 寄存器间接寻址寄存器间接寻址 MOV AX , BX 寄存器相对寻址寄存器相对寻址 MOV AX , COUNT SI 基址变址寻址基址变址寻址 MOV AX , BP DI 相对基址变址寻址相对基址变址寻址 MOV AX , MASK BX SI 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言1. 立即寻址方式立即寻址方式 定义:定义:操作数作为指令的一部分
8、而直接写在指令中,操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为这种操作数称为立即数,这种寻址方式也就称为寻址方式。寻址方式。 汇编格式:汇编格式:n n(n n为立即操作数,是为立即操作数,是)功能:功能:操作数存放在存储器,指令下一单元的内容为立操作数存放在存储器,指令下一单元的内容为立即操作数即操作数n n。图形表示:图形表示:操作数操作数 n指令指令 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言【例【例3.1】MOV AX, 4576H 执行后(执行后(AX)=? 该例中源操作数为立即寻址方式,立即数
9、为该例中源操作数为立即寻址方式,立即数为4576H,存放,存放在指令的下一单元。在指令的下一单元。 执行:执行:4576HAX 执行后:(执行后:(AX)=4576H 76HOP45H DSMOV AX,4576H指令的存储形式指令的存储形式45 76 AX 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言2. 寄存器寻址方式寄存器寻址方式定义:定义:。把在指令中指出所使用寄存器(即:。把在指令中指出所使用寄存器(即:寄存器的助记符)的寻址方式称为寄存器寻址方式。寄存器的助记符)的寻址方式称为寄存器寻址方式。 汇编格式:汇编格式:R R 其中其中R
10、 R表示寄存器名。表示寄存器名。功能:功能:操作数直接存放在寄存器操作数直接存放在寄存器R R中。中。图形表示:图形表示:寄存器寄存器 R指令指令操作数操作数寄存器寄存器 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言指令中可以引用的寄存器及其符号名称如下:指令中可以引用的寄存器及其符号名称如下: 8位寄存器有:位寄存器有:等;等; 16位寄存器:位寄存器:等;等; v 源操作数是寄存器寻址方式源操作数是寄存器寻址方式 如:如:ADD VARW, AXMOV VARB, BH等。等。 其中:其中:VARW和和VARB是字和字节类型的内存变量。是字
11、和字节类型的内存变量。v目的操作数是寄存器寻址方式目的操作数是寄存器寻址方式 如:如:ADD BH, 78hADD AX, 1234hv源和目的操作数都是寄存器寻址方式源和目的操作数都是寄存器寻址方式 如:如: MOV , MOV , 等。等。 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言注:注:。通常情况下,。通常情况下,提倡在编写提倡在编写编语言程序时,应尽可能地使用寄存编语言程序时,应尽可能地使用寄存器寻址方式,但也不要把它绝对化。器寻址方式,但也不要把它绝对化。 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬
12、兆 汇编语言汇编语言【例【例3.2】下列程序执行后,(】下列程序执行后,(AX)=?,(?,(BX)=? MOV AX,1234H MOV BX,5678H ADD AX,BX解释:该程序中解释:该程序中MOV指令为数据传送指令操作符,指令为数据传送指令操作符,ADD指指令为加法指令操作符,三条指令皆为双操作数指令。第一、令为加法指令操作符,三条指令皆为双操作数指令。第一、二条指令二条指令AX、BX皆为目的操作数地址,为寄存器寻址方式。皆为目的操作数地址,为寄存器寻址方式。第三条指令中,第三条指令中,AX为目的操作数地址,为目的操作数地址,BX为源操作数地址。为源操作数地址。源地址和目的地址皆
13、为寄存器寻址方式。源地址和目的地址皆为寄存器寻址方式。执行:执行:1234HAX 5678HBX (AX)+(BX)AX执行后:(执行后:(AX)=68ACH,(,(BX)=5678H 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言3. 直接寻址方式直接寻址方式定义:定义:,这种寻址方式为直接寻址方式。,这种寻址方式为直接寻址方式。 汇编格式:汇编格式:。功能:功能:指令下一字单元的内容是操作数的偏移地址指令下一字单元的内容是操作数的偏移地址EA。图形表示:图形表示:EA指令指令操作数操作数存储器存储器段基地址段基地址 安徽理工大学安徽理工大学
14、计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言【例【例3.3】执行指令:】执行指令:MOV BX ,1234H 设(设(DS)=2000H。执行后:(执行后:(AX)=?图示:图示:执行:(执行:(21234H)BX执行后:(执行后:(BX)=5312H 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言 在通常情况下,操作数存放在数据段中,所以,在通常情况下,操作数存放在数据段中,所以,但,但如果使用段超越前缀,那么,操作数可存放在其它段。如果使用段超越前缀,那么,操作数可存放在其它段。 例如:例如:MOVMOVESES:10
15、00H:1000H, AX AX 注意:注意:,直接寻,直接寻址的地址要写在括号址的地址要写在括号“”,“”内。在程序中,内。在程序中,如:,如:MOV BX, VARWMOV BX, VARW,其中,其中,VARWVARW是内存字变量。是内存字变量。 试比较下列指令中源操作数的寻址方式(试比较下列指令中源操作数的寻址方式(VARWVARW是内存字是内存字变量):变量): MOVAX, 1234H MOVAX, 1234H 前者是立即寻址,后者是直接寻址前者是立即寻址,后者是直接寻址 MOVAX, VARW MOVAX, VARW 两者是等效的,均为直接寻址两者是等效的,均为直接寻址 安徽理工
16、大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言4. 寄存器间接寻址方式寄存器间接寻址方式定定 义:义:,操作数的有效地址操作数的有效地址用用SI、DI、BX和和BP等四个寄存器之一来指定,称这种寻址方式为寄存等四个寄存器之一来指定,称这种寻址方式为寄存器间接寻址方式。器间接寻址方式。 汇编格式:汇编格式:R功功 能:能:操作数存放在存储器,寄存器操作数存放在存储器,寄存器R存放操作数的偏移存放操作数的偏移地址地址EA。图形表示:图形表示:EA寄存器寄存器操作数操作数存储器存储器段基地址段基地址基址或变址寄存器基址或变址寄存器指令指令 安徽理工大学安徽理工
17、大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言【例【例3.4】假设有指令:】假设有指令:MOV BX, DI,在执行时,(,在执行时,(DS)=1000H,(,(DI)=2345H,存储单元,存储单元12345H的内容是的内容是4354H。问。问执行指令后,执行指令后,BX的值是什么?的值是什么?解:寄存器解:寄存器DI的值不是操作数,而是操作数的地址。的值不是操作数,而是操作数的地址。该操作数的物理地址应由该操作数的物理地址应由DS和和DI的值形成,即:的值形成,即: 所以,该指令的执行效果是:所以,该指令的执行效果是:把从物理地址为把从物理地址为12345H开始
18、的开始的一个字的值传送给一个字的值传送给BX。 OP CS DS54H43H 10000H 12345H DS:1000HDI:2345H 12345H43 54 BX 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言在不使用段超越前缀的情况下,有下列规定:在不使用段超越前缀的情况下,有下列规定: v若有效地址用若有效地址用SI、DI和和BX等之一来指定,则其缺省的段寄存等之一来指定,则其缺省的段寄存器为器为DS;v若有效地址用若有效地址用BP来指定,则其缺省的段寄存器为来指定,则其缺省的段寄存器为SS(即:堆(即:堆栈段)。栈段)。该寻址方式物理
19、地址的计算方法如下:该寻址方式物理地址的计算方法如下: 或或 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言5. 寄存器相对寻址方式寄存器相对寻址方式定定 义:义:操作数在存储器中,其有效地址是一个基址寄存器操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)或变址寄存器或变址寄存器(SI、DI)的内容和指令中的的内容和指令中的8位位/16位偏移量之和。位偏移量之和。 汇编格式:汇编格式:XR(X表示位移量,是表示位移量,是8位或位或16位二进制补码表示位二进制补码表示的有符号数)的有符号数)功功 能:能:操作数存放在存储器,寄存器操作数存
20、放在存储器,寄存器R的内容加位移量的内容加位移量X为为操作数的偏移地址操作数的偏移地址EA。图形表示如下:图形表示如下:地址地址寄存器寄存器操作数操作数存储器存储器段基地址段基地址基址或变址寄存器基址或变址寄存器 位移量位移量指令指令EA 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言【例【例3.5】假设指令:】假设指令:MOV BX, SI+100H,在执行它时,(,在执行它时,(DS)=1000H,(,(SI)=2345H,内存单元,内存单元12445H的内容为的内容为2715H,问该指,问该指令执行后,令执行后,BX的值是什么?的值是什么?
21、解:解:EA=(SI)+100H=2345H+100H=2445H PA=(DS)*16+EA=1000H*16+2445H=12445H。所以,该指令的执行效果是:所以,该指令的执行效果是:把从物理地址为把从物理地址为12445H开始开始的一个字的值传送给的一个字的值传送给BX。OP CS DS15H27H 10000H 12445H SI:2345H 100H EA:2445H DS:1000H 12445H27 15 BX 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言6. 基址变址寻址方式基址变址寻址方式定定 义:义:操作数在存储器中,其
22、有效地址是一个基址寄存器操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)和一个变址寄存器和一个变址寄存器(SI、DI)的内容之和。的内容之和。 汇编格式:汇编格式: BR+IR功功 能:能:操作数存放在存储器,操作数存放在存储器,BR的内容加的内容加IR的内容是操作数的偏移地的内容是操作数的偏移地址址EA。图形表示:图形表示:操作数操作数 存储器存储器段基地址段基地址基址寄存器基址寄存器 变址寄存器变址寄存器指令指令基址值基址值基址寄存器基址寄存器变址值变址值变址寄存器变址寄存器EA 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言【例【
23、例3.6】假设指令:】假设指令:MOV BX, BX+SI,在执行时,(,在执行时,(DS)=1000H,(,(BX)=2100H,(,(SI)=0011H,内存单元,内存单元12111H的内容为的内容为1234H。问该指令执行后,。问该指令执行后,BX的值是什么?的值是什么? 解:操作数的物理地址解:操作数的物理地址PA为:为: PA=(DS)*16+ (BX)+(SI) =1000H*16+ 2100H+0011H =12111H所以,该指令的执行效果是:所以,该指令的执行效果是:把从物理地址为把从物理地址为12111H开始开始的一个字的值传送给的一个字的值传送给BX。 OP CS DS3
24、4H12H 10000H 12111H BX:2100H SI:0011H EA:2111H DS:1000H 12111H12 34 BX 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言7. 相对基址变址寻址方式相对基址变址寻址方式定定 义:义:操作数在存储器中,其有效地址是一个基址寄存器操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)的的值、一个变址寄存器值、一个变址寄存器(SI、DI)的值和指令中的的值和指令中的8位位/16位偏移量之和。位偏移量之和。 汇编格式:汇编格式:X BR+IR功功 能:能:操作数存放在存储器,操作数存放
25、在存储器,BR内容加内容加IR内容加位移量内容加位移量X是操作数的偏是操作数的偏移地址移地址EA。图形表示:图形表示:存储器存储器基址值基址值基址寄存器基址寄存器操作数操作数段基地址段基地址基址寄存器基址寄存器 变址寄存器变址寄存器 位移量位移量指令指令变址值变址值变址寄存器变址寄存器EA 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言【例【例3.7】假设指令:】假设指令:MOV AX, BX+SI+200H,在执行时,(,在执行时,(DS)=1000H,(,(BX)=2100H,(,(SI)=0010H,内存单元,内存单元12310H的内容的内
26、容为为1234H。问该指令执行后,。问该指令执行后,AX的值是什么?的值是什么? 解:该操作数的物理地址应由解:该操作数的物理地址应由DS和和EA的值形成,即:的值形成,即:PA=12310H所以,该指令的执行效果是:所以,该指令的执行效果是:把从物理地址为把从物理地址为12310H开始开始的一个字的值传送给的一个字的值传送给AX。 OP CS DS34H12H 10000H 12310H BX:2100H SI:0010H 0200H EA:2310H DS:1000H 12310H12 34 AX 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语
27、言v跨段越问题跨段越问题 凡是使用寄存器为凡是使用寄存器为BX、SI、DI时,其默认段为时,其默认段为DS,使用,使用BP时,默认段时,默认段为为SS。该规定为系统默认状态。当要否定默认状态,到非约定段寻找操作数。该规定为系统默认状态。当要否定默认状态,到非约定段寻找操作数时,必须用跨段前缀指明操作数的段寄存器名。时,必须用跨段前缀指明操作数的段寄存器名。汇编格式:汇编格式:功能:功能:冒号冒号“:”之前的段寄存器名指明操作数所在的段。之前的段寄存器名指明操作数所在的段。【例【例3.8】 MOV AX,DS:BP MOV CX,SS:SI 该例中,该例中,DS:,:,SS:均为跨段前缀,此时默
28、认状态无效,操作数的物:均为跨段前缀,此时默认状态无效,操作数的物理地址理地址PA由段寄存器内容左移由段寄存器内容左移4位加偏移位加偏移EA形成。上述形成。上述2条指令的源操作数条指令的源操作数物理地址分别为:物理地址分别为: PA1 =(DS)左移)左移4位位+BP PA2 =(SS)左移)左移4位位+ SI 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言3.1.2 与转移地址有关的寻址方式与转移地址有关的寻址方式 用来确定转移指令及转子(用来确定转移指令及转子(call)指令的转向地址。转移)指令的转向地址。转移地址是由各种寻址方式得到的有效
29、地址和段地址相加而成的,地址是由各种寻址方式得到的有效地址和段地址相加而成的,有效地址存入有效地址存入IP寄存器中,段地址指定为寄存器中,段地址指定为CS段寄存器内容。段寄存器内容。 段内寻址段内寻址 段内直接寻址段内直接寻址 段内间接寻址段内间接寻址 段间寻址段间寻址 段间直接寻址段间直接寻址 段间间接寻址段间间接寻址 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言(1) 段内直接寻址段内直接寻址转向的有效地址转向的有效地址 = 当前(当前(IP) + 位移量(位移量(8bit/16bit) 位移量位移量IP寄存器寄存器EA 安徽理工大学安徽理
30、工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言【例例3.8】 (1)JMP SHORT QUEST 其中其中QUEST表示转移的符号地址,操作符表示转移的符号地址,操作符SHORT表示是个表示是个8位带符号数,数的范围是位带符号数,数的范围是80H 7FH,即,即 -128 +127。它只能。它只能相对于当前相对于当前IP(转移指令的下一条指令的首地址)所指的位置作(转移指令的下一条指令的首地址)所指的位置作-128 +127范围内跳转,所以称为范围内跳转,所以称为。(2)JMP NEAR PTR PROGA 其中其中PROGA表示转移的符号地址,操作符表示转移的
31、符号地址,操作符NEAR PRT表示表示是个是个16位带符号数,数的范围是位带符号数,数的范围是8000H 7FFFH,即,即 -32768 +32767。它只能相对于当前。它只能相对于当前IP所指的位置作所指的位置作-32768 +32767范围范围内跳转,所以称为内跳转,所以称为近跳转近跳转。 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言(2) 段内间接寻址段内间接寻址 转向的有效地址是一个寄存器或存储单元的内容。可用转向的有效地址是一个寄存器或存储单元的内容。可用除立即数以外的任何一种数据寻址方式得到,所得到的转向除立即数以外的任何一种数
32、据寻址方式得到,所得到的转向的有效地址取代的有效地址取代IP寄存器的内容。寄存器的内容。转向的有效地址转向的有效地址指令指令数据寻址方式数据寻址方式或或根据数据寻址根据数据寻址方式计算出方式计算出EA值值转向的有效地址转向的有效地址存储单元存储单元 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言 【例【例3.9】 已知已知 TABLE=20A2H ,(,(BX)=1256H ,(,(SI)=528EH,(DS)=2000H ,(,(232F8H)= 3280H ,(,(264E4H)=2450H JMP BX ; (IP)=1256H JMP W
33、ORD PTR TABLEBX ; (IP)=3280H JMP WORD PTR BXSI ; (IP)=2450H 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言(3) 段间直接寻址段间直接寻址用指令中提供的转向段地址和偏移地址取代用指令中提供的转向段地址和偏移地址取代CS 和和 IP。指令指令偏移地址偏移地址IP寄存器寄存器段地址段地址CS寄存器寄存器 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言【例【例3.9】JMPFAR PTR NEXTROUNT32EA01001010CS=0000H
34、 CS0000002000 IPIP=2000H CSCS=1000HNEXTROUNTIP=0132H1013210000新新IP新新CS 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言(4) 段间间接寻址段间间接寻址用存储器中的两个相继字的内容取代用存储器中的两个相继字的内容取代CS 和和 IP,存储,存储单元的地址可用存储器寻址方式得到。单元的地址可用存储器寻址方式得到。 指令指令数据寻址方式数据寻址方式根据数据寻址根据数据寻址方式计算出方式计算出EA值值转向的有效地址转向的有效地址转向的有效地址转向的有效地址存储器中的两个相继字存储器中的
35、两个相继字IPCS 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言【例【例3.10】 JMPDWORD PTR INTERS+BX 如如DS=3000H,BX=1200H,INTERS=0020H, 则存储单元的物理地址则存储单元的物理地址PA=30000+0020+1200=31200H 指令执行前,指令执行前,CS=0000H,IP=1000H,(,(31220H)=40H, (31221)=01H,(,(31222H)=00H,(,(31223)=10H。 指令执行后,指令执行后,CS=1000H,IP=0140H,(,(31220H)=4
36、0H, (31221)=01H,(,(31222H)=00H,(,(31223)=10H。 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言指令存储和执行情况:指令存储和执行情况:JMPDWORDPTRINTERBXCS=0000H CS0000001000 IPIP=1000H CSCS=1000H IPIP=0140H1014010000代码段代码段01400010DS=3000H DS3000031220INTER+BX数据段数据段新新IP新新CS312213122231223 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系
37、李敬兆李敬兆 汇编语言汇编语言3.2 程序占有的空间和执行时间程序占有的空间和执行时间 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言3. 80 x86的指令系统的指令系统80X86指令系统分为以下指令系统分为以下6组:组: 在学习汇编指令时,指令的功能是我们学习和掌握的重点,但在学习汇编指令时,指令的功能是我们学习和掌握的重点,但要准确、有效地运用这些指令,我们还要熟悉系统对每条指令的一要准确、有效地运用这些指令,我们还要熟悉系统对每条指令的一些规定或约束。因此,对指令要掌握以下几个方面内容:些规定或约束。因此,对指令要掌握以下几个方面内容:
38、安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言 数据传送指令数据传送指令。它相对于高级语言里的赋值语句。它相对于高级语言里的赋值语句。 :MOV PUSH POP : IN OUT XLAT: LEA LDS LES: LAHF SAHF PUSHF POPF:CBW CWD 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言vMOV 传送指令传送指令格格 式:式: 其中:其中:RegRegister(寄存器),(寄存器),MemMemory(存储器),(存储器),ImmImmediate(立即数),它
39、们(立即数),它们可以是可以是8位、位、16位。位。 功功 能:能:指令的功能是指令的功能是把源操作数(第二操作数)的值传给目把源操作数(第二操作数)的值传给目的操作数(第一操作数)。的操作数(第一操作数)。指令执行后,目的操作数的值被改变,指令执行后,目的操作数的值被改变,而源操作数的值不变。在存储单元是该指令的一个操作数时,该而源操作数的值不变。在存储单元是该指令的一个操作数时,该操作数的寻址方式可以是任意一种存储单元寻址方式。操作数的寻址方式可以是任意一种存储单元寻址方式。 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言段寄存器段寄存器CS
40、、DS、SS、ES通用寄存器通用寄存器8位或者位或者16位位存储器存储器立即数立即数8位或者位或者16位位 在汇编语言中,主要的数据传送方式如下图所在汇编语言中,主要的数据传送方式如下图所示。虽然一条示。虽然一条MOV指令能实现其中大多数的数据传指令能实现其中大多数的数据传送方式,但也存在送方式,但也存在MOV指令不能实现的传送方式。指令不能实现的传送方式。 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言 对对MOV指令有以下几条具体规定,其中有些规定对其它指令指令有以下几条具体规定,其中有些规定对其它指令也同样有效。也同样有效。 (1),要同为
41、,要同为8位、位、16位,位, 如:如:MOV BL,AX等是不正确的;等是不正确的; (2),如:,如:MOV ES,DS等;等; (3), 如:指令如:指令MOV CS, AX等不正确,但指令等不正确,但指令MOV AX,CS等等是正确的;是正确的; (4), 如:如:MOV DS,100H等;等; (5),如:,如:MOV 100H,AX等;等; (6); (7), 如:如:MOV VARA,VARB等,其中等,其中VARA和和VARB是同数据是同数据类型的内存变量。类型的内存变量。 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言vPUSH
42、进栈指令进栈指令 堆栈是一个重要的数据结构,它具有堆栈是一个重要的数据结构,它具有“先进后出先进后出”的特点,的特点,通常用来保存程序的返回地址通常用来保存程序的返回地址。它主要有两。它主要有两大类操作:大类操作:进栈操作和出栈操作进栈操作和出栈操作。 指令格式:指令格式: 一个字进栈,系统自动完成两步操作:一个字进栈,系统自动完成两步操作: SPSP-2,(,(SP)操作数操作数; 功功 能:能:将寄存器、段寄存器或存储器中的一将寄存器、段寄存器或存储器中的一个字数据压入堆栈,堆栈指针减个字数据压入堆栈,堆栈指针减2。 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李
43、敬兆 汇编语言汇编语言【例】【例】PUSH AX2816A7SS=5000H SS50000堆栈段堆栈段525005250152502SP=2500H SP31 25AX283116A7SS=5000H SS50000堆栈段堆栈段525005250152502SP=24FEH SP2531 25AX525FF525FE(1)执行前)执行前(2)执行后)执行后 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言vPOP进栈指令进栈指令: 弹出一个字,系统自动完成两步操作:弹出一个字,系统自动完成两步操作: ; :将栈顶元素弹出送至某一寄存器、段寄将栈顶
44、元素弹出送至某一寄存器、段寄存器(除存器(除CS外)或存储器,堆栈指针加外)或存储器,堆栈指针加2。 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言【例】【例】POP BX(1)执行前)执行前(2)执行后)执行后486B9A28 SS50000堆栈段堆栈段510015100251003SP=1000H SP75 C1BX51000486B9A28 SS50000堆栈段堆栈段510015100251003SP=1002H SP48 6BBX51000 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言vI
45、N输入指令输入指令 输入指令用来输入指令用来。它有几种形式:。它有几种形式: 长格式:长格式: 执行操作:(执行操作:(AL) (PORT) (字节)(字节) (AX) (PORT+1, PORT)(字)(字) 短格式:短格式: 执行操作:(执行操作:(AL)(DX) (字节)(字节) (AX)(DX)+1,(DX)(字)(字) 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言 注意:注意:该指令的作用是从端口中读入一个字节该指令的作用是从端口中读入一个字节或字,并保存在寄存器或字,并保存在寄存器AL或或AX中。中。DX中,然后在指令中由中,然后在
46、指令中由DX来来给出其端口地址。给出其端口地址。 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言例如:例如: ;从端口;从端口60H读入一个字节到读入一个字节到AL中中;把端口;把端口20H、21H按按“高高低低高高低低”组成组成的的 字读入字读入AX;从端口;从端口2F8H读入一个字节到读入一个字节到AL中中;把端口;把端口2F8H、2F9H按按“高高低低高高低低”组组成成 的字读入的字读入AX 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言vOUT输出指令输出指令 输出指令用来输出指令用来,它有
47、几,它有几种形式:种形式:v长格式:长格式: (字节)(字节) (字)(字) 执行操作:执行操作: (字节)(字节) 字)字)v短格式:短格式: (字节)(字节) (字)(字) 执行操作:执行操作: (字节)(字节) 字)字) 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言注意:注意:该指令的作用是把寄存器该指令的作用是把寄存器AL或或AX的内容输出到指定端口。的内容输出到指定端口。如果某输出设备的端口地址在如果某输出设备的端口地址在0255范围之内,那么,可在指令范围之内,那么,可在指令OUT中直接给出,否则,要把该端口地址先存入寄存器中直接给
48、出,否则,要把该端口地址先存入寄存器DX中,中,然后在指令中由然后在指令中由DX来给出其端口地址。来给出其端口地址。例如:例如:;把;把AL的内容输出到端口的内容输出到端口61H中中;把;把AX的内容输出到端口的内容输出到端口20H、21H中中;把;把AL的内容输出到端口的内容输出到端口3C0H中中;把;把AX的内容输出到端口的内容输出到端口3C0H、3C1H中中 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言vXLAT 换码指令换码指令转换指令有转换指令有BX和和AL。: 或或 : :其功能是:其功能是把把BX的值作为内存字节数的值作为内存字节
49、数组首地址、下标为组首地址、下标为AL的数组元素的值传送给的数组元素的值传送给AL。 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言n例:例: ; (BX)=0040H 指令执行后指令执行后 (AL)=33H32H31H33HDS=F000H DS数据段数据段F0040F0041 (AL)=3table30H (BX)F0042F0043把把BX的值作为内存字的值作为内存字节数组首地址、下标节数组首地址、下标为为AL的数组元素的值的数组元素的值传送给传送给AL。 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语
50、言汇编语言v地址传送指令地址传送指令取有效地址指令取有效地址指令LEA: 指令指令LEA是是。其指令格式如下:。其指令格式如下: 该指令该指令通常用来对通常用来对指针或变址寄存器指针或变址寄存器BX、DI或或SI等置初值之用等置初值之用。 取取段寄存器指令:段寄存器指令: 该组指令的功能是该组指令的功能是。其指令格式如下:。其指令格式如下: 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言例:例: 40 H00 H00 H30 H TABLE 3000H:1000H 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编
51、语言汇编语言v标志寄存器传送指令标志寄存器传送指令标志送标志送AH指令:指令: LAHF 执行操作:(执行操作:(AH)(FLAGS的低字节)的低字节) AH送标志寄存器指令:送标志寄存器指令:SAHF执行操作:执行操作: (FLAGS的低字节)的低字节)(AH) 标志进栈指令:标志进栈指令:PUSHF 执行操作:执行操作: (SP)(SP) - 2 (SP)+1, (SP)(FLAGS)标志出栈标志出栈指令:指令:POPF执行操作:执行操作: (FLAGS)(SP)+1,(SP) (SP)(SP)+ 2 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇
52、编语言v类型转换指令指令类型转换指令指令 CBW AL AX 执行操作:执行操作: CWD AX (DX,AX) 执行操作:执行操作: 例例: CBW ; (AX)=0045H CWD ; (DX)=0FFFFH (AX)=0BA45H 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言3.算术指令算术指令 算术运算指令是反映算术运算指令是反映CPU计算能力的一组指令,也是编程时常计算能力的一组指令,也是编程时常使用的一组指令。它包括:加、减、乘、除及其相关的辅助指令。使用的一组指令。它包括:加、减、乘、除及其相关的辅助指令。 该组指令的操作数可以是
53、该组指令的操作数可以是8位、位、16位。当存储单元是该类指令的操位。当存储单元是该类指令的操作数时,作数时,。v 加法指令加法指令 ADD、ADC、INCv 减法指令减法指令 SUB、SBB、DEC、NEG、CMPv 乘法指令乘法指令 MUL、IMUL v 除法指令除法指令 DIV、IDIVv 十进制调整指令十进制调整指令 DAA、DAS、 AAA、AAS、AAM、AAD 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言1. .加法指令加法指令 v 加法指令:加法指令: ADD DST,SRC功能:将目的操作数与源操作数相加,结果存入目的地址中,源
54、地功能:将目的操作数与源操作数相加,结果存入目的地址中,源地址的内容不改变。址的内容不改变。执行操作:执行操作:(DST) (SRC)+(DST)v 带进位加法指令:带进位加法指令: ADC DST,SRC 功能:将目的操作数加源操作数再加低位进位,结果送目的地址。功能:将目的操作数加源操作数再加低位进位,结果送目的地址。执行操作:执行操作:(DST) (SRC)+(DST)+ CFv 加加1指令:指令: INC OPR 功能:将目的操作数加功能:将目的操作数加1,结果送目的地址。,结果送目的地址。执行操作:执行操作: (OPR) (OPR)+ 1注意注意: 除除INC指令不影响指令不影响CF
55、标志外,均对条件标志位有影响。标志外,均对条件标志位有影响。 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言v 标志寄存器标志寄存器FLAGS的介绍的介绍指令的执行与标志有很大关系。指令的执行与标志有很大关系。标志分成两类:标志分成两类:n 状态标志状态标志用来记录程序运行结果的状态信息,许多指令的用来记录程序运行结果的状态信息,许多指令的执行都将相应地设置它。它们分别是:执行都将相应地设置它。它们分别是: CF ZF SF PF OF AFn 控制标志控制标志可由程序根据需要用指令设置,用于控制处理器可由程序根据需要用指令设置,用于控制处理器执
56、行指令的方式。它们分别是:执行指令的方式。它们分别是: DF IF TF 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0OF DF IF TF SF ZF AF PF CF 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言 当运算结果的最高有效位有进位(加法)或借位当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置(减法)时,进位标志置1,即,即CF = 1;否则;否则CF = 0。 例如:例如: 3AH + 7CHB6H,没有进位:,没有进位:CF = 0 AAH + 7CH(1)26H,有进位:,有进位
57、:CF = 1 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言若运算结果为若运算结果为0,则,则ZF = 1,否则,否则ZF = 0。例如:例如: 3AH + 7CHB6H,结果不是零:,结果不是零:ZF = 0 86H + 7CH(1)00H,结果是零:,结果是零:ZF = 1注意:注意:ZF为为1表示的结果是表示的结果是0。 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言 运算结果最高位为运算结果最高位为1,则,则SF = 1;否则;否则SF = 0。例如:例如: 3AH + 7CHB6H,最高
58、位,最高位D71:SF = 1 86H + 7CH(1)00H,最高位,最高位D70:SF = 0注意:有符号数据利用最高有效位表示数据的符号。所注意:有符号数据利用最高有效位表示数据的符号。所以,最高有效位就是符号标志的状态。以,最高有效位就是符号标志的状态。 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言 当运算结果最低字节中当运算结果最低字节中“1”的个数为零或偶数时,的个数为零或偶数时,PF = 1;否则;否则PF = 0。例如:例如: 3AH + 7CHB6H10110110B, 结果中有结果中有5个个1,是奇数:,是奇数:PF = 0
59、注意:注意:PF标志仅反映最低标志仅反映最低8位中位中“1”的个数是偶或奇,即的个数是偶或奇,即使是进行使是进行16位字操作。位字操作。 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言 运算时运算时D3位(低半字节)有进位或借位时,位(低半字节)有进位或借位时,AF = 1;否则否则AF = 0。 例如:例如: 3AH + 7CHB6H,D3有进位:有进位:AF = 1 注意:这个标志主要由处理器内部使用,用于十进制算术注意:这个标志主要由处理器内部使用,用于十进制算术运算指令中,用户一般不必关心。运算指令中,用户一般不必关心。 安徽理工大学安徽
60、理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言 若算术运算的结果有溢出,则若算术运算的结果有溢出,则OF=1;否则;否则 OF0。例如:例如: 3AH + 7CHB6H,产生溢出:,产生溢出:OF = 1 AAH + 7CH(1)26H,没有溢出:,没有溢出:OF = 0问题:问题:什么是溢出?什么是溢出?溢出和进位有什么区别?溢出和进位有什么区别?如何判断是否溢出?如何判断是否溢出? 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言举例举例: n=8 bit 带符号数(带符号数(-128127) , 无符号数(无符
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年地板护理品项目立项申请报告模稿
- 2025年水泥掺合剂项目提案报告
- 2024-2025学年延安市子长县数学三年级第一学期期末联考模拟试题含解析
- 2024-2025学年新疆第二师铁门关市三年级数学第一学期期末学业水平测试试题含解析
- 关于三年级数学说课稿汇编五篇
- 2025年油炸类制品项目提案报告模板
- 2025年新型铁合金用封接玻璃项目规划申请报告模板
- 大学毕业顶岗实习报告九篇
- 加薪申请书模板锦集6篇
- 初二数学教学工作计划范文5篇
- 【中图】八上地理知识点总结
- 2024年资格考试-注册质量经理考试近5年真题附答案
- 密码行业职业技能竞赛参考试题及答案
- 浙江省台州市2023-2024学年七年级上学期期末数学试题(含答案)
- 风能发电对养殖场废弃物处理的影响
- 2024年秋新人教版地理七年级上册课件 第一章 地球 1.3.1 地球的自转
- 2024年新高考英语全国卷I分析教学设计
- 检验科生物安全手册
- 10MWP太阳能光伏并网发电电站项目电站的技术设计方案
- 2024-2025学年高中英语学业水平合格性考试模拟测试卷五含解析
- 2024新冀教版英语初一上单词默写表
评论
0/150
提交评论