汇编语言程序设计第三章4课件_第1页
汇编语言程序设计第三章4课件_第2页
汇编语言程序设计第三章4课件_第3页
汇编语言程序设计第三章4课件_第4页
汇编语言程序设计第三章4课件_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

IBM-PC汇编语言程序设计第3章80×86的指令系统和寻址方式第一节、80×86的寻址方式

第二节、程序占有的空间和执行时间

第三节、80×86的指令系统

第一节、80×86的寻址方式

一、指令的概念二、寻址方式取指令、取数、存数时,都要访问内存,被访问内存单元的地址由CPU提供DSESSSCSIP数据暂存器PSW标志寄存器执行部件控制电路指令译码器AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL寄存器组指令队列总线接口控制电路运算器地址加法器、、、指令1指令2指令3指令4、、、数据1数据2数据3、、、地址总线AB数据总线DB控制总线CB地址译码器CPU内存8088编程结构DSESSSCSIP数据暂存器PSW标志寄存器执行部件控制电路指令译码器AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL寄存器组指令队列总线接口控制电路运算器地址加法器8086/8088编程结构BIUEU可表示为:

物理地址PA=段地址+偏移地址

=(段寄存器)×16+偏移地址

=(段寄存器)×10H+偏移地址即段寄存器的内容左移4位,加上偏移地址16位段地址01516位偏移地址015000020位物理地址019测试:(DS)=3000H,(ES)=3100H,(BX)=0100H,问DS:BX=??ES:BX=??2、指令格式操作码指示指令所要完成的操作(即:要做什么?)例如,数据传送、加法和减法等。

注意:操作码是指令中必不可少的部分。一条指令可以没有操作数,但不可以没有操作码。指令一般由操作码和一个或多个操作数组成。如:操作码操作数

MOV

AX,

BX

操作码操作数...操作数按操作码实现的功能,指令可以分为6类。数据传送算术运算逻辑运算串操作控制转移处理机控制

按功能指令分六类操作数指示指令执行过程中所需要的数据,如加法指令中加数和被加数等,这些数据可以是操作数本身,也可以来自某寄存器或存储器单元。一条指令中可以包含一个或多个操作数,指定操作数所在位置的方法称为寻址方式。了解操作数的来源、个数、类型(2)操作数个数

按指令格式中,操作数个数的多少分为三类:无操作数:指令只有一个操作码,没有操作数

如:NOP,HLT,CLC单操作数:指令中给出一个操作数如:INCDI双操作数:指令中给出两个操作数。①无操作数:指令只有一个操作码,没有操作数▲有些操作不需要操作数。如HLT,NOP等处理机控制指令。②单操作数:

指令中给出一个操作数。有两种可能:▲有些操作只需要一个操作数如INCAL;(AL)←(AL)+1▲有些操作将另一个操作数隐含在指令中如MULBL;(AX)←(AL)×(BL)(3)操作数类型8086/8088:有的操作既可对字节操作,又可对字操作有的操作只允许对字操作指令应指明参与操作的数是字节还是字,即操作数的类型。通常操作数的类型可由操作数本身隐含给出。只在特殊情况下需要明确地指明是什么类型的操作。①指令中有寄存器操作数,由寄存器操作数决定类型。

例:MOV[BX],AL

;字节操作,[BX]←ALMOV[BX],AX

;字操作,[BX]←AL,[BX+1]←AH②指令操作数中无寄存器,则由内存操作数的类型决定。value

00H….内存value

00H00H例

value是一个变量(即内存操作数);

若定义value为字节类型

:

则MOVvalue,0是字节操作。

若定义value为字类型

:

则MOVvalue,0是一个字操作。1、与数据有关的寻址方式2、与转移地址有关的寻址方式二、寻址方式寻址方式指的是指令按什么方式给出操作数或与其有关的地址信息。(1)8086的寻址方式共7种寻址方式:1.立即数寻址2.寄存器寻址3.

直接寻址4.

寄存器间接寻址5种与内存单元5.寄存器相对寻址有关的寻址6.

基址变址寻址(存储器操作数)7.

相对基址变址寻址1、与数据有关的寻址方式①立即数寻址

操作数在指令中,取来指令立即可得到操作数。称该操作数为立即数。立即数可以是8位或16位。立即数常用来给寄存器或内存单元赋初值。例:MOVAL,64H;AL←64H MOV AX,2058H;AX←2058HMOVAL,‘A’

立即数只能为整数,且只能做源操作数只能用于

SRC字段

MOV40H,ALSRC和DST的字长一致

MOVAH,3064H××注意:②寄存器寻址方式操作数在寄存器中,指令中指定寄存器名

8位操作数,用8位寄存器:AH、AL、BH、BL、CH、CL、DH、DL16位操作数,用16位寄存器:AX、BX、CX、DX、SP、BP、SI、DI例MOVBL,AH

执行前:(BL)=12H,(AH)=78H

执行后:(BL)=78H(AH)=78H注意:寄存器寻址方式只涉及通用寄存器。字节操作数只涉及AHALBHBLCHCLDHDLSRC和DST的字长一致

MOVAH,BXCS不能用

MOV指令改变

MOVCS,AX××总结:立即数寻址、寄存器寻址的操作数,不用在取完指令后再到内存中取数。DSESSSCSIP数据暂存器PSW标志寄存器执行部件控制电路指令译码器AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL寄存器组指令队列总线接口控制电路运算器地址加法器、、、指令1指令2指令3指令4、、、数据1数据2数据3、、、地址总线AB数据总线DB控制总线CB地址译码器后面提到的

5

中寻址方式,

操作数存放在内存中,取完指令后,还需到内存取数。

指令中给出的是该操作数的地址,包括段地址和偏移地址。DSESSSCSIP数据暂存器PSW标志寄存器执行部件控制电路指令译码器AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL寄存器组指令队列总线接口控制电路运算器地址加法器、、、指令1指令2指令3指令4、、、数据1数据2数据3、、、地址总线AB数据总线DB控制总线CB地址译码器内存单元的地址由段地址和偏移地址构成为减短指令长度,指令中只给出偏移地址的来源,段地址由默认关系给出。

MOVAL,[2000H]默认的段地址为DS内的内容CPU根据偏移地址给出的方式,按默认关系自动选择段寄存器,获取段值,由段值、偏移值构成操作数所在内存单元的物理地址。上例PA=(DS)×10H+2000H即选择DS寄存器的内容为段地址。指令中用[]给出偏移地址。操作数的偏移地址又称有效地址EA(EfficientAddress)按给出偏移地址方式的不同,分为以下5

种:直接寻址

MOVAL,[1000H]寄存器间接寻址

MOVAL,[BX]寄存器相对寻址

MOVAL,[BX+10H]基址变址寻址

MOVAL,[BX+SI]

相对基址变址寻址

MOVAL,[BX+SI+10H]③直接寻址方式存储器操作数的有效地址EA在指令中直接给出OP5820存储器数据段AXALAH代码段00102100020000例:MOVAX,[1000H]对此例,没有用前缀指明操作数在哪一段,则默认在数据段中,设(DS)=2000H,则操作数的物理地址为:

20000+1000=21000H于是访问该存储器取出其内容送AX例:MOVAX,[1000H]

若(DS)=2000H

内存操作数的物理地址为:

PA=(DS)×10H+EA=2000H×10H+1000H=21000H

执行后(AX)=3040H

注意指令MOVAX,[1000H]

与指令MOVAX,1000H有什么不同?默认段寄存器为DS。操作数所在内存单元的物理地址为:

PA=(DS)×10H+EA又例:MOV

BX,ES:[1000H]

则是将ES段的1000H及1001H两单元(字操作,取两个字节)内容取出送BX。

在汇编语言程序中,不直接用数值表示偏移地址,用符号代替数值表示地址,称符号地址(变量名)。例符号buffer表示一个地址。

MOVAX,[buffer]或写成MOVAX,buffer

源操作数为buffer指向的内存单元的内容符号地址(变量名)经汇编连接后,与一个确定的数值地址相对应可用操作符Offset

获取变量的偏移地址。故PA=(DS)×10H+Offsetbuffer

指令执行结果(AX)=0B0AH④寄存器间接寻址

这种寻址方式时,操作数在存储器中,而操作数有效地址由BX、BP、SI和DI中的一个指出,若未用前缀指明,默认关系为A、使用BX、SI、DI,默认段寄存器为DS(BX)PA=(DS)×10H+(SI)(DI)B、使用BP,默认段寄存器为SSPA=(SS)×10H+(BP)注意:寄存器间接寻址中的寄存器只有四个,并不是任意一个寄存器都行。例:

MOVAX,[DI]

若(DS)=3000H(DI)=2000H

则内存操作数的物理地址为:PA=(DS)×10H+(DI)=32000H

执行后(AX)=(32000H)=400BH注意指令MOVAX,[DI]

与指令MOVAX,DI有什么不同?MOVAX,[BX]PA=10hx(DS)+(BX)MOVAX,ES:[BX]PA=10h(ES)+(BX)MOVAX,[BP]PA=10h(SS)+(BP)格式举例:不允许使用AX、CX、DX存放EA(偏移地址,有效地址)MOVAX,[CX]SRC和DST的字长一致

MOVDL,[BX];[BX]指示一个字节单元

MOVDX,[BX];[BX]指示一个字单元适于数组、字符串、表格的处理强调:操作数的有效地址由一个寄存器与一个偏移量相加得到偏移量(相对量)在指令中给出,范围在0000~FFFFH可用的寄存器有BX、DI

、SI、BP,与寄存器间接寻址相同如:MOVAL,[BX+10H]MOVAH,[DI+20H]MOVDL,30H[SI]MOVDH,40H[BP]⑤寄存器相对寻址这样有效地址EA的构成为:默认段寄存器的关系与寄存器间接寻址相同A、使用BX、SI、DI,默认段寄存器为DS(BX)PA=(DS)×10H+(SI)+偏移量

(DI)B、使用BP,默认段寄存器为SSPA=(SS)×10H+(BP)+偏移量

例:

MOVAX,[BX+30H]

若(DS)=2000H(BX)=1000H

则内存操作数的物理地址为:

PA=(DS)×10H+(BX)+30H=21030H

指令执行后:

(AX)=(21030H)=8976H例:

MOVAX,60H[BP]

若(SS)=3000H(BP)=200H

则内存操作数的物理地址为:

PA=(SS)×10H+(BP)+60H=30260H

指令执行后:

(AX)=(30260H)=0ABCH例:MOV AX,[COUNT+BP]

若(SS)==5000H,

(BP)=3000H,

COUNT=2040HOP4855存储器堆栈段AXALAH代码段40205504050000OP位移量COUNT操作码⑥基址加变址寻址

操作数的有效地址由一个基址寄存器与一个变址寄存器之和给出。可用的基址寄存器为BX、BP

变址寄存器为SI、DI

如MOVAL,[BX+SI]MOVAX,[BX][DI]MOVDL,[BP+SI]MOVDX,[BP][DI]

默认段寄存器由基址寄存器决定。A、

基址寄存器为BX,默认段寄存器为DS(SI)PA=(DS)×10H+(BX)+(DI)B、基址寄存器为BP,默认段寄存器为SS(SI)PA=(SS)×10H+(BP)+

(DI)注意:只是默认关系,但是可以通过声明改变例:

MOVAX,[BX+SI]

若(DS)=4000H(BX)=2000H(SI)=100H

则内存操作数的物理地址为:

PA=(DS)×10H+(BX)+(SI)=42100H

指令执行后

(AX)=(42100H)=2345H

格式举例:

MOVAX,[BX][DI]MOVAX,[BX+DI]MOVAX,ES:[BX][SI]注意:必须是一个基址寄存器和一个变址寄存器的组合

MOVAX,[BX][BP]

MOVAX,[SI][DI]⑦相对基址加变址寻址

操作数的有效地址由基址寄存器、变址寄存器、偏移量三者之和给出。可用的寄存器与基址加变址寻址方式相同基址寄存器有BX、BP

变址寄存器有SI、DI如MOVAL,[BX+SI+10H]MOVAX,20H[BX][DI]MOVDL,[BP+SI+30H]MOVDX,40H[BP][DI]

默认段寄存器由基址寄存器决定,与基址加变址寻址相同①基址寄存器为BX,默认段寄存器为DS

(SI)PA=(DS)×10H+(BX)++偏移量

(DI)②基址寄存器为BP,默认段寄存器为SS

(SI)PA=(SS)×10H+(BP)++偏移量

(DI)例:

MOVAX,[BX+SI+10H]

若(DS)=4000H(BX)=3000H(SI)=200H

则内存操作数的物理地址为:

PA=(DS)×10H+(BX)+(SI)+10H=43210H

指令执行后

(AX)=(43210H)=8877H例:MOVAX,[MASK+BX+DI]

设:(DS)=3000H,

(BX)=1346H

(DI)=0500H,

MASK=1234HOP4855存储器数据段AXALAH代码段341232A7AH30000HOP位移量MASK操作码31346H3257AH(DI)(BX)MASK内存操作数按给出偏移地址方式的不同,有以下5种寻址方式:直接寻址

MOVAL,[1000H]寄存器间接寻址

MOVAL,[BX]寄存器相对寻址

MOVAL,[BX+10H]基址加变址寄存器

MOVAL,[BX+SI]

相对基址加变址寄存器

MOVAL,[BX+SI+10H]存储器操作数的段地址按默认关系得到。特点:有BP默认SS

无BP默认DS寻址方式的几点说明:1.不自创寻址方式

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论