微型计算机原理 教学全案_第1页
微型计算机原理 教学全案_第2页
微型计算机原理 教学全案_第3页
微型计算机原理 教学全案_第4页
微型计算机原理 教学全案_第5页
已阅读5页,还剩309页未读 继续免费阅读

下载本文档

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

文档简介

?微型计算机原理?开设的根本目的:计算机工作原理是电类专业学生知识结构的重要组成局部,相关知识对后续课程、日常生活和工作、开展毕业设计和硕博课题等各个方面都可能有不同程度的作用。学习目标:掌握微型计算机系统的结构组成、实现机理、工作原理;掌握汇编语言程序设计的初步方法和调试过程;建立微型计算机系统整体概念,具备利用微机进行硬件和软件开发的初步能力。课程特点:抽象、难理解、乏味!虽然对象是具体的。课时安排:共48学时,授课40学时,上机实验8学时。要求:加强理解,把相关知识具体化而不要抽象化。第一章微型计算机根本原理1-1概述1、电子数字计算机概念目前通常所说的计算机是指电子数字计算机。电子技术实现、数字化信息处理方式、高度复杂的逻辑电子电路。信息以二进制形式〔逻辑电平形式〕表示;自动地进行信息处理。2、计算机分类按信息处理方式:数字计算机和模拟计算机。模拟计算机由于受元器件质量影响,其计算精度较低,目前已很少生产。

按用途:通用计算机和专用计算机。专用计算机针对某用途专门设计。按规模、速度〔没有一个统一的标准,1989年IEEE(电气与电子工程师协会)提出一种分类〕巨型计算机或超级计算机(Supercomputer)小巨型计算机(Minisupercomputer)大型主机(Mainframe)小型计算机(Minicomputer〕工作站(WorkStation)个人计算机(PersonalComputer—PC)

3、计算机开展简史1〕机械计算机的诞生

1614年:苏格兰人JohnNapier创造了一种可以进行四那么运算和方根运算的精巧装置。……1890年:HermanHollerith设计了用于美国人口普查的机器。结果仅用6周就得出了准确的人口统计数据(如果用人工方法,大概要花10年时间)。2〕电子计算机时代1906年:美国人LeeDeForest创造电子管,为电子计算机的开展奠定了根底。……1946年:第一台真正意义上的数字电子计算机〔ENIAC〕由美国宾夕法尼亚大学研制成功。重达数吨,占据几间房间,需要多个操作员来维持它们正常工作。非常昂贵,以至于只有政府和大型机构才能够买得起。当时的人们认为几台或者几十台这样的机器就能够满足全世界的需求了。在此期间,冯.诺伊曼〔VON.NEUMANM〕也研制出一台被认为是现代计算机原型的通用电子计算机。根据使用电子器件的不同,电子计算机经历了四个阶段:电子管计算机(1946—1956)晶体管计算机(1957—1964) 集成电路计算机(1965—1970)

超大规模集成电路计算机(1971—至今)

用机器语言、汇编语言编写程序用于军事和国防尖端技术 开始使用高级语言开始用于工程技术、数据处理和其它科学领域采用微程序、流水线等技术,提高运行速度出现操作系统、诊断程序等软件采用半导体存储器采用图形界面操作系统器件速度更快,软件、外设更加丰富微型计算机是第四代计算机时期出现的一种。自从1981年IBM公司进入微型计算机领域推出了IBM-PC以后,计算机的开展开创了一个新的时代—微型计算机时代。微型计算机的迅速、大规模的应用与普及,使计算机真正广泛地应用于工业、农业、科学技术以及社会生活与日常生活的各个方面。以前的大型机、中型机、小型机的界线巳经日益模糊与消失。随着微型计算机应用的普及和开展,芯片与微型机的功能和性能迅速提高,其功能已经远远超过了20世纪80年代以前的小型机、中型机,甚至超过了大型机。 当前微型计算机运算速度一般为20—30亿次/秒;世界最快的计算机速度为280万亿次/秒;中国最快的计算机为上海超级计算机中心的“曙光4000A〞,8万亿次/秒,世界排名第31位。4、计算机的特点处理速度快运算精度高存储记忆能力强自动执行任务功能人机交互功能

5、计算机的应用数值计算:根本功能,但此功能应用逐渐缩小;信息处理:数据库,管理信息系统,办公自动化系统;目前世界约80%的计算机用于信息处理;控制、自动化:过程控制,生产自动化辅助分析、设计:CAD,CAM,CAI仿真计算网络应用人工智能:模式识别、神经网络、专家系统、机器人等6、计算机开展方向当前模式的电子计算机开展趋势是朝微型化和巨型化两方面开展。功能开展多媒体计算机:更好地支持多媒体技术,音频、视频数据压缩、解压缩技术,多媒体数据的通信。计算机智能化:具有推理、联想、学习等思维功能和模式识别功能。网络计算机:全面支持网络功能。

新型计算机的研究:

神经网络计算机:从内部结构模拟人脑神经系统。

生物计算机:使用蛋白分子为材料的生物芯片。

光学计算机:用光子代替电子,用光连接代替金属导线连接,运算速度快千倍。7、个人计算机的构成

中央处理器CPU、主板、内存、硬盘、显卡、显示器、键盘等1-2微型计算机系统的组成1、组成局部运算器ALU寄存器控制器系统软件:DOS、Windows应用软件:Word、Excel、VisualC++中央处理器CPU存储器I/O接口总线硬件软件微型计算机系统微型计算机(主机)外设键盘、鼠标显示器软驱、硬盘、光驱打印机、扫描仪2、中央处理器中央处理器CPU〔CentralProcessingUnit〕具有运算和控制功能,是整个微型计算机的核心,也称微处理器。微处理器的主要功能部件有〔1〕运算器,也称算术逻辑部件〔ALU〕:用来进行算术和逻辑运算。〔2〕控制器:整个系统的指挥控制部件,从内存中取出指令、翻译指令并操控运算器及其它部件完成相应操作。〔3〕存放器:包括程序计数器、指令存放器、累加器、地址存放器、数据存放器、通用存放器等。3、存储器〔Memory〕

记忆部件:存储程序和数据。存储器分级配置内存:由半导体存储器组成,读写速度快;外存:如硬盘、软盘等,容量大,读写速度慢程序在外存存放,执行时调入内存。4、外部设备、I/O设备、外设〔PeripheralEquipment〕完成信息转换、计算机与外界交互;文字、声音等自然信息以及其它物理信息与计算机能识别的二进制信息进行转换;使计算机对人有用,至少应有一台外设。5、总线〔Bus〕计算机各部件之间传送信息的公共通道。各部件分时复用总线。在某一时刻,只能有一个部件向总线发送数据,否那么形成总线冲突。可有多个部件从总线接收数据。总线结构降低了部件之间连线数量,提高可靠性;但数据交换速度降低。总线按传递信息的内容分为:数据总线〔DataBus--DB〕--双向地址总线〔AddressBus--AB〕--单向控制总线〔ControlBus—CB〕--双向6、微型计算机结构框图存储器I/O接口输入设备I/O接口数据总线DB控制总线CB地址总线AB输出设备CPU1、位与字节1〕位(Bit)指计算机能表示的最小信息单位。在计算机中采用二进制表示数据和指令,故:位就是一个二进制位,有两种状态,“0〞和“1〞1-3微型计算机系统的工作原理2〕字节(Byte)相邻的8位二进制数称为一个字节1Byte=8bit如:11000011;010101113〕字〔Word〕字是CPU内部进行数据处理的根本单位。字长与CPU内部的存放器、运算器、总线宽度是一致的。通常也将2个字节〔16位〕定义为一个字;4〕位编号10100010D7D6D5D4D3D2D1D0A7A6A5A4A3A2A1A0数据Data地址Address指令是CPU能执行的一项根本操作。如:存数、取数、加、减、乘、除等2、指令与指令系统指令系统〔或指令集〕是某CPU所能执行的全部操作的总和。不同的CPU,其指令系统不同。程序是用户为使用计算机完成特定任务而编写的指令的序列。为使指令能被计算机识别,必须以二进制编码形式表示,称为机器码。用机器码形式表示的指令不便于人来记忆和理解,于是用一些助记符表示指令代码。如:MOVAX,3561H;ADDBL,21H用助记符表示指令代码的语言称为汇编语言。汇编源程序经特定的软件进行编译,形成机器码程序—目标程序。高级语言:按一定语法规那么设计的便于理解和编程的计算机编程语言,需经特定的编译软件转化为机器语言才能被计算机执行。3、计算机的工作过程

程序存放在存储器中,CPU上电后自动从存储器特定位置开始逐条执行指令。

执行过程:取一条指令分析指令执行指令标志寄存器地址总线AB数据总线DB控制总线CB指令寄存器数据寄存器控制电路指令译码器地址寄存器程序计数器R1R2R3R4寄存器组运算器存储器举例

一段汇编程序

MOVAL,7;将数值7装入累加器AL中

ADDAL,10;AL内容与10相加,结果存于AL中

HLT;停止操作编译成机器码:10110000〔MOVAL,X〕00000111〔X=7〕00000100〔ADDAL,X〕00001010〔X=10〕11110100〔HLT〕写入存储器内容1011000000000111000001000000101011110100地址0000H0001H0002H0003H0004H4、当前计算机的根本实现方案——冯.诺依曼(VonNeumann)体系结构由运算器、控制器、存储器、输入设备、输出设备五局部组成,各自行使不同功能;指令与数据存放在存储器中,顺序执行;采用二进制形式表示信息。该体系结构是冯.诺依曼(VonNeumann)于1946年提出,奠定了计算机实现框架;1949年诞生冯.诺依曼结构计算机,至今计算机结构没有根本突破。

年代型号晶体管数量1978年80862.9万1982年8028613.5万1985年8038632万1990年80486120万1993年Pentium320万1996年PentiumPro550万1997年PentiumII750万,300MHz1999年PentiumIII2000年PentiumIV4200万,1.4GHz(0.18um工艺)Moore定律:“晶体管的大小将以指数速率变小,而集成到芯片上的晶体管数目将18-24个月翻一番。〞--GordonMoore,1965〔Intel公司的创始人,著名半导体科学家〕二进制〔Binary)表示;计算机表示信息的方式。十进制(Decimal)表示;人的自然表示。16进制(Hexadecimal)表示;二进制的等价表示,每4位二进制数字等价于一位16进制数字。用0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F表示16个数码。表示:二进制—B;十进制—D〔可省略〕;十六进制—H1-4计算机运算根底1、常用的计数制2、数制间的数值转换1〕非十进制数化十进制数的方法:各位数码乘以与其对应的权,然后相加即可。如:1011B=1*23+0*22+1*21+1*20=1102E3H=0*163+2*162+E*16+3=2*256+14*16+3=7392〕十进制转化为N进制数的方法整数局部除以N,并记下余数,直到商为0;将余数按从后往前的顺序排列起来,构成整数局部。小数局部乘以N,并记下结果的整数局部,直到结果的小数局部为0;然后将结果的整数局部从前向后排列起来,构成小数局部。3〕十六进制与二进制数的转换十六进制数每一位用4位二进制数表示4〕举例求100D的二进制和十六进制表示100/2=50余050/2=25余025/2=12余112/2=6余06/2=3余03/2=1余11/2=0余1所以100D=1100100B=64H其它例:18.125=10010.001

B;101010.111B=42.875D3、计算机中常用的编码1)所谓编码是指信息在计算机中的表示方法。信息既包括数字也包括字母、符号和一些不可见的控制符号。2)BCD码〔Binary-CodedDecimal)用四位二进制数表示一位十进制数。3)ASCII码〔AmericanStandardCodeforInformationInterchange)用7位二进制进行编码〔00-7FH〕,可表示128种字符,见附录1。在机器内用一个字节表示,D7=0。4)汉字编码:常用国标码,用两个7位编码表示汉字和一些图形符号;在机器内用两个8位字节表示,称为内码;每个字节的D7=1,以与ASCII码相区别。如汉字‘啊’的国标码为01100000100001;对应内码为1011000010100001在计算机中,符号只能用数字来表示。用二进制数字的最高位表示该数的符号。正数为0,负数为1。其余位为数值位。机器数的表示方法有:原码、反码、补码。4、计算机中有符号数的表示5、原码、反码和补码1〕原码:正数的原码为该数的二进制数; 负数的原码仅符号位为1。例:假设用8位二进制数表示机器数,那么13的原码为00001101;-13的原码为10001101。原码便于乘除运算,但不便于加减运算。2〕反码正数的反码等于原码; 负数的反码为其原码的符号位不变,数值位按位取反。 例:假设用8位二进制数表示机器数,那么13的反码为00001101;-13的反码为11110010;对反码取反得到相反数的反码。例如:-〔-13〕反码为〔11110010〕的各位取反。3〕补码正数的补码等于原码; 负数的补码为其反码+1。例:假设用8位二进制数表示机器数,那么13的补码为00001101;-13的补码为11110010+1=11110011。对补码取补可得到相反数的补码。-〔-13〕的补码为00001100+1=00001101=134〕补码的性质与作用[x+y]补=[x]补+[y]补[x-y]补=[x]补+[-y]补[[x]补]补=x;补码的补码等于原码如32-13=32+〔-13〕=00100000B+11110011B=00010011B而13-32=00001101B+11100000B=11101101B=-19的补码采用补码可将减法转化为加法,而且符号位同数值位一同参与运算,运算简单。引入补码的目的是:1〕便于加减法运算;2〕使加法和减法相统一,降低硬件复杂性。例如:有两个补码X=00100000B,Y=00001101B计算X-Y的过程如下:1〕对Y取补,得到其相反数的补码〔-Y〕=11110011B2〕启动CPU中的加法器,计算X+(-Y)00100000B+11110011B=000010011B思考:计算Y-X应怎样处理?

M位二进制数能够表示的无符号数范围为:

0~2M-1M位二进制数能够表示的有符号数范围为:原码-2M-1+1~2M-1-1

反码-2M-1+1~2M-1-1

补码-2M-1~2M-1-16、无符号数和有符号数的表示范围典型8位二进制数的码值数值 原码 反码 补码

127 7FH 7FH 7FH126 7EH 7EH 7EH1 01H 01H 01H0 00H/80H 00H/0FFH 00H-1 81H 0FEH 0FFH-2 82H 0FDH 0FEH-127 0FFH 80H 81H-128 / / 80H如上所述,一定位数的二进制数能够表示的数值范围是有限的。两数相加或相减,结果超过该数字位能够表示的无符号数范围〔最高位产生进位〕,称为进位。两数相加或相减,结果超过该数字位能够表示的有符号数范围〔与进位无关〕,称为溢出。进位和溢出是互不相干的两种情况。课后自己结合进位和溢出概念给出具体算例。7、进位与溢出第二章Intel-8086微处理器结构2-1Intel-80x86系列微处理器概述型号发布年份字长晶体管数(万)主频(MHz)数据总线外部总线地址总线寻址空间高速缓存80861978162.94.771616201MNo80881979162.94.77168201MNo8028619821613.46-2016162416MNo8038619863227.512.5-333232324GYes80486198932120-16025-1003232324G8KPentium(586)199332310-33060-1666464324G8K8KPentiumPro(P6)199532550150-20064643664G8K8KPentiumII199732750233-35064643664G32K512K

1971年推出Intel4004芯片,被认为是世界上第一个微处理器(CPU)。1978年Intel公司推出8086CPU,16位。1979年又推出8088,8位数据线,以满足与当时的8位机间的兼容性。IBM公司进入个人计算机领域,采用Intel8088芯片,使IntelCPU成为主流。2-2Intel-8086微处理器结构1、8086概况16位微处理器地址总线20条,寻址能力220=1MBDIP-40〔双列直插式40脚〕封装2、8086的功能结构传统CPU执行指令的过程是:取指令->执行指令->再取指令->……,串行操作。而8086的取指令与执行指令操作是由两个不同的部件完成,可同时进行。目的是提高CPU的执行速度。

8086从功能上可分成两局部:总线接口部件BIU(BusInterfaceUnit);执行部件EU(ExecutionUnit)。总线接口部件BIU负责与内存或I/O端口进行指指令和数据传送;执行部件EU负责指令执行。①BIU从内存中取指令送到指令队列;②当EU执行指令时,BIU要配合EU从指定的内存单元或I/O端口中读取数据,或者把EU的操作结果送到指定的内存单元或I/O端口去。3、8086的存储器组织1)8086寻址能力的扩展存储器由很多个8位的存储单元组成,每个存储单元对应于一个地址编码。CPU要访问某存储单元,需将该单元地址发到地址总线。8086内部与地址有关的存放器均为16位,只能寻址216=64KB的存储器空间。为了扩大CPU可访问的存储器容量,8086CPU采用两个存放器来形成地址:段地址存放器、偏移地址存放器。这样,8086实际上有20条地址线,能够访问的存储单元数〔即寻址能力〕为220=1MB;地址范围:00000H~0FFFFFH2)8086中20位地址的生成将1MB存储空间分成假设干个不超过64KB的区段,称为存储器的段〔Segment〕。每个存储段有一个16位的基准地址,称为段地址;以段地址为基准,段内各存储单元的相对地址称为偏移地址〔16位〕;段地址存放在CPU的段存放器中;偏移地址存放在偏移地址存放器中。20位物理地址=16位段地址×24〔左移四位〕+16位偏移地址 例如:段地址为2500H,偏移地址9700H那么形成的物理地址为25000H+9700H=2E700H3)物理地址、逻辑地址物理地址:存储器中各存储单元的实际地址。逻辑地址:用段地址和偏移地址表示的相对地址。

表示形式为段地址:偏移地址

如2000H:1340H一个物理地址可对应多个逻辑地址;如物理地址12345H,逻辑地址可以是

1234H:0005H;1200H:0345H;1100H:1345H4〕段的种类有了段存放器,可将1M的存储空间分成很多个段;为便于管理,8086设计上将不同的存储内容存放在不同的段中;分为代码段、数据段、堆栈段和附加段。用户编写的程序放在代码段中,使用的数据放在数据段中。4、8086的存放器组数据存放器:AX、BX、CX、DX指针及变址存放器:SP、BP、SI、DI段存放器:CS、DS、ES、SS指令指针IP〔InstructionPointer〕状态标志存放器PSW〔ProgramStateWord)说明数据存放器和指针及变址存放器又统称通用存放器;指令指针与状态标志统称控制存放器;所有存放器均为16位。1〕数据存放器AX:通用存放器;算术运算的主存放器——累加器〔Accumulator〕;BX:通用存放器;一些指令中作为基址(Base)存放器;CX:通用存放器;一些指令中作为计数器(Counter);DX:通用存放器;一些指令中作为数据(Data)存放器与AX配合使用。说明:在一般指令中,这些存放器可作为通用存放器使用,在一些特定的指令中,各存放器有特定功能;既可作为16位使用,也可分成两个8位存放器使用 高8位记作:AH、BH、CH、DH 低8位记作:AL、BL、CL、DL2〕指针及变址存放器SP:堆栈指针存放器(StackPointer),用来指示栈顶的偏移地址。BP:基址指针存放器(BasePointer),指示堆栈区中的一个基地址。SI:源变址存放器(SourceIndex)。DI:目的变址存放器(DestinationIndex)。说明:这4个存放器也可以作为通用存放器使用。3〕段存放器CS:代码段(CodeSegment);存放程序段的段地址。DS:数据段(DataSegment);存放数据段的段地址。ES:附加段(ExtraSegment);存放附加段的段地址.SS:堆栈段(StackSegment);存放堆栈段的段地址。4〕控制存放器IP:指令指针(InstructionPointer)存放器;能自动加1,生成代码段中下一条将要取的指令的偏移地址。PSW:程序状态字(ProgramStateWord)存放器;用各个状态位反映算术逻辑运算的一些状态标志和控制标志。5、PSW标志位的定义C—进位标志,结果在最高位产生进位或借位时置1;P—奇偶标志,结果中1的个数为偶数时置1;A—半进位标志〔低4位向高4位的进位〕;Z—运算结果为零时置1;S—符号标志,该标志位与结果的最高位相同;O—溢出标志,运算结果超出有符号数表示范围时置1;D—方向标志,用于串操作,置1使串操作按减1执行;T—跟踪标志,置1后处理器进入单步执行方式,便于调试;I—中断允许标志,置1允许CPU接受外部可屏蔽中断;前6种标志为状态标志,后3种标志为控制标志。ODITSZAPCCPU怎样判断是否溢出?按结果的最高位和次高位的进位情况判断;对两个进位进行异或,异或结果为1表示有溢出,为0表示无溢出。原理不做讨论。第三章Intel-8086的指令系统3-18086的指令格式指令由操作码和操作数两局部字段组成。如:MOVAX,2345HMOV为操作码;AX和2345H为操作数。操作码指示计算机执行何种操作。操作数参加操作的数据对象或其所在的地址。

8086系列指令包括无操作数指令、单操作数指令和双操作数指令。如HLT;无操作数指令

INCCX;单操作数指令

ADDAX,BX

;双操作数指令。第一操作数为目的操作数,第二操作数为源操作数。3-28086指令的寻址方式1、指令中数据的存放位置指令中进行操作的数据存放位置有三种情况:1)存于指令中(立即数)数据包含在指令中,即被操作数据直接表示在指令的操作数字段中。例:MOVAL,08H这种操作数称为立即数。 2)存于存放器中(存放器操作数)数据存放在CPU的一个存放器中。 例:INCCX3)存于存储器中(存储器操作数)数据在内存中或在I/O端口中,存放数据的偏移地址以某种方式表示在指令中。如:MOVAX,[2500H]MOVAX,[BX]此例中[2500]、[BX]为存储器操作数。存储器操作数中操作数字段指示此操作数的偏移地址,而段地址由某个段存放器提供。此例中默认为数据段DS。2、8086指令的寻址方式寻址方式:指令中指明操作数存放位置的表达方式。8086有6种寻址方式1〕立即寻址操作数为立即数,直接存放在指令的操作数字段中。只能作为源操作数。例:MOVAL,05H指令执行后:

(AL)=05H例: MOVAX,3064H指令执行后:(AX)=3064H2) 存放器寻址方式操作数在指令所指示的存放器中。表示格式:直接在指令中写出存放器名称。 如MOVBX,AXMOVCL,23H3〕直接寻址操作数存放在内存中,操作数的偏移地址直接表示在指令中。表示格式:[偏移地址]如MOVAX,[3100H]默认操作数存放在内存的数据段中。例:MOVAX,[3100H]假设〔DS〕=6000H(63100H)=3050H那么〔AX〕=3050H...操作码0031...50H30H...600003100+6310063100H30H50HAHAL代码段数据段操作数也允许存放在其它段中(SS,ES),此时应在指令中指明段超越。段超越假设操作数不在指令默认的段中,而是在其它某个段中,那么需要在指令中加以表示,这种情况称为段超越。表示如直接寻址方式中操作数在附加段中,那么应表示为MOVAX,ES:[3100H]4) 存放器间接寻址方式操作数在存储器中,操作数偏移地址在BX、SI、DI或BP的某个存放器中。假设以SI、DI、BX作为间接寻址存放器 那么默认操作数存放在数据段中,用DS存放器的内容作为段地址。假设以BP存放器作为间接寻址存放器那么默认操作数存放在堆栈段中,用SS存放器的内容作为段地址。如MOVBX,[DI]假设〔DS〕=6000H〔DI〕=2000H〔62000H〕=50A0H那么执行指令后(BX)=50A0H表示格式:[寻址存放器]存放器间接寻址方式也允许段超越。如MOVAX,DS:[BP]MOVCH,SS:[SI]MOVES:[BX],AL设〔AL〕=B2H,〔BX〕=1234H〔ES〕=1400H,那么执行指令后:变址寻址方式操作数的偏移地址是以存放器SI、DI、BX、BP的内容与指令中给定的8位或16位偏移量之和。如MOVAH,1000H[BX]或写成MOVAH,[BX+1000H]又如MOV25H[BP],BX表示格式:位移量[存放器]或[存放器+位移量]假设以SI、DI、BX寻址,那么默认在数据段中;假设以BP寻址,那么默认在堆栈段中。6)基址加变址寻址方式操作数的偏移地址是一个基址存放器BX或BP和一个变址存放器SI或DI的内容之和加上给定的8位或16位偏移量。表示格式:位移量[基址][变址]或[位移量+基址+变址]如MOV10H[BX][SI],CX或写为MOV[10H+BX+SI],CXBX寻址默认为数据段;BP寻址默认为堆栈段。3-38086指令系统

可以分为以下六类:

数据传送指令算术运算指令逻辑运算和移位指令串操作指令控制转移指令处理器控制指令3.3.1数据传送类指令包括:通用传送指令;累加器专用传送指令;地址传送指令;标志传送指令;1、通用传送指令1)根本传送指令〔MOV〕指令格式:MOVDST,SRC;源操作数和目的操作数可用上述6种寻址方式的任何一种。操作:将SRC内容赋给DST。所有通用传送指令都不影响标志位。注意:不能用MOV指令实现以下传送存储器操作数之间不能直接传送MOV[1000H],[DI]错应改为MOVAX,[DI]MOV[1000H],AX立即数不能直接传送段存放器MOVDS,2000H错应改为MOVAX,2000HMOVDS,AX段存放器之间不能直接传送 MOVES,DS;错应改为MOVBX,DSMOVES,BXCS只可以作为源操作数例:MOVCS,AX;错MOVAX,CS;对源操作数和目的操作数的宽度必须相同立即数段存放器存储器(各种寻址)通用存放器2)堆栈指令(PUSH、POP)堆栈(STACK)的概念数据的存储按后进先出(LastInFirstOut——LIFO)原那么组织的一段内存区域。入栈指令〔PUSH〕:格式:PUSHsrc操作过程分两步完成:(SP)(SP)-2((SP)+1,(SP))(src)功能:把一个字压入由SP指向的堆栈区。 如:PUSHAX假设〔AX〕=50A0HSP=2002HSS=6000H那么执行PUSHAX的结果如右图。假设再执行PUSHBX设〔BX〕=0ABCDH,结果如右图。6000H2000HSSSP600002000+62000...AOH50H...62000H50HA0HAX堆栈段ABHCDH出栈指令〔POP〕 格式:POPdst ;操作:(dst)((SP)+1,(SP)) (SP)(SP)+2功能:把SP所指向的堆栈顶部的一个字送入目的地址,同时进行修改堆栈指针。 如:POPBXPOPAX

PUSH[2300H]PUSHCS但POPCS错堆栈用途如以下图断点信息:程序断点地址、标志存放器及其它能被子程序使用和改变的存放器。堆栈用途存放存放器或存储器中暂时不使用的数据,在使用这些数据时可方便地将其弹出;调用子程序或发生中断时要保护断点信息〔入栈〕,子程序或中断返回时恢复断点信息〔出栈〕。应注意的问题堆栈操作都按字操作;PUSH,POP指令的操作数可以是CPU内部存放器或存储单元;PUSHCS合法,POPCS非法;执行PUSH指令,(SP)-2(SP),低字节放在低地址,高字节放在高地址;SP总是指向栈顶;堆栈最大容量即为SP的初值。3〕交换指令〔XCHG)格式:XCHGdst,src ;(dst)(src)可以实现:存放器之间 存放器和存储器之间注意:存储器之间不能直接交换;段存放器不能作为操作数;允许字或字节操作。2、累加器专用传送指令1〕输入指令〔IN〕功能:用于CPU从外设端口接收数据。具体形式有四种:INAL,data8;从8位端口地址输入一个字节INAX,data8;从8位端口地址输入一个字INAL,DX;从16位端口地址输入一个字节INAX,DX;从16位端口地址输入一个字例1:INAL,80H;从地址为80H的端口读入一个字节;例2:MOVDX,1020H;将16位端口地址赋给DXINAX,DX;从(DX)为地址的端口读入16位数据。解释:1〕CPU对各个外部设备接口也采用地址编码。8086CPU连接外部设备的地址可以是8位或16位。存储器I/O接口输入设备I/O接口数据总线DB控制总线CB地址总线AB输出设备CPU20位8位或16位解释:2〕8086CPU访问存储器和访问外部设备采用不同的指令形式,外设地址与存储器地址可以重叠。通过CPU的IO/M引脚控制存储器或外设被选通;当访问存储器时IO/M引脚输出低电平,当访问外设时该引脚输出高电平。

MOVBX,[1234H];从存储器的[1234H]单元读数据,放入BX。CPU执行该指令使IO/M=0

MOVDX,1234H;立即数赋给DX

INAX,DX;从地址为[1234H]的外设读数据,CPU执行该指令使IO/M=1存储器I/O接口输入设备I/O接口数据总线DB控制总线CB地址总线AB输出设备CPUIO/M2〕输出指令〔OUT〕功能:用于CPU向外设端口发送数据四种形式:OUTdata8,AL;向8位地址端口输出一个字节OUTdata8,AX;向8位地址端口输出一个字OUTDX,AL;向16位地址端口输出一个字节OUTDX,AX;向16位地址端口输出一个字3、目的地址传送指令8086提供三条:LEALDSLES1〕LEA(LoadEffectiveAddress)格式:LEAreg16,memReg16—16位通用存放器;mem—存储单元;功能:将源操作数的偏移地址传送到目的操作数;注意:源操作数必须以存放器间接寻址、变址寻址、基址加变址寻址等方式表示的存储器操作数;目的操作数为一个16位的通用存放器。例:LEAAX,[DI]设〔DI〕=1005H执行LEAAX,[DI],有〔AX〕=1005H例:LEABX,[BX+SI+0F62H]设〔BX〕=0400H,〔SI〕=003CH执行指令后:源操作数地址为:〔BX〕+〔SI〕+0F62H=0400H+003CH+0F62H=139EH那么〔BX〕=139EH2〕LDS(LoadpointerusingDS)(略)格式:LDSreg16,mem ;功能:把源操作数指定的4个相继字节的数据分别送指令指定的存放器及DS存放器中。〔reg16〕←〔mem〕 〔DS〕←〔〔mem〕+2〕

3〕LES(LoadpointerusingES)(略)格式:LESreg16,mem;功能:把源操作数指定的4个相继字节的数据分别送指令指定的存放器及ES存放器中。〔reg16〕←〔mem〕〔ES〕←〔〔mem〕+2〕例:设(DS)=0C000H指令LDSSI,[0010H]执行指令后:(SI)=0180H(DS)=2000H

80H01H00H20HC000H:0010H(DS)C0011HC0012HC0013H......存储器C0010H例:设(DS)=B000H(BX)=080AH指令LESDI,[BX]执行指令后: (DI)=05A2H (ES)=4000HA2H05H00H40HB000H:080AH(DS)B080BHB080CHB080DH......存储器(BX)B080AH4、标志传送指令8086有四条标志传送操作指令:

1〕LAHF〔LoadAHintoflags〕格式:LAHF;功能:标志存放器低八位传送给AH〔AH〕←〔PSW的低字节〕2〕SAHF〔StoreAHintoFlags〕格式:SAHF功能:AH内容传送给标志存放器低八位。〔PSW的低字节〕←〔AH〕3〕PUSHF〔PushFlags〕 格式:PUSHF ; 功能:标志进栈。〔SP〕←〔SP〕-2 〔〔SP〕+1,〔SP〕〕←〔PSW〕4〕POPF〔PopFlags〕 格式:POPF; 功能:标志出栈。〔PSW〕←〔〔SP〕+1,〔SP〕〕〔SP〕←〔SP〕+23.3.2算术运算类指令包括:加法指令、减法指令、乘法指令、除法指令1、加法指令8086具有5条加法指令:ADD(Addition)加法指令ADC(AddwithCarry)带进位加法指令INC(Increment)加1指令AAA(ASCIIadjustforaddition)加法ASCII调整指令(略)DAA(Decimaladjustforaddition)加法十进制调整指令(略)1〕不含进位的加法指令ADD指令格式:ADDdest,src;功能:(dest)(dest)+(src) Src:立即数,通用存放器,存储器 dest:通用存放器,存储器例: ADDCL,10 ADDDX,SI ADDAX,[2F00H] ADD100H[BX],AL ADD[DI],30H 特点:可进行8位或16位的无符号数或有符号数加法运算;源操作数和目标操作数不能同时为存储器,不能为段存放器;指令影响标志位8位〔有符号〕数相加,和超出范围〔-128~+127〕,或16位〔有符号〕数相加,和超出范围(-32768~+32767),那么O=18位〔无符号〕数相加,和超过255,或16位〔无符号〕数相加,和超过65535,那么C=1,其他标志〔S,A,P,Z)由运算结果按定义确定。2〕含进位加法指令ADC(Addwithcarry)格式:ADCdest,src;功能:〔dest〕←〔dest〕+〔src〕+CC:进位标志C的当前值特点:与ADD同。类型举例: ADCCX,300 ADCAL,BL ADCDX,[SI]用途:ADC指令主要用于多字节运算中。

如:求两个32位数12345678H与0ABCDEFABH之和MOVAX,1234HMOVBX,5678HADDBX,0EFABHADCAX,0ABCDH3〕加1指令INC(Incrementby1)格式:INC dest ;功能:(dest)←〔dest〕+1 dest:通用存放器、存储器;用途:用于在循环程序中修改循环次数或地址指针。标志位影响情况:影响S,Z,A,P,O;不影响C。例:INCDL ;8位存放器+1INCSI;16位存放器+1而INC[2100] ;错误,应写成INCWORDPTR[2100];存储器内容+1〔字操作〕,PTR为属性转换操作。又如INCBYTEPTR[BX][SI];字节操作

2、减法指令〔Subtraction)8086有7条减法指令:SUB(Subtraction)不含借位减法指令SBB(SubtractionwithBorrow)含借位减法指令DEC(Decrementby1)减1指令CMP(Compare)比较指令NEG(Negate) 求补指令(略)AAS(ASCIIAdjustforSubtraction)减法ASCII调整指令(略)DAS(DecimalAdjustforSubtraction)减法十进制调整指令(略)1〕不含借位减法指令SUB(Subtraction)格式:SUB:dest,src;功能:〔dest〕←〔dest〕-〔src〕 Src:立即数,通用存放器,存储器。 Dest:通用存放器,存储器。例: SUBAL,37H SUBBX,DX

该指令影响标志位:A、C、O、P、S、Z标志。2〕含借位减法指令SBB(Subtractionwithborrow)格式:SBBdest,src;功能:〔dest〕←〔dest〕-〔src〕-C Src: 立即数,通用存放器,存储器 dest:通用存放器,存储器指令影响标志位例:SBBBX,100H SBBCX,DX SBBWORDPTR100H[BP],100 3〕减1指令DEC(Decrementby1)格式:DECdest功能:(dest)←〔dest〕-1dest:通用存放器、存储器。不能是段存放器。用途:用于在循环程序中修改地址指针和循环次数。标志位影响情况:影响S,Z,A,P,O;不影响C。4〕求补指令NEG(Negate)格式:NEGdest;功能:(dest)←0-(dest)dest:通用存放器 、存储器。操作:把操作数按位求反后末位+1。影响标志:A、C、O、P、S、Z。C: 操作数为0时求补,C=0;一般使C=1.O:对-128或-32768求补,O=1;否那么O=0.5)比较指令CMP(Compare)格式:CMPdest,src ;〔dest〕-〔src〕 结果不保存,只是用来影响标志位。影响标志:A、C、O、P、S、Z。 src:立即数,通用存放器,存储器。 dest:通用存放器,存储器。例:CMPAL,0AH ;存放器与立即数比较 CMPCX,DI ;存放器与存放器比较 CMPAX,[1000H] ;存放器与存储器比较 CMP[BX+5],SI;存储器与存放器比较用途:用比较指令来比较两个数之间的关系:两者是否相等,两个数中大小关系。〔1〕根据Z标志,判断两者是否相等;〔2〕根据C标志,判断两个无符号数的大小;〔3〕用S、O标志,判断两个带符号数的大小。算术运算对标志位的影响举例:11111111对应无符号数为255,有符号数-1;10000010对应无符号数130,有符号数-126;11111101对应无符号数253,有符号数-3;求:11111111+10000010=10000001结果的无符号数为129,有符号数为-127;C=1O=0求:11111101+10000010=01111111结果的无符号数为127,有符号数为127;C=1;O=1算术运算指令执行这些运算时,自动地将相关标志位置为相应的状态。如何用CMP指令判两个有符号数的大小:CMPX1,X2用S标志和O标志做异或运算,假设异或结果为0,那么X1>X2;否那么X1<X23.乘法指令1〕无符号乘法〔MUL〕格式:MULSRC操作:字节操作数:AX←(AL)*(SRC)字操作数:DX:AX←(AX)*(SRC)2〕带符号乘法〔IMUL〕格式:IMULSRC操作:同MUL,但操作数和乘积均带符号;按有符号数的规那么相乘;举例:

MULBL;

AX←(AL)*(BL)

MULBL;

AX←(AL)*(BL)MULBX;

AX←(AX)*(BX)的低16位DX←(AX)*(BX)的高16位

MULAX;

4、除法指令1〕无符号除法〔DIV〕格式:DIVSRC操作:字节除数:AL←(AX)/(SRC)之商AH←(AX)/(SRC)之余数字除数:AX←(DX:AX)/(SRC)之商DX←(DX:AX)/(SRC)之余数2〕带符号除法〔IDIV〕格式:IDIVSRC操作:同DIV指令商和余数是带符号的:商的符号符合一般代数符号规那么,余数的符号与被除数相同。3〕字节扩展指令〔CBW〕〔略〕格式:CBW;ConvertBytetoWord功能:将AL字节扩展成字,符号位及高字节在AH中;4〕字扩展指令〔CWD〕〔略〕格式:CWD;ConvertWordtoDoubleWord功能:AX扩展成双字,符号位及高字在DX中;这两条指令的作用是对被除数AL或AX进行扩展。5、十进制调整指令〔略〕共六条AAA非压缩BCD码的加法十进制调整DAA压缩BCD码的加法十进制调整AAS非压缩BCD码的减法十进制调整DAS压缩BCD码的减法十进制调整AAM乘法的十进制调整AAD除法的十进制调整〔详情从略〕3.3.3逻辑运算与移位指令〔一〕逻辑运算指令AND逻辑“与〞指令TEST测试指令OR逻辑“或〞指令XOR〔eXclusiveOR)逻辑“异或〞指令NOT逻辑“非〞指令1〕“与〞指令AND格式:ANDdest,src;功能:〔dest〕〔dest〕∧〔src〕 src:立即数、通用存放器、存储器。 dest:通用存放器、存储器。两操作数不能同为存储器操作数操作类型举例:ANDAL,0FH ANDCX,DI ANDSI,[2456H]2〕测试指令TEST格式:TESTdest,src;〔dest〕∧〔src〕 src、dest的规那么同“AND〞操作:操作数相与,结果不保存,用来改变标志位。操作类型举例: TESTBH,7 TESTSI,BP TESTDI,1030H[BX] 3〕“或〞指令OR格式:ORdest,src; dest:存放器、存储器。 src:立即数、存放器、存储器。不能同时为存储器操作数

4〕“异或〞指令XOR格式:XORdest,src dest:存放器、存储器。 src:立即数、存放器、存储器不相同那么为1,相同那么为0;不能同时为存储器操作数5〕“非〞指令NOT格式:NOTdest;操作:按位求反操作数:存放器、存储器,不能是立即数。〔二〕移位指令共有以下8条SAL(ShiftArithmeticLeft)算术左移SAR(Shiftarithmeticright)算术右移SHL(Shiftlogicalleft)逻辑左移SHR(Shiftlogicalright)逻辑右移ROL(Rotateleft)循环左移ROR(Rotateright)循环右移RCL(Rotateleftwithcarry)带进位循环左移RCR(Rotaterightwithcarry)带进位循环右移移位指令的格式操作码reg/mem,CountCount=1或CL,指定移位次数移1位或移位次数在CL中SHLAH,1SALSI,CLSALWORDPTR[BX+5],1ROLBH,1ROLDX,CL字节或字操作,通用存放器或存储器操作数1〕逻辑左移/算术左移指令SHL/SAL这两条指令实现相同的操作操作示意图如以下图;相当于无符号数×2例:

MOVAH,3FH;(AH)=00111111BSALAH,1 ;(AH)=7EHMOVCL,2SALAH,CL;(AH)=F8H0C操作数2〕逻辑右移指令SHR操作示意图如下:指令格式举例:

SHRBL,1 SHRAX,CL SHRBYTEPTR[DI+BP],1

相当于无符号数除以2 操作数C03〕算术右移指令SAR指令操作示意图如以下图所示举例:

MOVAL,88HMOVCL,2SARAL,CL ;AL=E2H操作数C4〕不含进位标志循环左移指令ROL操作示意图如下C操作数指令格式举例:

ROLBH,1 ROLDX,CL ROLWORDPTR12H[DI],1

5〕不含C的循环右移指令ROR操作示意图如下C操作数6〕含C循环左移指令RCL操作示意图如下 C操作数指令格式举例:

RCLBX,1 RCLDL,CL

7〕含C循环右移指令RCR操作示意图如下C操作数指令格式举例:

RCRDI,1 RCRSI,CL 3.3.4串操作指令“串〞就是内存中一段地址相连的字节或字;串操作,也叫数据块操作;可实现存储器数据间的直接传送;8086有5种根本串操作:MOVS〔Movestring〕串传送指令CMPS〔Comparestring〕串比较指令SCAS〔Scanstring〕串扫描指令LODS〔Loadfromstring〕取串指令STOS〔Storeintostring〕存串指令串传送指令MOVS串传送有2种格式:(1)MOVSB字节传送;把数据段中SI寻址的数据传送到附加段中DI寻址的存储区域中;然后修改SI、DI。〔ES:DI〕←〔DS:SI〕;〔SI〕←〔SI〕±1;〔DI〕←〔DI〕±1当方向标志D=0时用“+〞,D=1时用“-〞2000H:1000H附加段(ES)21001H21002H21003H......存储器21000H80H01H9AH20H1000H:0010H数据段(DS)10011H10012H10013H......存储器10010HMOVAX,1000HMOVDS,AX;数据段地址赋值MOVAX,2000HMOVES,AX;附加段地址赋值MOVSI,0013H;源数据块首地址MOVDI,1003H;目的数据块首地址MOVCX,4;数据块长度赋计数器STDLP:MOVSB;完成一个字节数据传送DECCX;计数器减一JNZLP;结果不为0,重复传送HLT

MOVAX,1000HMOVDS,AX;数据段地址赋值MOVAX,2000HMOVES,AX;附加段地址赋值MOVSI,0013H;源数据块首地址MOVDI,1003H;目的数据块首地址MOVCX,4;数据块长度赋计数器LP:MOVAX,[SI]MOVES:[DI],AXDECSIDECDIDECCXJNZLPHLT(2)MOVSW操作:字传送;〔ES:DI〕←〔DS:SI〕;〔SI〕←〔SI〕±2;〔DI〕←〔DI〕±2当方向标志D=0时用“+〞,D=1时用“-〞可见,该类指令可以实现从存储器到存储器的数据传送;而且传送非常简便。

REP

重复串操作执行过程:(1)当(CX)≠0,

(CX)(CX)-1

,执行REP后的串指令。

(2)当(CX)=0

,结束REP,执行下一条指令。REP执行流程图如上例可用REP操作如下MOVAX,1000HMOVDS,AXMOVAX,2000HMOVES,AXMOVSI,0010HMOVDI,1000HMOVCX,4;数据块长度赋计数器REPMOVSB;重复完成字节数据传送HLT从串中取数指令LODS有2种格式:(1)LODSB〔字节〕;〔AL〕(DS:SI),(SI)(SI)±1(2)LODSW〔字〕;〔AX〕(DS:SI),〔SI〕(SI)±2功能:该指令把由SI指定的数据段中某单元内容赋给AL或AX 3.存入串指令STOS有2种格式:STOSB〔字节〕;(ES:DI)(AL),(DI)(DI)±1(2)STOSW〔字〕;(ES:DI)(AX),(DI)(DI)±2与REP联用时,可用来建立一串相同的值,串长度由CX内容决定。4.串比较指令CMPS2种格式:(1)CMPSB〔字节〕(2)CMPSW〔字〕执行操作:(ES:DI)–(DS:SI),结果不存,置标志。字节操作:(SI)(SI)±1,(DI)←(DI)±1字操作:(SI)(SI)±2,(DI)(DI)±25.串扫描指令SCAS有2种格式:(1)SCASB〔字节〕〔AL〕-〔ES:DI〕,〔DI〕〔DI〕±1(2)SCASW〔字〕〔AX〕-〔ES:DI〕,〔DI〕〔DI〕±2两数相减,只影响标志,不影响操作数。用于寻找串中满足条件的数据。

CMPS和SCAS可与前缀

REPE/REPZ和REPNE/REPNZ联合工作

①REPE/REPZ(Equal)

当相等/为零时重复串操作②REPNE/REPNZ

当不相等/不为零时重复串操作3.3.5控制传送指令控制传送指令包括四种:

转移指令,循环控制指令,过程调用指令,中断指令。〔一〕转移指令 转移指令控制程序从一处转换到另一处执行。在CPU内部,转移是通过将目标地址传送给IP来实现的。转移指令包括两种:无条件转移指令、条件转移指令1、无条件转移指令JMP(Jump) 格式:JMP语句标号 JMPLP;2、条件转移指令1〕根据单个条件标志转移①Z标志JZ/JNZJumponZero;JumponEqual②C标志JC/JNC③P标志JP〔JPE〕/JNP〔JPO〕JumponParity;JumponEven;JumponOdd④S标志JS/JNS⑤O标志JO/JNO2〕根据两个无符号数大小关系转移JB、JNAE;JNB、JAEJBE、JNA;JNBE、JAJB:JumponBelow;JAE:JumponAboveorEqualJZ〔或JE〕/JNZ〔或JNE〕3〕根据两个带符号数比较结果转移JL〔JNGE〕/JNL〔JGE〕;JLE〔JNG〕/JNLE〔JG〕L—Less;G—Great;E—Equal注意:所有条件转移指令都是段内〔-128~+127〕范围内转移。〔二〕过程(子程序)调用指令子程序—程序中具有独立功能的局部编写成独立程序模块。子程序调用CALL子过程名返回指令RET〔return〕在子程序的结尾,用来返回主程序〔三〕循环控制指令1、无条件循环LOOP语句标号执行操作:①〔CX〕←〔CX〕-1②假设(CX)≠0,继续循环;否那么退出循环,执行LOOP指令之后的指令。MOVAX,0000HMOVBX,0001HMOVCX,000AHLP:ADDAX,BX……LOOPLP……2、条件循环1〕LOOPZ/LOOPE语句标号执行操作:①〔CX〕←〔CX〕-1②假设CX≠0且Z=1,转向目标地址去执行;否那么执行LOOP指令之后的指令。

2〕LOOPNZ/LOOPNE语句标号执行操作:①〔CX〕

温馨提示

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

评论

0/150

提交评论