汇编语言程序设计第二章.ppt_第1页
汇编语言程序设计第二章.ppt_第2页
汇编语言程序设计第二章.ppt_第3页
汇编语言程序设计第二章.ppt_第4页
汇编语言程序设计第二章.ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

第二章 32位PC汇编程序设计环境,2.1 32位可编程寄存器体系,32位CPU包含有通用寄存器、段寄存器、标志寄存器EFLAGS、指令指针寄存器EIP、算术逻辑单元(ALU)及控制部件等。,图2.1 CPU与编程相关的寄存器,2.1.1 通用寄存器,32位寄存器的低16位分别包含AX,BX,CX,DX,SI,DI,BP,SP寄存器。同样,16位的寄存器又分别包含AH,AL,BH,BL,CH,CL,DH,DL寄存器,分别对应AX,BX,CX,DX的高8位与低8位。 例2.1 已知AH的内容为75H,AL的内容为72H,则AX的内容为7572H;BX的内容为4612H,BL的内容为12H。求执行传送指令 MOV BX,AX 之后,BX、BH、BL、AH、AL的值。 例2.2 已知DH=10H, CL=48H, 求执行加法指令 ADD CL,DH 之后CL和DH的值。,通用寄存器的用途(1),累加器AX(Accumulator):存放每次算法运算的结果,字节累加器为AL。 基址器BX(Base):地址计算时,用作存放基地址的寄存器。 计数器CX(Count):某些指令隐含的计数器,个别指令隐含用CL作计数器。 数据寄存器DX(Data):即端口地址寄存器,某些输入/输出(I/O)操作用来存放外部设备的I/O地址。 源变址器SI(Source Index)和目的变址器DI(Destination Index)均是变址寄存器,可对地址进行增量或减量计算,方便于变址的管理。 基址指针BP(Base Pointer):作为堆栈数据存取操作的基本地址指针寄存器。 栈指针SP(Stack Pointer):堆栈指针寄存器,指示堆栈的当前偏移地址。即从堆栈当前存储单元的地址到堆栈底端的距离(字节数)。,通用寄存器的用途(2),32位通用寄存器是在16位通用寄存器AX,BX,CX,DX,SI,DI,BP,SP的基础上向左扩展16位寄存器而形成的。 例2.3 已知EAX的内容为98765432H,EBX的内容为12340011H,求执行减法指令 SUB EAX,EBX之后EAX,AX, AL, EBX, BX, BH的值。,解:指令SUB EAX,EBX表示EAX-EBXEAX,且EBX的内容不变。即 EAX-EBX= 98765432H- 12340011H=86425421H EAX 因而各顶的值为:EAX=86425421H,AX=5421H,AL=21H, EBX=12340011H,BX=0011H,BH=00H,2.1.2 基本控制寄存器(1),标志寄存器EFLAGS又称为程序状态字寄存器PSW(Program Status Word),如图2.1所示。每一位代表程序的某种状态。 基本标志寄存器是指011的标志位,分为条件标志和控制标志。 (1)条件标志用来反映ALU中算术逻辑运算后的结果特征,共有6个,分别为: 符号标志位SF(Sign Flag):设置成运算操作结果的符号状态。当结果为负时,SF=1;否则SF=0, 零标志ZF(Zero Flag):运算结果为0时,ZF=1,否则ZF=0 辅助进位标志AF(Auxiliary Carry Flag):运算过程中第3位有进位值,置AF=1,否则AF=0,2.1.2 基本控制寄存器(2),奇偶标志PF(Parity Flag):当结果操作数中有偶数个“1”时,置PF=1;否则,PF=0,这个标志位可用于检验机器代码传送是否出错。 进位标志CF(Carry Flag):记录运算操作时由最高有效位产生的进位值。例如,执行加法指令时,如果向高位有进位,则CF=1,否则CF=0 溢出标志OF(OverFlow Flag): 运算时,或结果操作数结果超出了机器能表示的范围,则产生溢出,置OF=1, 否则,OF=0,图2.2 EFLAG寄存器各个位的含义,基本控制寄存器(3),例2.4 执行下面两个加法后,判定各个条件标志位值。,基本控制寄存器(4),控制标志的功能是控制执行特殊的功能,包括3个标志。 1. 方向标志DF(Direction Flag)用于字符串操作指令的控制。DF设置为0,则串操作控制处理的方向,是从带有最低地址的第一个元素开始逐个处理;若DF1,则串操作从高地址向低地址方向逐个进行处理串元素。,10000H,10001H,10002H,10003H,10004H,10005H,10000H,10001H,10002H,10003H,10004H,10005H,附加段,数据段,SI,DI,SI,DI,DF0,DF1,a,b,c,d,e,f,基本控制寄存器(5),中断允许标志IF(Interrupt Enable Flag) IF1时,CPU允许中断;IF=0,则CPU关闭中断。 跟踪标志TF(Trap Flag) 如果TF=1,机器进入单步工作方式,每条指令执行后,显示结果及寄存器等有状态;若TF0,则机器处于连续工作方式。此标志为调试机器或调试程序发现故障而设置。,基本控制寄存器(6),指令指针IP(Instruction Pointer)指出了程序执行过程中的当前要取出的下条指令的地址。当取出一条指令后,IP自动的加上该指令的长度或者形成转移地址,又指示下一条指令的地址。从而控制指令的执行流程。 在主存中采用分段管理方法。段寄存器存放段的起始地址。6个16位段寄存器如下: 代码段寄存器CS(Code Segment) 存放当前正在执行代码的段的起始地址。 数据段寄存器DS(Data Segment) 存放当前正在执行的程序所用数据的段的起始地址。,基本控制寄存器(7),堆栈段寄存器SS(Stack Segment) 存放当前正在执行程序暂时保留信息的段的起始地址。 附加段寄存器ES(Extra Segment)、FS、GS存放程序的数据段的起始地址。为程序设计使用多个数据段提供方便。,2.2 实方式存储器寻址机制,在实方式下,对于16位微处理器,只能寻址1MB存储空间。 存储器中以字节为基本单位进行数据的存储。每个字节单元都有一个编号,称为地址。 16位微处理器有20条地址线,就有220个字节地址,能表示存储器的容量是220(相当于1MB)个字节。32位处理器有32条地址线,则有232个字节地址,存储容量为4GB。,1、单元地址,存储单元的类型有字节单元、字单元和双字单元。存储字节单元的地址是字节地址,字单元的地址是连续2个字节地址中较低的字节地址,双字单元则是4个连续字节中最低字节地址。,AH,AL,21H,98H,在存放字或双字类型的数据时,按照“低对低,高对高”的存储原则。,2、存储单元的内容,存储单元的内容是指该单元存放的二进制数据(常用16进制表示)。有时这些数据可以是另一存储单元的地址。 例如: (1)设字单元的地址为100H,100H地址的内容是1869H,则表示为(100H)=1869H,则字单元包含2个连续字节单元的内容是(100H)69H,(101H)18H (2)设一个存储单元的地址为M,M单元的内容表示为(M),设M单元中存放N,而N又是一个单元的地址,则N单元的内容可表示为(N)=(M) 例2.5 若M=0CA0H,N=0BF9H,(M)=N , (0BF9H)=2630H,求(M)=?,2.2.2 存储器的分段寻址(1),1、分段寻址的原因 多任务、多作业并行时便于共享存储器的需要;方便程序的重定位。 、分段寻址的计算方法 每个存储单元的物理地址用“段地址:偏移地址”来表示。 实方式下段寄存器只有16位,偏移地址也只有16位。 20位的物理地址=段寄存器的内容24+偏移地址 注意:存储器的分段结构是一种逻辑结构。物理地址是唯一确定的,但是它可以不同段地址与偏移地址组合而成。,2.2.2 存储器的分段寻址(1),、物理地址的形成 存储单元的物理地址(PA)段寄存器里的数值向左移位(即在最右边加4个0)+偏移地址,341CH,图a: 地址计算,图b: 存储地址空间,2.2.2 存储器的分段寻址(2),例2.6 设数据1000放在存储器的数据段里,段地址80480H的前位在DS中,该数据所在的存储地址PA到段地址的距离为EA=0602H,求PA=?,(PA)=?,解:因为段地址8048 PA=804824+EA=80480H+0602H=80A82H (PA)=1000H,2.2.3 段的分配方式(),在实方式下,每一个存储段最大可达64K,最小为16B。对于1M的内存空间,最多可以216个段,最少也有24个段。 通常段的分配由操作系统负责。 段重叠是指每个段的大小允许根据实际情况分配。,2.2.3 段的分配方式(),0150,4200,850,000,段寄存器,CS,DS,ES,SS,存储器,64K代码,64K代码,64K代码,64K代码,段地址,01500H,42000H,8C500H,C0000H,代码区,数据区,附加段区,堆栈区,2.3 堆栈存储技术(),堆栈可用于传递参数或临时保留和恢复有关信息的情形。 堆栈单元的物理地址SS24+SP,其中SS是堆栈段寄存器,SP是栈顶指针。 堆栈的压入(PUSH)和弹出(POP)操作都是针对字类型数据。 堆栈的压入指令格式: PUSH 源操作数 ;将源操作数压入堆栈 执行的操作:SP-2SP ;先将SP指针减后送SP 源操作数 SP ;将操作数送至SP表示的单元。SP表示SP的内容作为地址。,2.3 堆栈存储技术(),例2.7 设AX=7809H, SP=0100H,执行完PUSH AX指令之后,SP=?, SP=? 解:因为SP-2=0100H-2=00FEHSP 所以SP=00FEH, AX=7809 SP,SP,?,?,SP,09H,78H,0100H,00FFH,00FEH,2.3 堆栈存储技术(3),堆栈弹出指令POP指令格式 POP 目的操作数 ;将当前SP指向堆栈单元的内容弹出到目的操作数 执行的操作:(SP) 目的操作数 ;先将SP单元的内容送入目的操作数 SP+2 SP ;后修改SP,即S

温馨提示

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

评论

0/150

提交评论