微机原理汇编语言与接口技术韩晓茹ch02汇编语言基础.ppt

微机原理汇编语言与接口技术韩晓茹ch02汇编语言基础.ppt

  1. 1、本文档共287页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
BIU与EU的操作协调(1) (1) 执行单元EU并不直接与外部发生联系,而是从总线接口单元BIU 的指令队列中源源不断地获取指令并执行。每当指令队列中存满一条指令后,EU就立即开始执行。 (2) 每当指令队列中有2 个空字节时,BIU就会自动地寻找空闲的总线周期进行预取指令操作,直至填满为止。其取指的顺序是按指令在程序中出现的先后顺序。 (3) 每当EU准备执行一条指令时,它会从BIU部件的指令队列前部取出指令的代码,然后用几个时钟周期去执行指令。在执行指令的过程中,如果必须访问存储器或者I/O端口,那么EU就会请求BIU进入总线周期,并形成有效地址EA送给BIU ,由BIU的地址加法器形成物理地址PA 从存储器或I/O端口取回操作数送给EU,完成访问内存或者I/O端口的操作。如果此时BIU正好处于空闲状态,会立即响应EU的总线请求;如果BIU正将某个指令字取到指令队列中,则BIU将首先完成这个取指令的总线周期,然后再去响应EU发出的访问总线的请求。 BIU与EU的操作协调(2) (4)每当EU执行一条转移、调用或返回指令后,BIU 清除指令队列缓冲器,并从新的目标地址开始预取指令送入指令队列,此时EU才能继续执行指令,实现程序执行的转移。这时EU和BIU 的并行操作显然要受到一定的影响,但只要转移、调用指令出现的概率不是很高,EU 和BIU 间相互独立又相互配合的工作方式仍将大大提高CPU 的工作效率。 (5)当指令队列已满,且EU又没有总线访问请求时,BIU便进入空闲状态。 存储器地址 例如:1234H以不同方式存储时的情况。 (00002H)= 12H ,或 [ 00002H ]= 12H (00003H)= 34H ,或 [ 00003H ]= 34H (00002H)= 3412H。 (00002H)=。 图 2?6 逻辑地址与物理地址 段和段寄存器的引用 段寄存器的使用规定 通用寄存器 8086有8个通用的16位寄存器 (1)数据寄存器: AX BX CX DX (2)变址寄存器: SI DI (3)指针寄存器: BP SP 4个数据寄存器还可以分成高8位和低8位两个独立的寄存器,这样又形成8个通用的8位寄存器, 8位寄存器只能存放数据。 AX: AH AL BX: BH BL CX: CH CL DX: DH DL (1)数据寄存器 AX称为累加器(Accumulator) 使用频度最高。用于算术、逻辑运算以及与外设传送信息等 BX称为基址寄存器(Base address Register) 常用做存放存储器地址 CX称为计数器(Counter) 作为循环和串操作等指令中的隐含计数器 DX称为数据寄存器(Data register) 常用来存放双字长数据的高16位,或存放外设端口地址 (2)变址寄存器 16位变址寄存器SI和DI 常用于存储器变址寻址方式时提供地址 SI是源变址寄存器(Source Index) DI是目的变址寄存器(Destination Index) (3)指针寄存器 指针寄存器用于寻址内存堆栈内的数据 SP为堆栈指针寄存器(Stack Pointer),指示堆栈段栈顶的位置(偏移地址) BP为基址指针寄存器(Base Pointer),表示数据在堆栈段中的基地址 SP和BP寄存器与SS段寄存器联合使用以确定堆栈段中的存储单元地址 CF:进位/借位标志位 当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置1,即CF=1; 否则CF=0 符号标志SF(Sign Flag) 运算结果最高位为1,则SF=1; 否则SF=0 奇偶标志PF(Parity Flag) 当运算结果最低字节中“1”的个数为零或偶数时,PF=1;否则PF=0 溢出标志OF(Overflow Flag) 若有符号数运算的结果有溢出,则OF=1; 否则 OF=0 溢出的判断 判断运算结果是否溢出有一个简单的规则: 只有当两个相同符号数相加(包括不同符号数相减),而运算结果的符号与原数据符号相反时,产生溢出;其他情况下,则不会产生溢出. 溢出和进位的区别 溢出标志OF和进位标志CF是两个意义不同的标志 进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确 溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确 溢出和进位的对比 溢出和进位的应用场合 处理器对两个操作数进行运算时,按照无符号数求得结果,并相应设置进位标志CF;同时,根据是否超出有符号数的范围设置溢出标志OF 应该利用哪个标志,则由程序员来决定。也就是说,如果将参加运算的操作数认为是无符号数,就应该关心进位;认为是有符号数,则要注意是否溢出 寄存器的总结 8086有

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档