汇编语言课件(2)—80x86的指令系统
80X86汇编语言电子教案(3-2-MOV指令)

提供的基本寻址方式可以分为三类立即寻址寄存器寻址存储器寻址与存储器有关的寻址的有效地址由以下四种成分组成1位移量存放在指令中的一个81632位的数2基址存放在基址寄存器中的内容3变址存放在变址寄存器中的内容4比例因子386及后继机型增加的一个术语1无比例因子8086286386及后继机型共有位移量直接寻址基址或变址位移量基址或变址—基址变址寻址2带比例因子386及后继机型位移量变址比例因子比例变址寻址比例因子基址+比例因子说明这些寻址方式不仅可以用于源操作数的寻址也可以用于目的操作数的寻址唯一例外的是立即寻址只能用于源操作数例MOV [BX][DI]AX 则源操作数为寄存器寻址目的操作数为基址变址寻址存储器寻址时所确定的内存地址既可以是字节字也可以是双字地址那么上述指令的目的操作数的宽度是多少呢指令中操作数要具有明确的类型寄存器寻址类型确定存储器操作数寻址类型由变量的类型属性确定其它情况类型下操作数类型由指令中其它操作数的类型或指令缺省类型来确定确定的操作数为字类型指令指示对一定操作对象进行何种操作的命令指令系统计算机CPU的指令集合称为指令系统一指令集说明学习要求指令的基本功能二数据传送指令1通用数据传送指令2累加器专用传送指令3地址传送指令4标志寄存器传送指令5类型转换指令特点负责把数据地址或立即数传送到寄存器或存储单元中1通用数据传送指令1传送指令传送指令执行操作DSTSRC DST SRC 的类型要一致双字字节MOV AXMOV AH MOV AX MOV BXMOV MAST[BP][DI]MOV BL MOV BYTE PTR [BX]MOV DSMOV ES MOV AXMOV [BX]MOV DS例MOV EAX MOV ES 哪些指令为非法形式例MOV AXMOV AHMOV AXMOV BXMOV MAST[BP][DI]MOV BLMOV BYTE PTR [BX]MOV DSMOV ESMOV AXMOV [BX]MOV DS寄存器寄存器字寄存器寄存器字节存储器寄存器字存储器寄存器寄存器存储器字节立即数寄存器立即数存储器字节寄存器段寄存器存储器段寄存器段寄存器寄存器存储器存储器段寄存器段寄存器MOV ES立即数段寄存器MOV EAX存储器寄存器双字MOV CS AXMOV 5ALMOV EAX BX都是非法指令如为了使指令字不要过长规定双操作数指令的两个操作数中只能有一个使用存储器寻址方式因此不允许双存储器操作在有通用性MOV [BX]2带符号扩展传送指令有符号数的扩展MOVSX386及后继机型可用格式MOVSX DST, SRC执行操作本指令有两种格式REG1REG源操作数可以是或存储单元的内容目的操作数必须是功能传送时将源操作数符号扩展送入目的寄存器可以是位MOVSX3带零扩展传送指令无符号数的扩展MOVZX386及后继机型可用格式MOVZX DST, SRC执行操作本指令有两种格式REG1REG源操作数目的操作数MOVSX功能传送时将高位扩展为送入目的寄存器可以是位MOVSX例1MOVSX EAX 2MOVZX EAX 若执行前DATA =0FFE0H DATA 为字单元1EAX =0FFFFFFE0H 2EAX=0000FFE0H一般的双操作数指令源目的操作数的长度一致MOVZX MOVSX 指令的源操作数的长度一定要小于目的操作数的长度如MOVSX DXALMOVZX EBXAL 4堆栈操作指令堆栈PC 机的堆栈是在内存中开辟的一端固定一端活动的存储区采用的工作方式栈顶SP 或ESP 址由低注意 1.信息的存入和取出都是从栈顶开始中栈顶由指示当堆栈地址长度为位时堆栈操作使用SP 当堆栈地址长度为位时堆栈操作使用ESP为了将清楚堆栈操作指令我们分8086/8088803868086/8088 PUSH/POP进栈指令执行操作出栈指令执行操作例SP→SP→例SP→SP→ES)=2367H, (SP)=0100H,试画出堆栈的变化情况(SP)=100H12H12H例都是非法指令80386SP SP 2 ESP ESP 2 SP SP 4 ESP ESP 4 1616位位在实方式下803868086为编写80386及后继的程序可利用位通用寄存器可使用新增指令可采用新增的寻址方式但是段的最大长64KB 当存储单元的地址偏移超过64KB 时不会引起地址的反绕而导致段跨越异常在实方式下80386的兼容最大段为64称为位段在保护方式下段长可达4G 称为位段在实方式下运行的程序只能使用位段尽管在实方式下只能使用位段但可以使用位操作数也可以使用位形式表示的存储单元地址例MOV EAX关于实方式程序的几点说明为单位指令可以有四种格式不允许它使用立即数寻址方式指令允许三种格式能为字节类型5PUSHA/PU格式PUSHA286及后继PUSHAD386及后继执行操作PUSHA位通用寄存器依次入栈入栈次序为AX CX DX BX指令执行前的SP BP SI DISP SP-16PUSHAD位通用寄存器依次入栈入栈次序为EAX ECX EDX EBX指令执行前的ESP EBP ESI EDIESP ESP-326POPA/POP格式执行操作POPA位通用寄存器依次出栈出栈次序为DI SI BP SP BX DX CX AXSP SP+16POPAD位通用寄存器依次出栈出栈次序为EDI E SI EBP ESP EBX EDX ECX EAXESP ESP+32PUSHA POPA PUSHAD不影响标志位例例7交换交换指令执行操作OPR1OPR1OPR1例如XCHG EAX,EBX ; EAX 字AL 为要查找数据在表格2累加器专用传送指令EAX AX 传送信息IN OUT 输出程序设计中讲解换码指令格式执行操作累加器EAX AX AL例MOV BX, OFFSET TABLE ; (BX)=0040H长度不超过256)或EBX下标→(AL)3地址传送指令1LEA REG, SRC ;2LDS REG, SRC ;3LES REG, SRC ;4LFS REG, SRC ;5LGS REG, SRC ;6LSS REG, SRC ;把首地址偏移地址传送指令执行操作位有效地址位有效地址位有效地址截取低位有效地址零扩展后存入则MOV BX LEA BXBX =3412H BX=0100HBLOCK的区别假设0100H BLOCK =3412H 例值而不是该地址所在的存储单元的内容必须注意取地址到和寄存器指令执行操作或SREG ←位寄存器REG 不能是段R R LFS 段址偏移地址偏移地址段址例LDS SI, [10H]例LES DI, [BX]例TABLE DW 40H, 3000H , 2000HLSS ESP TABLE ;ESP=30000040H; (SS) =2000H4标志寄存器传送指令执行操作送标志寄存器指令执行操作(FLAGS标志进栈指令执行操作PUSHF: (SP)标志出栈指令执行操作LAHFSAHF例PUSHF TF=1TF15类型转换CBW AL的符号扩展到AH形成中的字CWD/CWDECWD AX的符号扩展到DX形成DX AX双字CWDE AX的符号扩展到EAX形成EAX双字CDQ EAX的符号扩展到EDX形成EDX EAXBSWAP 486及后继机型可用格式BSWAP R32 R32位寄存器操作将位寄存器的字节次序变反即14字节互换23字节互换指令合法的指令格式堆栈操作指令的指令与指令的区别掌握XCHG XLAT MOVSX MOVZX类型转换其余堆栈操作指令标志操作指令MOVSX作业。
《IBM PC 80X86汇编语言程序设计》PPT电子课件教案-第六章 子程序设计

《IBM PC 80X86汇编语言程序设计》
冶金工业出版社
第6章
1、子程序的概念和特点
子程序:把在程序中多次出现,具有独立功能 的程序段写成程序模块,该模块可被多次调用, 称之为子程序。
特点:①可重复使用(调用) ②具有通用性(可通过入口参数实现) ③可浮动性(存放位置灵活) ④可递归性和可重入性
第6章
第六章 子程序设计
一、子程序的定义 二、子程序的结构形式
三、子程序的设计和调用 四、子程序的参数传递方法 五、子程序的嵌套和递归调用 六、子程序的设计举例 七、多模块程序设计 八、汇编语言和高级语言的混合编程
《IBM PC 80X86汇编语言程序设计》
冶金工业出版社
第6章
一、子程序的定义
1、子程序的概念和特点 2、子程序的定义 3、子程序的调用和返回
《IBM PC 80X86汇编语言程序设计》
冶金工业出版社
第6章
2、子程序的定义
子程序的定义是由过程定义伪指令PROC和ENDP 来完成的。其格式如下:
过程名 PROC [NEAR/FAR]
┆
过程名 ENDP
其中PROC表示过程定义开始,ENDP表示过程定 义结束。过程名是过程入口地址的符号表示。
一般过程名同标号一样,具有三种属性,即段 属性、偏移地址属性以及类型属性。
《IBM PC 80X86汇编语言程序设计》
冶金工业出版社
第6章
3、子程序的调用和返回
❖ 调用
①段内直接调用
格式:CALL 子程序名
功能:将子程序返回地址(断点)入栈
SP←SP-2
(SP)←IP,
并转到子程序入口地址去执行子程序。
❖ 返回指令
汇编80X86伪指令系统

80X86伪指令系统一.伪指令概述构成汇编语言程序的语句可以分为三种:指令性语句(指令语句)、指示性语句(伪指令语句)和指令语句(宏调用语句)。
指令语句,又称可执行语句,表示计算机具有的一个基本能力。
比如数据传送,数据相加、相减等。
伪指令语句,又称命令语句,告诉汇编程序如何对程序进行汇编。
比如段定义、储存单元分配等。
一个汇编语言程序经汇编,连接和装入内存后,在执行程序之前:1.指示性语句的功能已经完成,故又称伪操作。
2.指令性语句的功能尚未完成,需控制CPU去执行,才能完成。
二、伪指令详解符号定义语句1.等值语句格式:符号名EQU 需等值的表达式功能:用符号名等值指定的表达式;其中表达式可以是任何有效的操作数,汇编时用语句中的表达式代替程序中符号所在的地方。
说明:▲可用于定义符号常量,方便修改程序。
▲某表达式多次出现时,用等值伪操作可以方便编程。
▲等值语句表达式的种类(1)常数或数值表达式COUNT EQU 10NUM EQU 89*3+5-9(2)地址表达式ADD1 EQU V AR2+10H(3)变量或标号CON EQU V AR▲在EQU语句右边出现的标号需在EQU语句以前进行定义。
2.等号语句格式:符号=需等值的表达式功能:把等号“=”右边表达式的值或符号赋给等号“=”左边的符号。
表达式可以是任何有效的操作数。
说明:EQU语句与“=”的区别:在同一源程序中,EQU语句定义的符号不能被重新赋值或者说不能被重新定义,同一符号只能定义一次,符号的数值不能被改变。
“=”定义的符号可以被重新赋值,同一符号的数值在同一个程序中可以改变。
数据定义语句格式:变量名类型助记符操作数[ ,操作数, ……]功能:用于在内存中为常数、初始数据或者变量分配储存单元。
说明:(1)变量名指示内存操作数所占用的内存单元地址(符号地址),在程序中,可以通过变量,名对内存单元进行访问。
变量名为用户自定义标识符,表示初值表首元素的逻辑地址。
80x86指令格式

字节类型 BYTE PTR [Reg]
字类型 WORD PTR [Reg]
双字类型 DWORD PTR [Reg]
(4) 段寄存器操作数(Seg)——为16位段寄存器,包括CS,DS,ES,SS,FS,GS。
3.2 80x86指令格式
3.2.180x86指令编码格式
指令编码格式是指指令的机器码表示格式,其最多可以由以下5部分组合构成:
一、前缀
指令前缀为地址长度前缀和操作数长度前缀。为了实现80x86系列的兼容性,在实方式和保护方式下均可执行16位或32位指令,在汇编程序汇编时,为某些指令附加指令前缀,可以将指令操作数或地址长度,由16位转移到32位,或由32位转移到16位。
(5) 立即数(imm)——只允许作为源操作数,其数据类型由目的操作数来限定。
(6) 注释——由分号(;)开始,用来对指令功能加以说明,使程序便于阅读,汇编程序对它不进行处理。
对于指令的分析,须注意以下4点:
·指令的功Leabharlann ; ·适用于指令的寻址方式;(Missed Code)
(2) 存储器操作数(Mem)——间接寻址时16位寻址寄存器包括BX,BP,SI,DI;32位寻址寄存器包括EAX,EBX,ECX,EDX,ESI,EDI,EBP。其中BX,SI,DI,EAX,EBX,ECX,EDX,ESI,EDI对应的缺省段寄存器为DS;BP,EBP对应的缺省段寄存器为SS。
例如 MOV Dest, Src
为数据传送指令,Src表示源操作数,Dest表示目的操作数,数据流动的方向是由Src源操作数传送到Dest目的操作数,操作数可以是寄存器或存储器操作数,有关操作数说明如下。
80X86汇编指令集

1.数据传输指令它们在存储器和寄存器、寄存器和输人输出端口之间传送数据,1)通用数据传送指令MOV; 传送字或字节。
MOVSX: 先符号扩展,,再传送。
MOVZX: 先零扩展,再传送。
PUSH: 把字压入堆栈。
POP: 把字弹出堆栈。
PUSHA: 把AX、CX、DX、BX、SP、BP、SI、DI依次压人堆栈。
POPA: 把DI、SI、BP、SP、BX、DX、CX、AX依次弹出堆栈。
PUSHAD: 把EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI 依次压入堆栈。
POPAD: 把EDI、ESI、EBP、ESP、EBX、EDX、ECX、EAX 依次弹出堆栈。
BSWAP: 交换32 位寄存器里字节的顺序。
XCHG: 交换字或字节(至少有一个操作数为寄存器,段寄存器不可作为操作数)。
CMPXCHG; 比较并交换操作数(第个操作数必须为累加器AL/AX/EAX)。
XADD: 先交换再累加(结果在第一个操作数里)。
XLAT: 字节查表转换。
BX指向一张256字节的表的起点,AL为表的索引值(0-255,即0-FFH)返回AL 为查表结果([BX+AL]-->AL).2) 输入输出端口传送指令IN:I/O端口输入(语法:IN 累加器,{端口号 | IDX})OUT: I/O端口输出(语法: OUT {端口号 | DX},累加器)。
输入输出端口由立即方式指定时,其范围是0-255,由寄存器DX指定时,其范围0~ 65535.3) 目的地址传送指令LEA: 装入有效地址。
例如:LEA DX,string ;把偏移地址存到DXLDS; 传送目标指针,把指针内容装人DS例如:LDS SI,string ;把“段地址:偏移地址”存到DS:SILES: 传送目标指针,把指针内容装人ES,例如:LRS DI,string;把“段地址偏移地址”存到ES:DILFS: 传送目标指针,把指针内容装人FS.例如:LES DI,string ;把“段地址:偏移地址”存到ES:DILGS: 传送目标指针,把指针内容装入GS。
80X86汇编语言程序设计 第二章⑧.8086 8088指令系统(五)转移指令

80X86汇编语言程序设计第二章8086/8088寻址方式和指令系统-(五)转移指令1.无条件转移指令(没有条件碰到就转)(1)无条件段内直接转移指令格式:JMP 标号这条指令使控制无条件地转移到标号地址处。
例如:NEXT:MOV AX,CX……JMP NEXT ;转到NEXT处……JMP OVER ;转到OVER处……OVER: MOV AX,1无条件段内直接转移指令格式如下:由操作码和地址差值构成。
指令的操作码| 地址差地址差:是程序中该无条件转移指令的下一条指令的开始地址到转移目标地址(标号所指定的开始地址)的差值。
因为,在执行无条件段内转移指令时,实际的动作是把指令中的地址差加到指令指针IP上,使IP之内容为目标地址,从而达到转移的目的。
段内无条件直接转移指令中的地址差可用一个字节表示,也可用一个字表示。
如果地址差只要用一个字节表示,就称为短转移;如果地址差要用一个字表示,就称为近转移。
段内短跳转:(-128~127)JMP SHORT QUEST段内近跳转:(64KB)JMP NEAR PTR PROG(2)无条件段内间接转移指令格式:JMP OPRD这条指令使控制无条件地址转移到由操作数OPRD的内容给定的目标地址处。
操作数OPRD可以是通用寄存器,也可以是字存储单元。
(3)无条件段间直接转移指令格式:JMP FAR PTR 标号这条指令使控制无条件地转移到标号所对应的地址处。
标号前的符号“FAR PTR”向汇编程序说明这是段间转移。
例如:JMP FAR PTR EXITEXIT是定义在另一个代码段中的标号。
无条件段间直接转移指令的具体动作时把指令中包含的目标地址的段值和偏移分别置入CS和IP。
这种在指令中直接包含转移目标地址的转移方式称为绝对转移。
(4)无条件段间间接转移指令格式:JMP OPRD这条指令使控制无条件地转移到由操作数OPRD的内容给定的目标地址处。
操作数OPRD必须是双字存储单元。
资料:经典的80x86指令系统(指令大全)

80x86指令系统80x86的指令系统可以分为以下6组:数据传送类指令算术指令逻辑指令串处理指令控制转移指令处理机控制指令1、数据传送指令数据传送类指令负责把数据、地址或立即数传送到寄存器或存储单元中。
它又可以分为五种:1.1、通用数据传送指令MOV 传送MOVSX 带符号扩展传送MOVZX 带零扩展传送PUSH 进栈POP 出栈PUSHA 所有寄存器进栈POPA 所有寄存器出栈XCHG 交换(1)MOV传送指令格式为:MOV DST,SRC执行操作:(DST)<——(SRC)MOV指令可以在CPU内或CPU和存储器之间传送字或字节,MOV指令不影响标志位(2)MOVSX带符号扩展传送指令格式为:MOVSX DST,SRC执行操作:(DST)<——符号扩展(SRC)该指令的源操作数可以是8位或16位的寄存器或存储单元的内容,而目的操作数则必须是16位或32位寄存器,传送时把源操作数扩展送入目的寄存器。
MOVSX不影响标志位(3)MOVZX带零扩展传送指令格式为:MOVZX DST,SRC执行操作:(DST)<——零扩展(SRC)MOVSX和MOVZX指令与一般双操作数指令的差别是:一般双操作数指令的源操作数和目的操作数的长度是一致的,但MOVSX和MOVZX的源操作数长度一定要小于目的操作数长度(4)PUSH进栈指令格式为:PUSH SRC执行操作:16位指令:(SP)<——(SP)-2((SP)+1),(SP))<——(SRC)32位指令:(ESP)<——(ESP)-4((ESP)+3),(ESP)+2),(ESP)+1)(ESP))<——(SRC)(5)POP出栈指令格式为:POP DST16位指令:(DST)<——((SP)+1),(SP))(SP)<——(SP)+232位指令:(DST)<——((ESP)+3),(ESP)+2),(ESP)+1)(ESP))(ESP)<——(ESP)+4堆栈是一种“后进先出”方式工作的一个存储区,它必须存在于堆栈段中,因而其段地址存放于SS寄存器中。
80x86指令集

扩展的指令
扩展的指令
扩展指令
扩展的指令
字紧缩为,DW] 紧缩字到字节
WD ,DQ] 从MMX 寄存器解压(交
WD ,DQ] 从MMX 寄存器解压(交
和 DATATXN 是结构变量名;结构变量名与具体的存储空间和数
NAM 和 ENDS 括起来的数据定义语句序列,必须成对出现,缺一不可;结构名是为结构起
4 字 10 字压缩
DB 可以定义用单引号括起来的字符
PROC 和 ENDP 必须成对出现,限定一个
连续存放程序和数据,
2 字
GROUP 定义符后指定的所有段
并赋予该段一
和 ENDS 语句
将
LABEL 伪指令提供了另一种定义标号或变
? 号时,表示符号名无确定值。
汇编程序遇
格式:符号名 EQU 表达式
& 格式:符号名 = 表达式 & 功能:等号语句的
JMP 指令
组
M
的结果是一个 8 位或 16 位二进制数中
RUC 和。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MOV AX,1234H
MOV BX,5678H ADD AX,BX
该 程 序 中 MOV 指 令 为 数 据 传 送 指 令 操 作 符 , ADD指令为加法指令操作符,三条指令皆为双操作数 指令。第一、二条指令AX、BX皆为目的操作数地址, 为寄存器寻址方式。第三条指令中, AX 为目的操作 数地址, BX 为源操作数地址。源地址和目的地址皆 为寄存器寻址方式。
16
图形表示:
操作数偏移地址EA计算方法如下
17
2.2.7 跨段问题
按前述规定:若选用BP作间址基址寄存器、变址 寄存器或基址寄存器,则操作数在堆栈段,操作 数的物理地址 PA 由堆栈段寄存器 SS 的内容左移 4 位与偏移地址EA相加后形成;否则,操作数在数 据段,操作数的物理地址PA由数据段寄存器DS的 内容左移 4 位与偏移 EA 相加后形成。该规定为系 统默认状态。当要否定默认状态,到非约定段寻 找操作数时,必须用跨段前缀指明操作数的段寄 存器名。
8
【例】寄存器和存储器内容为:(AX)=1212H, BUF为数据段定义的变量,其偏移地址是2000H, (DS)=3000H,(32000H)=4545H。 执行指令:MOV AX ,BUF(MOV AX , [2000H]) 执行后:(AX)=? 图形表示:
执行:(32000H)→AX 执行后:(AX)=4545H
执行:(20036H)+(AX) →20036H 执行后:(AX)=0040H,(BX)=0030H,(DS) =2000H,(20036H)=0090H。
15
2.2.6 基址加变址寻址
基址加变址寻址方式中,操作数的偏移 地址 EA 是指令中基址寄存器内容、变址 寄存器内容、位移量X三项之和,操作 数在存储器中。 汇编格式:X [BR+IR] 功能:操作数存放在存储器, BR 的内容 加IR的内容加位移量X是操作数的偏移地 址EA。
Assembly Language Programming
汇编语言程序设计
0
第2章 80x86的指令系统
2.1 2.2 2.3 2.4 2.5 2.6 2.7 பைடு நூலகம்2.8
指令格式 寻址方式 数据传送类指令 算术运算类指令 位操作类指令 串操作类指令 控制转移类指令 处理机控制类指令
4
【例】MOV AX, 10 执行后(AX)=? 该例中源操作数为立即寻址方式,立即数 为10,存放在指令的下一单元。 图形表示:
执行:10→AX 执行后:(AX)=000AH
5
2.2.2 寄存器寻址
寄存器寻址方式的操作数在指令指明的寄存器 中。
【例】下列程序执行后,(AX)=?,(BX)=?
9
2.2.4 寄存器间接寻址
寄存器间接寻址方式中,寄存 器的内容为操作数的偏移地址 EA,操作数在存储器中。 汇编格式:[R] 功能:操作数存放在存储器, 寄存器R存放操作数的偏移地址 EA。
10
偏移地址EA计算方法如下: [SI] [DI] [BX] [BP] SI作间址寄存器。 DI作间址寄存器。 BX作间址寄存器。 BP作间址寄存器。
18
汇编格式:段寄存器名:操作数地址。
功能:段寄存器名指明操作数属哪个段。
【例】 MOV AX,DS:[BP] MOV CX,SS:[SI] 该例中, DS :, SS :均为跨段前缀,此时默 认状态无效,操作数的物理地址 PA 由段寄存 器内容左移 4 位加偏移 EA 形成。上述 2 条指令 的源操作数物理地址分别为: PA1 =(DS)左移4位+[BP] PA2 =(SS)左移4位+[SI
6
图形表示:
执行:1234H→AX 5678H→BX (AX)+(BX)→AX
执 行 后 :( AX ) =68ACH , ( BX ) =5678H
7
2.2.3 直接寻址
汇编格式:①含有变量的地址表达式。 ②段寄存器名:[EA] 。 功能:指令下一字单元的内容是操作数的有 效(偏移)地址EA。 图形表示:
1
2.1 指令格式
计算机是通过执行指令序列来解决问 题的。计算机的指令系统就是指该计算机 能够执行的全部指令的集合。 指令的一般格式: [标号:] 操作符 OPD, OPS [;注释] 算术运算和位操作类指令的部分单操 作数指令的格式: [标号:] 操作符 OPD [;注释]
2
2.2 寻址方式
2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.2.7 2.2.8
立即寻址 寄存器寻址 直接寻址 寄存器间接寻址 变址寻址 基址加变址寻址 跨段问题 与转移地址有关的寻址方式
3
2.2.1 立即寻址
立即寻址方式中,指令操作码和操作数 都在存储器代码段中。 立即数可以是用8位或16位二进制补码表 示的有符号数。 功能:常用于给寄存器赋初值,只能用 于源操作数字段,且源操作数与目的操 作数长度应一致。
变址寻址方式操作数的偏移地址 EA 为寄 存器的内容加位移量,操作数在存储器 中,又称为寄存器相对寻址。 汇编格式: X[R] ( X 表示位移量,是 8 位 或16位二进制补码表示的有符号数) 功能:操作数存放在存储器,寄存器R 的 内容加位移量X为操作数的偏移地址EA。 图形表示如下:
EA=
11
【例】寄存器和存储器内容分别为:(AX)=0, (BP)=0030H,(SS)=2000H,(20030H) =1234H
执行指令:MOV AX ,[BP]
执行后:(AX)=? 图形表示如下:
执行:(20030H)→AX 执行后:(AX)=1234H
12
2.2.5 变址寻址
13
偏移地址EA计算方法如下:
14
【例】设执行前: (AX)=0040H,(BX)=0030H, (DS)=2000H,(20036H)=0050H 执行指令:ADD 6[BX],AX 执行后:(AX)=?,(BX)=?,(DS)=?, (20036H)=? 图形表示如下: