关于我们
书单推荐
新书推荐
|
汇编语言与接口技术
本书将微机原理、汇编语言、微机接口技术有机地融为一体。从整体入手, 先介绍微机系统的概念, 使读者对微机系统组织有深入的了解; 之后详细介绍控制和使用微机的软件编程, 即汇编语言编程; 最后以常用可编程接口芯片的结构和应用为主介绍了微机硬件接口技术。在本书的编写过程中把以上三个模块逐渐融合渗透, 融会贯穿在一起, 避免了知识点间衔接不顺畅, 也符合读者知识结构地构建, 强化学习者对微机原理以及软、硬件应用能力的培养。
本书为普通高等教育“十二五”*规划教材,普通高等教育“十一五”*规划教材,是汇编语言与接口技术经典教材,内容全面,特色突出,被多所高校用作教材。
本书共10章,以16位微处理器8088/8086为主线,介绍微处理器的结构、工作原理、指令系统等,同时兼顾32位以上微处理器80386、80486以及Pentium系列微处理器的相关内容。汇编语言以MASM 6.0为主,同时介绍了与MASM 5.X的区别,详细讲解了基于80x86的汇编程序设计方法。书中详细介绍了传统的接口技术,如并行、串行、定时、DMA、中断、模/数及数/模等接口技术。考虑到信息类相关专业学生的学习需求,本书专门增加了一章介绍存储器技术。第10章介绍*新的高速串行接口USB接口。 本书将微机原理、汇编语言、微机接口技术有机地融为一体,既适合课堂教学,又能紧跟*新技术,拓宽学生的知识面。本书条理清楚,深入浅出,有丰富的实例,便于自学。 本书可以作为高等学校本科信息类相关专业和计算机专业学生的教材或参考书,也可以供广大工程技术人员参考。
微机原理、汇编语言和接口技术是各个高等学校计算机专业或信息类专业学生的专业基础课程。汇编语言的显著特点是可以直接控制硬件并充分发挥计算机硬件的功能,对于编写高性能系统软件和应用软件具有不可忽视的作用,微机接口技术则侧重计算机硬件的结构和I/O系统的组成。
随着高校教学改革的深入,将汇编语言与微机接口技术结合起来,作为一门计算机基础专业课程的教学方法已经为许多高校采用。为了满足在新形势下计算机与信息类专业课程建设和教学内容改革的需求,作者在多年汇编语言、微机接口技术教学实践的基础上编写了本教材,将微机原理、汇编语言程序设计、微机接口技术融为一体,比较完整地介绍了微型计算机技术,适合更多读者的需求。 在前3版教材的基础上,本书内容进行了很大的调整和改进,主要在以下几个方面。 (1) 第1章作为全书的概括和汇编语言与接口技术的基础,涵盖了基本知识的支撑要点,如微型计算机的概念、微机系统总线等,使读者对微型计算机的整体结构有一个完整的认识。另外,把第3版教材中接口技术的概念、输入输出传输控制方式等接口基础知识分离出来单独作为第6章,这样使知识结构更加合理。 (2) 第2章从8088/8086 CPU入手,首先详细分析了16位微处理器的功能结构、寄存器组、工作方式、总线操作及时序等。之后作为知识的提升,介绍了32位以上微处理器的结构、寄存器组等相应的知识点。这样修改使教材层次分明,由浅入深,也符合读者的知识结构构成规律。另外增加了Pentium系列微处理器及多核微处理器的发展概况。 (3) 第3章和第4章是汇编语言程序设计部分。考虑到从8086到80386以上至Pentium 4,只有16位到32位的区别,其80%以上的指令完全相同,因此,本书以16位微处理器的指令系统为基础,扩展到32位微处理器汇编指令。另外,在知识点的组织上,把指令系统的讲解融合在汇编语言编程设计中,这样避免了单独讲解大量指令的枯燥,也使汇编语言程序设计的讲解更源自基础。例如,把分支结构程序设计和条件判断指令放在一起讲解,使知识紧密衔接,使读者学习循序渐进。另外,为了满足实际需要,在第4章增加了汇编语言与高级语言混合编程的内容。 (4) 删减了第3版的软件接口技术一章,把本章中关于DOS和BIOS的接口调用的内容作为第4章中的一节内容,保证了内容的完整。 (5) 修改了第5章存储器技术的部分内容。对于不同专业的学生,任课教师可以选择本章的有关内容讲解。 (6) 修改了第10章的内容,在重点介绍USB接口概念和基本方法的基础上,强化了USB开发技术的应用。 (7) 在第7~9章增加更多的工程应用实例,使读者更接近实际应用,体现教材的实用性。(8) 修改了前3版教材中难理解的概念,用更通俗易懂的语言描述。修正了前3版教材中已经发现的疏漏。 全书共10章,第1章和第2章是理论基础部分,内容包括微型计算机概述,接口技术及数据传输控制方式、系统总线、80x86微处理器原理。第3章和第4章是汇编语言部分,内容主要包括80x86的指令系统、寻址方式、汇编语言程序设计。第5章主要介绍存储器的基本概念,存储器基本单元的构建,由存储单元构成存储阵列进而构成存储器的方法,以及存储器容量的扩展方法,并介绍了Cache和虚拟存储技术。第6章是输入输出接口及数据传输控制方式,主要介绍接口的概念、接口技术基础知识以及CPU控制数据传输的控制方式。第7章是串并行接口技术,主要内容包括定时/计数器、串并行接口的基本原理及实际应用。第8章是中断和DMA技术,主要内容包括中断和DMA的原理及中断控制器和DMA控制器及其应用。第9章是模拟接口技术,主要包括A/D和D/A转换技术及典型的芯片应用。第10章是高速串行总线,介绍了*新的高速串行接口USB技术。 本书第1版由王让定、陈金儿、叶富乐、史旭华共同编写,其中第1、2章由史旭华执笔,第3、4章由叶富乐执笔,第5章由王让定执笔,其余各章由陈金儿执笔,王让定负责全书的统稿。本书第2版的修订由参加课程建设的朱莹执笔,王让定负责全书的统稿。本书第3版的修订又加入了一线教师石守东和钱江波两位老师的辛勤工作。 通过几年的教学实践,根据国内相关教师的建议,在第1版、第2版和第3版的基础上,在本书作者和相关老师的共同参与下,由王让定和朱莹执笔全面修订了本书内容。王让定负责全书的统稿。 本书的出版凝聚了许多同行的智慧和心血,这里非常感谢课程建设前期付出心血的陈金儿、叶富乐和史旭华老师,感谢清华大学出版社张民编辑。本书的出版得到了宁波大学计算机科学与技术国家特色专业的支持,得到了浙江省高校重点教材建设项目的支持,得到了浙江省“十二五”“十三五”特色专业建设的支持,也得到了宁波市服务型重点建设专业的支持,在此一并表示感谢。 本书配有相应的教学电子资源,读者可登录清华大学出版社网站下载。另外,作者为第4版教材编写了配套的《汇编语言与接口技术(第4版)知识精要与实践》。由于计算机技术的飞速发展,新的理论和技术层出不穷,本书难以囊括计算机技术的*新发展变化。同时,书中难免有不足和不妥之处,恳请同行和读者不吝批评指正。欢迎读者,尤其是使用本书的教师和学生,共同探讨相关教学内容改革、教材内容建设以及教学方法等问题。 作者 2016年11月
王让定,博士,宁波大学教授、博士生导师,浙江省高校中青年学科带头人,“计算机科学与技术”国家特色专业建设点负责人,浙江省高等学校省级教学团队负责人,宁波大学教学名师,校计算机科学与技术教学团队负责人。现兼任中国体视学学会理事,中国计算机学会开放系统专委会委员,中国电子学会通信学会多媒体信息安全专委会委员,浙江省高校计算机教学研究会副理事长,浙江省计算机应用与教育学会教育委员会副主任,浙江省物联网专业委员会副主任,浙江省高校计算机教学指导委员会委员,浙江省大学生软件设计竞赛组委会成员。主持了4项国家自然基金项目,获省科技进步奖2项、浙江省高校科研成果奖3项,获国家发明专利授权6项。在发表学术或教学研究论文80多篇,其中被SCI/EI/ISTP检索的论文有30多篇,主编国家“十一五”规划教材1部,国家“十二五”规划教材1部。
第1章微型计算机概述/1
1.1微型计算机概念/1 1.2微处理器的产生和发展/2 1.3计算机系统组成/4 1.3.1硬件系统/5 1.3.2软件/6 1.4系统总线/8 1.4.1概述/8 1.4.2常用的微机系统总线技术/9 小结/10 习题/11第2章80x86微处理器/12 2.18086/8088微处理器/12 2.1.1内部结构/12 2.1.2寄存器组/15 2.1.3引脚信号及功能/18 2.1.4工作模式/22 2.1.5总线操作和时序/25 2.232位微处理器/32 2.2.1内部结构/32 2.2.2寄存器组/35 2.2.3引脚信号及功能/39 2.2.4工作模式/43 2.2.5总线操作/44 2.3Pentium微处理器/44 2.3.1Pentium微处理器的主要特点/45 2.3.2Pentium的发展/46 2.480x86存储器组织/47 2.4.18086/8088的存储器组织/472.4.232位微处理器存储器系统简介/50 小结/51 习题/51第3章80x86指令系统和寻址方式/53 3.18086指令系统概述/53 3.1.1数据类型/53 3.1.280x86指令的基本组成/55 3.28086/8088的寻址方式和指令系统/56 3.2.18086/8088的寻址方式/56 3.2.28086/8088的常用指令/61 3.380386的寻址方式和指令系统/78 3.3.180386的寻址方式/78 3.3.280386指令系统/80 3.480486/Pentium微处理器新增指令/90 3.4.180486引入的有关指令/90 3.4.2Pentium引入的有关指令/91 小结/92 习题/93第4章80x86汇编语言程序设计/97 4.1MASM宏汇编语句结构及开发过程/98 4.1.1汇编语言程序的语句类型和格式/98 4.1.2汇编语言的程序格式/99 4.1.3汇编语言程序的开发过程/101 4.2MASM汇编语言表达式和运算符/107 4.2.1常量、运算符及表达式/107 4.2.2变量及其属性/111 4.3程序段的定义和属性/119 4.3.1DOS的程序结构/119 4.3.2简化段定义的格式及其伪指令/120 4.3.3完整段定义的格式及其伪指令/125 4.4复杂数据结构/130 4.4.1结构/130 4.4.2记录/132 4.5宏汇编/133 4.5.1宏的定义和调用/134 4.5.2宏的参数/136 4.5.3与宏有关的伪指令/138 4.6常用的系统功能调用/140 4.6.1DOS的系统调用/140 4.6.2BIOS中断调用及实现/144 4.6.3Windows系统功能调用/147 4.7汇编语言顺序程序设计/149 4.8汇编语言分支程序设计/150 4.8.1无条件转移指令和条件转移指令/150 4.8.2分支结构程序设计实例/153 4.9汇编语言循环程序设计/157 4.9.1循环指令/157 4.9.2循环程序设计实例/158 4.10串处理程序设计/162 4.10.18086/8088串操作指令/162 4.10.280386位串操作指令/165 4.10.3串操作程序设计实例/165 4.11子程序设计/167 4.11.1子程序的定义与调用/167 4.11.2子程序的参数传递/173 4.11.3子程序的嵌套、递归与重入/177 4.11.4子程序的应用/179 4.12高级汇编语言程序设计/185 4.12.1条件控制伪指令/185 4.12.2循环控制伪指令/187 4.12.3过程声明和过程调用伪指令/190 4.13汇编语言与C语言混合编程/193 4.13.1C语言程序内嵌汇编指令/193 4.13.2汇编语言与C语言模块连接/196 小结/201 习题/202第5章存储器技术/209 5.1存储器概述/209 5.1.1存储器的发展及分类/209 5.1.2存储器主要技术指标/212 5.1.3存储器的基本结构框架/213 5.1.4存储系统的层次结构/213 5.2半导体随机存取存储器/215 5.2.1SRAM存储器/215 5.2.2DRAM存储器/217 5.2.3只读存储器/220 5.2.4新型存储器芯片/222 5.2.5主存容量的扩展/225 5.3高速缓冲存储技术/230 5.3.1Cache的基本原理/230 5.3.2Cache的管理/231 5.4虚拟存储技术/233 小结/235 习题/236第6章输入输出接口及数据传输控制方式/237 6.1接口概述/237 6.1.1接口的功能/237 6.1.2I/O端口及其编址方式/239 6.1.3I/O端口地址译码/239 6.1.4I/O操作指令/241 6.2CPU与外设数据的传输控制方式/242 6.2.1程序控制方式/242 6.2.2中断控制方式/245 6.2.3DMA方式/246 6.2.4数据传送控制方式的发展/246 小结/247 习题/247第7章串并行接口技术/248 7.1定时/计数器8253/8254/248 7.1.18253/8254的内部结构和引脚/248 7.1.28253/8254的工作方式/250 7.1.38253/8254的编程/254 7.1.48253/8254的应用实例/257 7.2并行通信接口8255A/259 7.2.18255A的内部结构和引脚/259 7.2.28255A的工作方式/260 7.2.38255A的编程/264 7.2.48255A的应用实例/266 7.3串行通信基础/269 7.3.1串行通信基本概念/270 7.3.2串行通信接口标准/271 7.4串行通信芯片8251A/275 7.4.18251A的内部结构和引脚/275 7.4.28251A的工作方式/278 7.4.38251A的编程/279 7.4.48251A的应用实例/284 小结/285 习题/286第8章中断和DMA技术/288 8.180x86中断系统/288 8.1.1中断操作和中断系统/288 8.1.2中断调用与返回指令/289 8.1.38086中断系统/290 8.1.480486的中断/293 8.2中断控制器8259A/294 8.2.18259A的内部结构和引脚/295 8.2.28259A的中断过程/297 8.2.38259A的工作方式/298 8.2.48259A的初始化和控制命令字/301 8.2.58259A的应用实例/308 8.3DMA控制器8237A/310 8.3.18237A的结构和外部引脚/311 8.3.28237A的工作原理/314 8.3.38237A的内部寄存器和命令/316 8.3.48237A的编程和应用/321 小结/322 习题/323第9章模拟接口技术/325 9.1模拟输入输出系统/325 9.1.1微机与控制系统接口/325 9.1.2模拟输入通道/326 9.1.3模拟输出通道/327 9.2数/模转换芯片及接口/327 9.2.1数/模转换原理/327 9.2.28位数/模转换器DAC0832/330 9.2.312位数/模转换器AD567/333 9.3模/数转换芯片及接口/336 9.3.1模/数转换原理/336 9.3.28位模/数转换器ADC0809/341 9.3.312位模/数转换器AD574/343 9.4A/D、D/A器件的选择/346 小结/348 习题/349第10章高速串行总线/350 10.1USB简介/350 10.2USB体系结构/353 10.3USB通信协议/357 10.3.1通信模型/357 10.3.2数据格式/358 10.3.3事务处理/360 10.3.4数据传输模式/362 10.4PC的USB应用及开发/363 10.4.1PDIUSBD12芯片特点/365 10.4.2PDIUSBD12芯片引脚/366 10.4.3PDIUSBD12的典型连接/367 10.4.4固件程序设计/367 10.4.5驱动程序设计/372 10.4.6应用程序设计/372 小结/374 习题/374 参考文献/375
第3章80x86指令系统和寻址方式
指令是计算机能接受的软件工作者命令的*小工作单元,它*终是由计算机内的电器元件状态来体现的,这一状态为译码器所识别,并经一定时间周期付诸实施,这种指令称为机器指令。一条机器指令应包含两部分内容: 一是要给出此指令要完成何种操作,这部分称为指令操作码;二是要给出参与操作的对象是什么,此部分称为操作数,在指令中可以直接给出操作数的值,或者操作数存放在何处,操作的结果应送往何处等信息。处理器可根据指令字中给出的地址信息求出存放操作数的地址——称为有效地址,然后对存放在有效地址中的操作数进行存取操作。指令中关于如何求出存放操作数有效地址的方法称为操作数的寻址方式。计算机按照指令给出的寻址方式求出操作数有效地址和存取操作数的过程称为寻址操作。计算机的指令系统就是指该计算机能够执行的全部指令的集合。 本章首先介绍16位微处理器8086/8088的常用指令和寻址方式,在此基础上以80386为对象讲述32位微处理器的指令系统和寻址方式。对80x86的控制转移类指令、串操作与重复前缀指令、子程序调用与返回指令以及中断调用与返回指令的讲解将穿插在第4章的汇编语言程序设计以及第8章的中断和DMA技术中介绍,其目的就是为了使学习者更好地理解和应用这些指令。 本章的主要内容如下: 80386的寻址方式和指令系统。 80486/Pentium微处理器新增指令。 3.18086指令系统概述〖1〗3.1.1数据类型计算机中的数是用二进制表示的,数的符号也是用二进制表示的。把一个数连同其符号在机器中的表示加以数值化称为机器数,实际上机器数是将符号“数字化”所得到的数。计算机执行指令过程中需要处理各种类型的机器数,可处理的数据类型有7种。 1. 无符号二进制数 无符号二进制数是指不带符号位的一个字节、字或双字的二进制数。2. 带符号二进制数 带符号二进制数有正、负之分,均以补码形式表示。补码由符号位加数值两部分组成。带符号数的*高位表示符号位,*高位为0表示为正,*高位为1表示为负。正数的补码和原码相同,负数的补码是符号位保持不变(即为1),其余各位按位取反,再在*末位加1。 3. BCD码 BCD码是用二进制数的形式表示的十进制数。计算机中BCD码有两种,分别是非压缩BCD码和压缩BCD码两种。前者用8位二进制数表示一位十进制数,那么一个字节能表示的十进制数的范围是0~9;后者用4位二进制数表示一位十进制数,那么一个字节能表示的十进制数的范围是0~99。例如,17的非压缩BCD码是0000000100000111B,即0107H;压缩BCD码是00010111B,即17H。 4. 定点数和浮点数 在计算机中,针对小数点的处理有两种表示方法,分别是定点数表示法和浮点数表示法。 1) 定点数表示法 定点数表示法就是小数点固定在某个位置上。在定点计算机中,一般将小数点定在*高位(即纯小数)或将小数点定在*低位(即纯整数)。 2) 浮点数表示法 浮点表示法就是小数点的位置不固定。浮点数在计算机中通常的表示形式为“2的正/负阶码次方×尾数”,其中阶码是一个正整数,尾数是一个小数,尾数的区间为\[0.5,1\],如果尾数不在此区间,则要进行规格化。规格化通过尾数左右移、阶码加减完成,其规则是: 尾数左移一次,阶码减1,尾数右移一次,阶码加1。 5. 串数据 计算机可以处理的串数据有以下几种: 位串,一串连续的二进制数。 字节串,一串连续的字节。 字串,一串连续的字。 双字串,一串连续的双字。 6. ASCII码数据 ASCII(American Standard Code for Information Interchange,美国信息交换标准码)是一种字符数据的常用表示方法。包括ASCII码字符、ASCII码数和ASCII控制符等。 7. 指针类数据 指针类数据包括近程指针和远程指针。前者为16位的偏移量,用于段内寻址、段内数据访问或转移;后者由16位段值和16位的偏移量组成,用于段间寻址、段间数据访问或段间转移。 另外,在8086/8088处理机中,为了达到数据结构的*大灵活性和*有效地使用内存,字数据不必定位于偶数地址,即允许不按2 的倍数边界对齐。但是,对齐的字数据可以一次传送,而未对齐的字数据则需要两次传送。为了获得*佳性能,一般将字操作对齐于偶地址。 3.1.280x86指令的基本组成 80x86的汇编指令由操作码和操作数两部分组成。操作码是指令的操作命令,操作数是指令的操作对象。汇编指令*后要翻译成机器指令。 1. 指令的操作码 80x86的机器指令的操作码(OP)采用二进制代码表示本指令所执行的操作。在大多数指令的操作码中,常用某位指示图3.18086操作码格式 某些具体操作信息。图3.1所示的8086操作码含有3个特征位,分别为W位、D位和S位。它们的含义如下: (1) W位是字操作标志位。当W=1时,表示当前指令进行字操作;当W=0时,表示当前指令进行字节操作。 (2) D位是对目标操作数进行寄存器寻址的标志。对于双操作数指令(立即数指令和串操作指令除外),其中一个操作数必定由寄存器指出。这时,寄存器名通过后面的REG域指出,此外,要用D位指出寄存器所寻址的是源操作数还是目标操作数。如D=1,则寄存器所寻址的是目标操作数;如D=0,则寄存器所寻址的是源操作数。 (3) S位是符号扩展位。一个8位补码可以扩展为16位补码。使所有高位等于低位字节的*高有效位(即符号位),这种扩展叫符号扩展,在加法指令、减法指令和比较指令中,S位和W位结合起来指出各种情况。例如,S=0,W=0时,为8位操作数;S=0,W=1时,为16位操作数。 2. 机器指令格式 80x86的机器指令为1~6B。一般用指令的*个字节或者头两个字节表示指令的操作码和寻址方式,通常称为操作码域。操作码指出了执行这条指令时CPU要做什么操作,寻址方式则表示执行指令时所用的操作数的来源。图3.2给出了8086指令格式。 图3.28086指令格式 紧随在操作码域后的字节一般称操作数域。至于操作数域属于图3.2中的哪一种情况,要由指令前半部分的操作码和寻址方式确定。这里有几点需要指出: (1) 一条指令可以包含一个操作数,也可以包含一个以上的操作数。具有一个操作数的指令称为单操作数指令,单操作数指令中的操作数可能由指令本身提供,也可能由指令隐含地指出。 (2) 若位移量或立即数为16位,那么在指令代码中,将低位字节放在前面,高位字节放在后面。 (3) 80x86指令系统中大多数指令的操作码安排在*个字节,但有几条指令是特殊的,其指令中的*个字节不但包含操作码成分,而且还隐含地指出了寄存器名,从而整个指令只占一个字节,成为单字节指令。这些指令字节数*少,执行速度*快,用得也*频繁。 3. 指令的执行时间 指令执行时间取决于时钟周期长短和执行指令所需要的时钟周期数。如果涉及内存操作,那么执行一条指令的时间为基本执行时间加上计算有效地址所需要的时间。 8086的总线部件和执行部件是并行工作的,因此在计算指令的基本执行时间时都假定要执行的指令已经预先放在指令队列中,也就是说,没有计算取指时间。有些指令在执行过程中要多次访问内存,因此,访问内存的次数也是考虑指令执行总时间的重要因素。 可见,执行一条指令所需的总时间为基本执行时间、计算有效地址的时间和为了读取操作数和存放操作结果需访问内存的时间之和。 3.28086/ 8088的寻址方式和指令系统〖1〗3.2.18086/8088的寻址方式在计算机的存储器系统中存储着两类信息,一是数据,二是程序。这里所说的程序就是指令序列。8086/8088的寻址方式包括程序寻址方式和数据寻址方式。数据寻址方式是指获取指令所需的操作数或操作数地址的方式。程序的寻址方式是指在程序中出现转移和调用时的程序定位方式。 1. 数据寻址方式 数据寻址方式就是寻找参加运算的操作数的方式。80x86指令中所需的操作数来自以下3个方面。 (1) 操作数包含在指令中。在取指令的同时,操作数也随之得到,这种操作数称为立即数。 (2) 操作数包含在CPU的某个内部寄存器中,这种操作数称为寄存器操作数。 (3) 操作数包含在存储器中,这种操作数称为存储器操作数。 存储器操作数存放在内存单元中,在80x86微机系统中,任何内存单元的地址均由段基址和偏移地址(又称偏移量)组成,段基址由段寄存器提供,而偏移地址由以下4个基本部分组成。 (1) 基址,8086/8088系统的基址寄存器为BX和BP。 (2) 变址,8086/8088系统的变址寄存器为SI和DI。 (3) 比例因子,采用1、2、4或8几种不同的比例因子。8086/8088系统中比例因子为1。 (4) 位移量,即相对于某个存储单元的偏移量。 这4个部分称为偏移地址的四元素。一般将这四元素按某种计算方法组合形成的偏移地址称为有效地址(Effective Address,EA)。它们的组合和计算方法为 有效地址=基址+变址×比例因子+位移量 根据80x86系统的存储器组织方式,指令中不能使用实际地址(即物理地址),而只使用逻辑地址或称为操作数的线性地址,因此在求得有效地址后,可由有效地址和段首址形成逻辑地址。这4种元素可优化组合出9种存储器寻址方式。图3.3给出这4种元素的优化组合的寻址计算方法。 图3.38086/8088的操作数寻址方式1) 立即寻址,操作数为立即数 8086/8088指令系统中,有一部分指令所用的8位或16位操作数由指令机器码提供,这种方式称为立即寻址方式,即操作数直接包含在指令机器码中,它紧跟在操作码的后面,与操作码一起放在代码区域中。 例3.10AH,AL=7FH MOVAL,5H ;AX←5H立即寻址方式主要用于给寄存器或存储单元赋初值。因为操作数可以从指令中直接取得,不需要运行总线周期,所以立即数寻址方式的显著特点是执行速度快。 2) 寄存器寻址,操作数为寄存器操作数 寄存器寻址是指操作数包含在CPU内部的寄存器中。对于16位操作数,寄存器可以是AX、BX、CX、DX、SI、DI、SP、BP,而对于8位操作数,寄存器可以为AH、AL、BH、BL、CH、CL、DH、DL。寄存器寻址的指令本身存放在存储器的代码段,而操作数则在CPU寄存器中。由于指令执行过程中不用访问存储器,因此执行速度很快。 寄存器寻址可以进行16位操作数操作,也可进行8位操作数操作。 例3.2MOVAX,BX MOVAH,AL3) 存储器寻址,操作数为存储器操作数 (1) 直接寻址。 直接寻址方式是在指令的操作码后面直接给出操作数的16位偏移地址,这个偏移地址也称有效地址(EA)。该有效地址与指令的操作码一起存放在内存的代码段,也是低8位在前,高8位在后。操作数隐含数据段操作,存放在内存的数据段(DS)区域中,在给定的16位有效地址的地方。 例3.33000H×10H+2000H=32000H 直接寻址一般多用于存取某个存储单元中的操作数,例如从一个存储单元取操作数,或者将一个操作数存入某个存储单元。 (2) 寄存器间接寻址。 寄存器间接寻址方式是指令中的操作数存放在存储器中,存储单元的有效地址由寄存器指出,这些寄存器可以是BX、BP、SI、DI之一,即有效地址EA=基址寄存器的内容或变址寄存器的内容,对寄存器指向的存储单元进行数据操作。这些用来存放存储器操作数偏移地址的寄存器称为地址指针。 下面分别以BX、SI、DI进行寄存器间接寻址(BX、SI、DI作为地址指针)的方式与以BP进行寄存器间接寻址(BP作为地址指针)的方式为例进行说明。在以BX、SI、DI进行寄存器间接寻址时,隐含的数据段寄存器为DS;而在以BP进行寄存器间接寻址时,隐含的数据段寄存器为SS。 例3.4DS×16+BX MOVBX,\[SI\] ;物理地址=DS×16+SI MOV\[DI\],DX ;物理地址=DS×16+DI例3.5SS×16+BP无论用BX、SI、DI或者BP作为间接寄存器,都允许段超越,即也可以使用上面所提到的约定情况以外的其他段寄存器。 例3.6ES×16+BX MOVDS:\[BP\],DX ;物理地址=DS×16+BP(3) 相对寄存器寻址。 相对寄存器寻址的有效地址EA=基址寄存器的内容或变址寄存器的内容±16位或8位位移量。以BX、SI、DI进行寄存器间接寻址(BX、SI、DI作为地址指针)的方式,隐含的段寄存器为数据段寄存器DS;而以BP进行寄存器间接寻址(BP作为地址指针)的方式,隐含的段寄存器为堆栈段寄存器SS。 ……
你还可能感兴趣
我要评论
|