原理及接口技术-第3章.ppt

  1. 1、本文档共110页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 微处理器的指令系统 学习目标 8086/8088 CPU的指令系统是Intel80x86系列CPU共同的基础,其后续高型号微处理器的指令系统都是在此基础上新增了一些指令逐步扩充形成的。 本章将重点讨论8086/8088 CPU的指令系统。最后,介绍几种扩展指令集的实用知识。 通过本章对8086/8088 CPU寻址方式和指令系统的学习,应能掌握汇编语言程序设计所需要的汇编语言和编写程序段的基础知识。 学习要求 在理解与掌握各种寻址方式的基础上,着重掌握存储器寻址的各种寻址方式。 应熟练掌握4类数据传送指令。难点是XLAT、IN、OUT。 学习算术运算类指令中的难点是带符号乘、除指令与十进制指令。 学习逻辑运算和移位循环类指令时,要着重理解CL的设置以及进位位的处理。 学习串操作类指令时,着重理解重复前缀(REP)的使用。 学习程序控制类指令时,着重理解条件转移的条件及测试条件。 理解指令集的发展趋势,了解几种扩展指令集。 3.1 8086/8088的寻址方式 8086/8088的寻址方式分为两种不同的类型:数据寻址方式和程序存储器寻址方式。前者是寻址操作数地址,后者是寻址程序地址(在代码段中)。 3.1.1数据寻址方式 图3-1给出了各种数据 寻址方式的类型、指令 举例以及存储器地址 生成方法与数据流向。 1.立即寻址 立即寻址的操作数就在指令中,当执行指令时,CPU直接从紧跟着指令代码的后续地址单元中取得该立即数。立即数可以是8位,也可以是16位;并规定只能是整数类型的源操作数。这种寻址主要用来给寄存器赋初值,指令执行速度快。 立即数寻址的MOV指令示例。 2.寄存器寻址 寄存器寻址的操作数放在寄存器中,寄存器名在指令中指出。在一条指令中,源操作数或/和目的操作数都可以采用寄存器寻址方式。这种寻址的指令长度短,操作数就在CPU内部,执行速度快。注意,使用时源与目标应有相同的数据类型长度。 各种寄存器寻址的MOV指令示例。 存储器寻址 存储器寻址比较复杂,当CPU寻找存储器操作数时,应根据指令给出的寻址方式,由EU先计算出操作数地址的偏移量(即有效地址EA)。EA的值由汇编程序根据指令所采用的寻址方式自动计算得出。计算EA的通式为: EA=基址值(BX或BP)+变址值(SI或DI)+位移量DISP 3.直接数据寻址 直接数据寻址有两种基本形式:直接寻址和位移寻址。 1)直接寻址 直接寻址简单、直观,它是指令中以位移量方式直接给出存储器操作数的偏移地址,即有效地址EA=DISP。这种寻址方式的指令执行速度快,用于存储单元与AL、AX之间的MOV指令。 2)位移寻址 位移寻址也以位移量方式直接给出存储器操作数的偏移地址,但适合于几乎所有将数据从存储单元传送到寄存器的指令。 使用AX、AL的直接寻址指令示例 使用位移量的直接数据寻址指令示例 4.寄存器间接寻址 寄存器间接寻址的操作数在存储器中,存储单元的有效地址EA由寄存器保存,这些寄存器是基址寄存器BX、基址指针寄存器BP、变址寄存器SI和DI之一或它们的某种组合。 【例3.2】设BX=3000H,DS=2000H,当执行MOV AX,[BX]指令后,则数据段存储单元为23000H处的字内容将被复制AX中,即23000H的内容送到AL,23001H的内容送到AH。指令中的方括号[ ]在汇编语言中表示间接寻址。 寻址储存器时如何默认段寄存器 当使用BX、DI和SI寻址存储器时,寄存器间接寻址或任何其他寻址方式都默认使用数据段,而使用基址指针寄存器BP寻址存储器时,则默认使用堆栈段。 在使用寄存器间接寻址时,要注意在某些情况下,要求用指定的类型运算伪指令BYTE PTR、WORD PTR或DWORD PTR来规定传送数据的长度。 【例3.3】 MOV AL,[SI]指令的书写格式是对的,因为汇编程序能够清楚地根据AL来判明[SI]是指定存储器数据为字节传送类型。 【例3.42】MOV [SI],6AH指令的书写格式是模糊的。因为,汇编程序不能根据立即数6AH确定[SI]存储单元的数据类型的长度。如果将此指令书写成MOV BYTE PYR[SI],6AH,则汇编程序就能清楚地判明SI所寻址的存储单元为字节类型。 5.基址加变址寻址 基址加变址寻址类似于间接寻址,它也是间接地寻址存储器数据。其操作数的有效地址EA是指令中指定的基址寄存器(BX或BP)和变址寄存器(SI或DI)的内容之和。 【例3.5】MOV [BX+SI],CL指令是将寄存器CL中的字节内容复制到数据段中由BX加SI寻址的存储单元中。 基址加变址寻址可用于处理数组(或表格),通常,用基址寄存器保存数组(或表格)的起始地址,而变址寄存器保存数组(或表格)元素的相对位置。如果是用BP寄存器寻址

文档评论(0)

xuefei111 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档