第3章 8086寻址方式和指令系统
- 格式:ppt
- 大小:2.67 MB
- 文档页数:85
第3章8086的寻址方式和指令系统【课前思考】(1)什么是指令和指令系统?指令在什么时候由哪部分来执行?(2)8086汇编语言指令由几部分组成?各部分的作用是什么?(3)8086汇编语言指令可以有几个操作数?指令中指定的操作数可能存放在哪里?(4)什么是寻址方式?8086汇编语言提供了几种寻址方式?(5)各种寻址方式所确定的有效地址是什么?(6)在存储器寻址方式中,为什么有时候要使用段跨越前缀?(7)8086机器语言指令由哪几个字节组成?为什么说汇编语言指令与机器指令是一一对应的?(8)8086的指令系统按功能可分为几组?(9)每条指令的功能、助记符、所支持的寻址方式、对标志位的影响、需要预置的参数以及隐含使用的或限定使用的寄存器等。
【学习目标】熟练掌握8086各种寻址方式;熟悉8086常用指令的功能【学习指南】学习寻址方式时,要注意各种寻址方式所指定的操作数或操作数地址是什么;各种寻址方式形成操作数地址时,段寄存器和基址、变址寄存器的组合;各种寻址方式限定使用的寄存器。
学习指令系统时,要注意每条指令的功能,所支持的寻址方式、对标志位的影响、需要预置的参数以及隐含使用的或限定使用的寄存器等。
【难重点】重点理解8086常用指令的功能,熟悉8086的各种寻址方式,这是进行汇编语言程序设计的基础。
【知识点】3.1 寻址方式3.3 指令系统第一节 8086的寻址方式指令的一般格式:例如,单操作数指令就是一地址指令,它只需要指定一个操作数,如加1指令只需要指出需要加1 的操作数。
大多数运算型指令可使用三地址指令:除给出参加运算的两个操作数外,还指出运算结果的存放地址。
也可使用二地址指令,此时分别称两个操作数为源操作数(source)和目的操作数(destination)。
尽管在指令执行前这两个操作数都是输入操作数,但指令执行后将把运算结果存放到目的操作数的地址之中。
8086的大多数运算型指令就采用这种二地址指令。
汇编语言复习辅导第三章8086指令系统和寻址方式应掌握编写一个完整的汇编语言程序所必需的知识及其相应概念:(1)汇编语言程序的格式(2)常用伪指令(伪操作)(3)8086寻址方式(4)8086指令系统1汇编语言程序格式. 80x86的逻辑段:堆栈段、数据段、附加段、代码段(1)完整段定义;- - - - - - - - - - - - - - - - - - - - - - -STSEG SEGMENT ;定义堆栈段DB 64 DUP(?)STSEG ENDS;- - - - - - - - - - - - - - - - - - - - - - -D T SE G S E G M E N T;定义数据段DATA1 DB 36HDATA2 DB 4BHS U M D B?D T SE G E N D S;-----------------------CDSEG SEGMENT ;定义代码段M A I N P R O C F A R ASSUMECS:CDSEG,DS:DTSEG,SS:STSEGSTART: MOV AX,DTSEG MOV DS,AX;设置数据段地址M O V A L,D A T A1;用户程序M O V B L,D A T A2A D D A L,B L M O V S U M,A LMOV AH,4CH ;返回DOSINT 21HM A I N E N D PCDSEG ENDSEND START ;汇编结束(2)简化段格式:·M O D E L S M A L L;存储模型·S T A C K100H;定义堆栈段及大小·D A T A;定义数据段V A R1D B?·C O D E;定义代码段M A I N P R O C F A R;定义过程S T A R T:M O VD X,@D A T A;设置数据段M O V D S,A X; 地址…M O V A X,4C O O H;返回DOSI N T21HM A I N E N D P;过程结束E N D S T A R T;汇编结束2.常用伪操作(1)程序结构伪操作段定义伪操作:段名S E G M E N T……段名E N D S过程定义伪操作:过程名P R O C[N E A R/F A R]……过程名E N D P程序开始和结束伪操作:T I T L E程序名----程序说明(<60个A S C I I字符)E N D[S T A R T]段分配伪操作:A S S U M E C S:代码段名,D S:数据段名A S S U M E S S:堆栈段名,E S:附加段名(2) 数据类型及数据定义伪操作•O R G指定数据的存储地址或代码段的起始地址例: ORG 100H 例: ORG 100HDATA1 DB 100 START: MOV AX,BX•D B定义字节,其后的数据存储在一个字节中•D W定义字,对其后的数据分配2个字节,数据的低8位存放在低字节,高8位存放在高字节; List File for DD Examples00A0O R G 00A0H00A0F F030000D A T A13D D102300A45C960800D A T A14D D10001001011001011100B00A8F2572A5C D A T A15D D5C2A57F2H00A C2300000089470300D A T A16D D23H,34789H,65533F D F F0000•D Q定义4字,为数据分配8个字节单元•D T定义5字,为压缩的B C D数据分配存储单元例如:D A T A D Q1122334455667788HD A T B D T?•D U P按照给定的次数来复制某个(某些)操作数例如:D A T C D W32D U P(?)D A T D D B5D U P(0,8D U P(1))•E Q U赋值伪操作•=C O U N T E Q U25C O U N T E RD B C O U N TM O V A H,C O U N TT E M P=25M O V A H,T E M PT E M P=T E M P+1M O V A L,T E M P(3)属性伪操作•PTR指定操作数的类型属性M O V A X,W O R D P T R D A T BM O V B L,B Y T E P T R D A T W•LABEL定义变量或标号的类型属性B_D A T L A B E L B Y T EW_D A T D W50D U P(?)3. 8086寻址方式寻址方式--指令中表示操作数地址的方式,学习时要注意:(1) 正确书写各种寻址方式的汇编格式(2) 清楚各种寻址方式所指定的操作数或操作数地址在何处?( 指令中/ 寄存器中/ 存储器单元中)(3) 各种存储器寻址方式是如何形成操作数的物理地址的?(段寄存器/ 基址、变址寄存器/ 偏移量的组合关系)(4)各种寻址方式限定使用的寄存器<1>与数据有关的寻址方式小结寻址方式操作数地址(PA)指令格式举例立即寻址操作数由指令给出MOVDX, 100H ;(DX)←100H寄存器寻址操作数在寄存器中ADD AX, BX ;(AX)←(AX)+(BX)直接寻址操作数的有效地址由指令直接给出MOV AX, [100] ;(AX)←(100)MOV AX,V AR ;(AX)←(V AR)寄存器间接PA=(DS)×16+(BX)或(SI)或(DI)PA=(SS) ×16+(BP) MOV AX, [BX]; (AX)←((DS)×16+(BX))寄存器PA=(DS)×16+(BX)或(SI)或(DI)+位移量相对寻址PA=(SS) ×16+(BP)+位移量MOV AL, MESS[SI];(AL)←((DS)×16+(SI)+OFFSET MESS)基址变址PA=(DS)×16+(BX)+(SI)或(DI)PA=(SS) ×16+(BP) +(SI)或(DI) MOV AX, [BX+DI];(AX)←((DS)×16+(BX)+(DI))相对基址PA=(DS)×16+(BX)+(SI)或(DI)+位移量变址寻址PA=(SS) ×16+(BP) +(SI)或(DI)+位移量MOV AX, BUFF(BX+DI);(AX)←((DS)×16+(BX)+(DI)+OFFSET BUFF)<2> 与转移地址有关的寻址方式用来确定转移指令及C A L L指令的转向地址。