微型计算机原理 教学全案



《微型计算机原理 教学全案》由会员分享,可在线阅读,更多相关《微型计算机原理 教学全案(314页珍藏版)》请在装配图网上搜索。
1、单击此处编辑母版标题样式,,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,第五级,,,*,?微型计算机原理?,,开设的根本目的:,,计算机工作原理是电类专业学生知识结构的重要组成局部,相关知识对后续课程、日常生活和工作、开展毕业设计和硕博课题等各个方面都可能有不同程度的作用。学习目标:,,掌握微型计算机系统的结构组成、实现机理、工作原理;,,掌握汇编语言程序设计的初步方法和调试过程;,,建立微型计算机系统整体概念,具备利用微机进行硬件和软件开发的初步能力。,,课程特点:抽象、难理解、乏味!虽然对象是具体的。,,课时安排:共48学时,授课40学时,上机实验8学时。,,要求:加强理解,
2、把相关知识具体化而不要抽象化。,,第一章 微型计算机根本原理,1-1 概述,,1、电子数字计算机概念,,目前通常所说的计算机是指电子数字计算机 。,,电子技术实现、数字化信息处理方式、高度复杂的逻辑电子电路。信息以二进制形式〔逻辑电平形式〕表示;自动地进行信息处理。,,2、计算机分类,,按信息处理方式:数字计算机和模拟计算机。,,模拟计算机由于受元器件质量影响,其计算精度较低,目前已很少生产。,,,,按用途:通用计算机和专用计算机。,,专用计算机针对某用途专门设计。,,按规模、速度〔没有一个统一的标准,1989年IEEE(电气与电子工程师协会)提出一种分类〕,,巨型计算机或超级计算机(Supe
3、rcomputer),,小巨型计算机(Minisupercomputer),,大型主机(Mainframe),,小型计算机(Minicomputer〕,,工作站(Work Station),,个人计算机(Personal Computer—PC),,,,3、计算机开展简史,,1〕机械计算机的诞生1614 年:苏格兰人John Napier创造了一种可以进行四那么运算和方根运算的精巧装置。,,……,,1890年:Herman Hollerith 设计了用于美国人口普查的机器。结果仅用6周就得出了准确的人口统计数据(如果用人工方法,大概要花10年时间)。,,2〕电子计算机时代,,1906 年:
4、美国人Lee De Forest 创造电子管,为电子计算机的开展奠定了根底。,,……,,1946 年: 第一台真正意义上的数字电子计算机〔ENIAC〕由美国宾夕法尼亚大学研制成功。,,重达数吨,占据几间房间,需要多个操作员来维持它们正常工作。,,非常昂贵,以至于只有政府和大型机构才能够买得起。,,当时的人们认为几台或者几十台这样的机器就能够满足全世界的需求了。,,,在此期间,冯.诺伊曼〔VON.NEUMANM〕也研制出一台被认为是现代计算机原型的通用电子计算机。,,根据使用电子器件的不同,电子计算机经历了四个阶段:,,电子管计算机,,(1946—1956),,晶体管计算机,,(1957—196
5、4),,,集成电路计算机,,(1965—1970),,,,超大规模集成,,电路计算机,,(1971—至今),,,用机器语言、汇编语言编写程序,,用于军事和国防尖端技术,,开始使用高级语言,,开始用于工程技术、数据处理和,,其它科学领域,,采用微程序、流水线等技术,提高 运行速度,,出现操作系统、诊断程序等软件,,采用半导体存储器,,采用图形界面操作系统,,器件速度更快,,,软件、外设更加丰富,,微型计算机是第四代计算机时期出现的一种。,,自从1981年IBM公司进入微型计算机领域推出了IBM-PC以后,计算机的开展开创了一个新的时代—微型计算机时代。微型计算机的迅速、大规模的应用与普及
6、,使计算机真正广泛地应用于工业、农业、科学技术以及社会生活与日常生活的各个方面。以前的大型机、中型机、小型机的界线巳经日益模糊与消失。随着微型计算机应用的普及和开展,芯片与微型机的功能和性能迅速提高,其功能已经远远超过了20世纪80 年代以前的小型机、中型机,甚至超过了大型机。,,当前微型计算机运算速度一般为20—30亿次/秒;,,世界最快的计算机速度为280万亿次/秒;,,中国最快的计算机为上海超级计算机中心的“曙光4000A〞,8万亿次/秒,世界排名第31位。,,4、计算机的特点,,处理速度快,,运算精度高,,存储记忆能力强,,自动执行任务功能,,人机交互功能,,,,5、计算机的应用,,数
7、值计算: 根本功能,但此功能应用逐渐缩小;,,信息处理:数据库,管理信息系统,办公自动化系统;目前世界约80%的计算机用于信息处理;,,控制、自动化:过程控制,生产自动化,,辅助分析、设计:CAD,CAM,CAI,,仿真计算,,网络应用,,人工智能:模式识别、神经网络、专家系统、机器人等,,6、计算机开展方向,,当前模式的电子计算机开展趋势是朝微型化和巨型化两方面开展。,,功能开展,,多媒体计算机:更好地支持多媒体技术,音频、视频数据压缩、解压缩技术,多媒体数据的通信。,,计算机智能化:具有推理、联想、学习等思维功能和模式识别功能。,,网络计算机:全面支持网络功能。,,,,新型计算机的研究:,
8、,,神经网络计算机,:从内部结构模拟人脑神经系统。,,,生物计算机,:使用蛋白分子为材料的生物芯片。,,,光学计算机,:用光子代替电子,用光连接代替金属导线连接,运算速度快千倍。,,7、个人计算机的构成,,,中央处理器CPU、主板、内存、硬盘、显卡、显示器、键盘等,,1-2 微型计算机系统的组成,,1、组成局部,运算器ALU寄存器,,控制器,,系统软件:DOS、Windows,,应用软件: Word、Excel、Visual C++,中央处 理 器 CPU,,存储器,,I/O接口,,总线,硬 件,,,,,,,软 件,微 型,,计算机,,系 统,微 型,,计算机,,(主机),,,,
9、外 设,键盘、鼠标,,显示器,,软驱、硬盘、光驱,,打印机、扫描仪,,2、中央处理器,中央处理器CPU〔Central Processing Unit〕具有运算和控制功能,是整个微型计算机的核心,也称微处理器。,,微处理器的主要功能部件有,,〔1〕运算器,也称算术逻辑部件〔ALU〕:用来进行算术和逻辑运算。,,〔2〕控制器:整个系统的指挥控制部件,从内存中取出指令、翻译指令并操控运算器及其它部件完成相应操作。,,〔3〕存放器:包括程序计数器、指令存放器、累加器、地址存放器、数据存放器、通用存放器等。,,,3、存储器〔Memory〕,,记忆部件:存储程序和数据。,,存储器分级配置,,内存:由半导
10、体存储器组成,读写速度快;,,外存:如硬盘、软盘等,容量大,读写速度慢,,程序在外存存放,执行时调入内存。,,4、外部设备、I/O设备、外设〔Peripheral Equipment〕,,完成信息转换、计算机与外界交互;文字、声音等自然信息以及其它物理信息与计算机能识别的二进制信息进行转换;,,使计算机对人有用,至少应有一台外设。,,,5、总线〔Bus〕,计算机各部件之间传送信息的公共通道。,,各部件分时复用总线。,,在某一时刻,只能有一个部件向总线发送数据,否那么形成总线冲突。,,可有多个部件从总线接收数据。,,总线结构降低了部件之间连线数量,提高可靠性;但数据交换速度降低。,,总线按传递信
11、息的内容分为:,,数据总线〔Data Bus --DB〕--双向,,地址总线〔Address Bus--AB〕--单向,,控制总线〔Control Bus—CB〕--双向,,6、微型计算机结构框图,,存,,储,,器,I/O,,接,,口,输,,入,,设,,备,I/O,,接,,口,数据总线 DB,控制总线 CB,地址总线 AB,输,,出,,设,,备,,,CPU,,,1、位与字节,1〕位 ( Bit),,指计算机能表示的最小信息单位。,,在计算机中采用二进制表示数据和指令,故:,,位就是一个二进制位,有两种状态,“0〞 和 “1〞,1-3 微型计算机系统的工作原理,2〕字节 ( Byte ),,相邻
12、的8位二进制数称为一个字节 1 Byte = 8 bit 如: 1100 0011 ;0101 0111,,3〕字〔Word〕,,字是CPU内部进行数据处理的根本单位。,,字长与CPU内部的存放器、 运算器、总线宽度是一致的。,,通常也将2个字节〔16位〕定义为一个字;,4〕位编号,1,0,1,0,0,0,1,0,D7,D6,D5,D4,D3,D2,D1,D0,A7,A6,A5,A4,A3,A2,A1,A0,数据,D,ata,地址,A,ddress,,指令是CPU能执行的一项根本操作。,,如:存数、取数、加、减、乘、除等,2、指令与指令系统,指令系统〔或指令集
13、〕是某CPU所能执行的全部操作的总和。不同的CPU,其指令系统不同。,程序,是用户为使用计算机完成特定任务而编写的,指令的序列,。,,为使指令能被计算机识别,必须以二进制编码形式表示,称为机器码。,,用机器码形式表示的指令不便于人来记忆和理解,于是用一些助记符表示指令代码。如: MOV AX, 3561H; ADD BL, 21H,,用助记符表示指令代码的语言称为汇编语言。,,汇编源程序经特定的软件进行编译,形成机器码程序—目标程序。,,高级语言:按一定语法规那么设计的便于理解和编程的计算机编程语言,需经特定的编译软件转化为机器语言才能被计算机执行。,,3、计算机的工作过程,,程序存放在存储器
14、中,,CPU,上电后自动从存储器特定位置开始逐条执行指令。,,,执行过程: 取一条指令 分析指令 执行指令,标 志,,寄存器,地址总线 AB,,数据总线 DB,,控制总线 CB,,指令寄存器,数据寄存器,控制电路,指令译码器,地,,址,,寄存,,器,程序计数器,R1,R2,R3,R4,寄存器组,运,,算,,器,,,,,存,,储,,器,,举例,,,一段汇编程序,,,MOV AL,,,7,;,将数值,7,装入累加器,AL,中,,,ADD AL,,,10,;,AL,内容与,10,相加,结果存于,AL,中,,,HLT,;,停止操作,编译成机器码:,,10110000 〔MOV AL
15、,X〕,,00000111 〔 X=7 〕,,00000100 〔ADD AL,X 〕00001010 〔 X=10 〕,,11110100 〔HLT 〕,写入存储器,内容,,10110000,,00000111,,00000100,,00001010,,11110100,,,地址,,0000H,,0001H,,0002H,,0003H,,0004H,,4、当前计算机的根本实现方案——冯.诺依曼(Von Neumann)体系结构,由运算器、控制器、存储器、输入设备、输出设备五局部组成,各自行使不同功能;,,指令与数据存放在存储器中,顺序执行;,,采用二进制形式表示信息。,,,该体系结构
16、是冯.诺依曼(Von Neumann)于1946年提出,奠定了计算机实现框架;,,1949年诞生冯.诺依曼结构计算机,至今计算机结构没有根本突破。,,,年代 型号 晶体管数量,,1978,年,8086 2.9,万,,1982,年,80286 13.5,万,,1985,年,80386 32,万,,1990,年,80486 120,万,,1993,年,Pentium 320,万,,1996,年,Pentium Pro 550,万,,1997,年,Pent
17、ium II 750,万,,300MHz,,1999,年,Pentium III,,2000,年,Pentium IV 4200,万,,1.4GHz(0.18um,工艺,),Moore定律: “晶体管的大小将以指数速率变小,而集成到芯片上的晶体管数目将18-24个月翻一番。〞,,--Gordon Moore,1965〔 Intel公司的创始人,著名半导体科学家〕,,二进制〔Binary)表示;计算机表示信息的方式。,,十进制(Decimal)表示;人的自然表示。,,16进制(Hexadecimal)表示;二进制的等价表示,每4位二进制数字等价于一位16进制数字。用0、1、2、3、4
18、、5、6、7、8、9、A、B、C、D、E、F 表示16个数码。,,表示:二进制—B; 十进制—D〔可省略〕;,,十六进制—H,1-4 计算机运算根底,1、常用的计数制,,2、数制间的数值转换,1〕非十进制数化十进制数的方法:各位数码乘以与其对应的权,然后相加即可。,,如: 1011B=1*23+0*22+1*21+1*20=11,,02E3H=0*163+2*162+E*16+3=2*256+14*16+3=739,2〕十进制转化为N进制数的方法,,整数局部除以N,并记下余数,直到商为0;,,将余数按从后往前的顺序排列起来,构成整数局部。,,小数局部乘以N ,并记下结果的整数局部,直到结果的
19、小数局部为0;然后将结果的整数局部从前向后排列起来,构成小数局部。,,3〕十六进制与二进制数的转换,,十六进制数每一位用4位二进制数表示,4〕举例,,求100D的二进制和十六进制表示,,100/2=50余0,,50/2=25余0,,25/2=12余1,,12/2=6余0,,6/2=3余0,,3/2=1余1,,1/2=0余1,,所以100D=1100100B=64H,,其它例:,,,18.125=,10010.001,,B ;101010.111B=,42.875,D,,3、计算机中常用的编码,1)所谓编码是指信息在计算机中的表示方法。信息既包括数字也包括字母、符号和一些不可见的控制符号。,,2
20、)BCD码〔Binary-Coded Decimal) 用四位二进制数表示一位十进制数。,,3)ASCII码〔American Standard Code for Information Interchange),,用7位二进制进行编码〔00-7FH〕,可表示128种字符,见附录1。,,在机器内用一个字节表示,D7=0。,,4)汉字编码:,,常用国标码,用两个,7,位编码表示汉字和一些图形符号;,,在机器内用两个,8,位字节表示,称为内码;,,每个字节的,D7=1,,,以与,ASCII,码相区别。,,如汉字‘啊’的国标码为,0110000 0100001,;,,对应内码为,10110000 1
21、0100001,,在计算机中,符号只能用数字来表示。,,用二进制数字的,最高位表示该数的符号,。正数为,0,,负数为,1,。其余位为数值位。,,机器数的表示方法有:,原码、反码、补码,。,4、计算机中有符号数的表示,5、原码、反码和补码,,1〕原码:正数的原码为该数的二进制数;,,负数的原码仅符号位为1。,,例:假设用8位二进制数表示机器数,那么13的原码为00001101;-13的原码为10001101。,,原码便于乘除运算,但不便于加减运算。,,2〕反码,,正数的反码等于原码;,,负数的反码为其原码的符号位不变,数值位按位取反。,,例:假设用8位二进制数表示机器数,那么13的反码为0000
22、1101;-13的反码为11110010;,,对反码取反得到相反数的反码。,,例如:,,-〔-13〕反码为〔11110010〕的各位取反。,,3〕补码,,正数的补码等于原码;,,负数的补码为其反码+1。,,例:假设用8位二进制数表示机器数,那么13的补码为00001101;-13的补码为11110010+1=11110011。,,对补码取补可得到相反数的补码。,,-〔-13〕的补码为00001100+1=00001101=13,,4〕补码的性质与作用,,[x+y]补 = [x]补 + [y]补,,[x-y]补 = [x]补 + [-y]补,,[[x]补]补=x;补码的补码等于原码,,如 32-
23、13=32+〔-13〕=00100000B+11110011B=00010011B,,而13-32=00001101B+11100000B=11101101B,,=-19的补码,,采用补码可将减法转化为加法,而且符号位同数值位一同参与运算,运算简单。,,引入补码的目的是:1〕便于加减法运算;2〕使加法和减法相统一,降低硬件复杂性。,,例如:有两个补码X=00100000B,Y=00001101B,,计算X-Y的过程如下:,,1〕对Y取补,得到其相反数的补码,,〔-Y〕=11110011B,,2〕启动CPU中的加法器,计算X+(-Y),,00100000B+11110011B=000010011
24、B,,,思考:计算Y-X应怎样处理?,,,M,位二进制数能够表示的无符号数范围为:,,,0,~,2,M,-1,,M,位二进制数能够表示的有符号数范围为:,,原码,-2,M-1,+1,~,2,M-1,-1,,,反码,-2,M-1,+1,~,2,M-1,-1,,,补码,-2,M-1,~,2,M-1,-1,6、无符号数和有符号数的表示范围,,典型,8,位二进制数的码值,,数值 原码 反码 补码,,,127 7FH 7FH 7FH,,126 7EH 7EH 7EH,,1 01H 01H 01H,,0 00H/80H 00H/0FFH 00H,,-1 81H 0FEH
25、 0FFH,,-2 82H 0FDH 0FEH,,-127 0FFH 80H 81H,,-128 / / 80H,,如上所述,一定位数的二进制数能够表示的数值范围是有限的。,,两数相加或相减,结果超过该数字位能够表示的无符号数范围〔最高位产生进位〕,称为进位。,,两数相加或相减,结果超过该数字位能够表示的有符号数范围〔与进位无关〕,称为溢出。,,进位和溢出是互不相干的两种情况。,,课后自己结合进位和溢出概念给出具体算例。,7、进位与溢出,,第二章 Intel-8086微处理器结构,,2-1 Intel-80x86系列微处理器概述,型号,发布年份,字长,晶体管数(万),主
26、频,,(MHz),数据总线,外部总线,地址总线,寻址空间,高速缓存,8086,1978,16,2.9,4.77,16,16,20,1M,No,8088,1979,16,2.9,4.77,16,8,20,1M,No,80286,1982,16,13.4,6-20,16,16,24,16M,No,80386,1986,32,27.5,12.5-33,32,32,32,4G,Yes,80486,1989,32,120-,,160,25-100,32,32,32,4G,8K,Pentium,,(586),1993,32,310-,,330,60-166,64,64,32,4G,8K,,8K,Penti
27、um,,Pro(P6),1995,32,550,150-200,64,64,36,64G,8K,,8K,Pentium II,1997,32,750,233-350,64,64,36,64G,32K,,512K,,,1971,年推出,Intel 4004,芯片,被认为是世界上第一个,微处理器,(CPU),。,,1978,年,Intel,公司推出,8086 CPU,,,16,位。,1979,年又推出,8088,,,8,位数据线,以满足与当时的,8,位机间的兼容性。,,IBM,公司进入个人计算机领域,采用,Intel 8088,芯片,使,Intel CPU,成为主流。,,2-2 Intel-80
28、86微处理器结构,1、,8086概况,16位微处理器,,地址总线20条,寻址能力220=1MB,,DIP-40〔双列直插式40脚〕封装,2、,8086的功能结构,,传统,CPU,执行指令的过程是:取指令-,>,执行指令-,>,再取指令-,>……,,串行操作。,,而,8086,的取指令与执行指令操作是由两个不同的部件完成,可同时进行。目的是提高,CPU,的执行速度。,,,8086从功能上可分成两局部:,,总线接口部件BIU(Bus Interface Unit);,,执行部件EU(Execution Unit)。,,总线接口部件BIU负责与内存或I/O端口进行指指令和数据传送;执行部件EU负责指
29、令执行。,,①BIU从内存中取指令送到指令队列;,,②当EU执行指令时,BIU要配合EU从指定的内存单元或I/O端口中读取数据,或者把EU的操作结果送到指定的内存单元或I/O端口去。,,3、8086的存储器组织,,1)8086寻址能力的扩展,,存储器由很多个8位的存储单元组成,每个存储单元对应于一个地址编码。CPU要访问某存储单元,需将该单元地址发到地址总线。,,8086内部与地址有关的存放器均为16位,只能寻址216=64KB的存储器空间。,,为了扩大CPU可访问的存储器容量,8086 CPU采用两个存放器来形成地址:段地址存放器、偏移地址存放器。,,这样,8086实际上有20条地址线,能够
30、访问的存储单元数〔即寻址能力〕为220=1MB;,,地址范围:00000H~0FFFFFH,,2)8086中20位地址的生成,,将1MB存储空间分成假设干个不超过64KB的区段,称为存储器的段〔Segment〕。,,每个存储段有一个16位的基准地址,称为段地址;,,以段地址为基准,段内各存储单元的相对地址称为偏移地址〔16位〕;,,段地址存放在CPU的段存放器中;偏移地址存放在偏移地址存放器中。,,20位物理地址=,,16位段地址×24〔左移四位〕+16位偏移地址,,例如:段地址为2500H,偏移地址9700H,,那么形成的物理地址为25000H+9700H=2E700H,,,3)物理地址、逻
31、辑地址,,物理地址,:存储器中各存储单元的实际地址。,,逻辑地址,:用段地址和偏移地址表示的相对地址。,,,表示形式,为,段地址,:,偏移地址,,,如,2000H:1340H,,一个物理地址可对应多个逻辑地址;,,如物理地址,12345H,,,逻辑地址可以是,,,1234H:0005H,;,1200H:0345H,;,1100H:1345H,,4〕段的种类,,有了段存放器,可将1M的存储空间分成很多个段;,,为便于管理,8086设计上将不同的存储内容存放在不同的段中;分为代码段、数据段、堆栈段和附加段。,,用户编写的程序放在代码段中,使用的数据放在数据段中。,,4、8086的存放器组,,数据存
32、放器:AX、BX、CX、DX,,指针及变址存放器:SP、BP、SI、DI,,段存放器:CS、DS、ES、SS,,指令指针IP 〔Instruction Pointer〕,,状态标志存放器PSW〔Program State Word),,说明,,数据存放器和指针及变址存放器又统称通用存放器;,,指令指针与状态标志统称控制存放器;,,所有存放器均为16位。,,1〕数据存放器,,AX:通用存放器;算术运算的主存放器——累加器〔Accumulator〕;,,BX:通用存放器;一些指令中作为基址(Base)存放器;,,CX:通用存放器;一些指令中作为计数器(Counter) ;,,DX:通用存放器;一些
33、指令中作为数据(Data)存放器与AX配合使用。,,说明:,,在一般指令中,这些存放器可作为通用存放器使用,在一些特定的指令中,各存放器有特定功能;,,既可作为16位使用,也可分成两个8位存放器使用,,高8位记作 : AH、BH、CH、DH,,低8位记作 : AL、BL、CL、DL,,2〕指针及变址存放器,,SP:堆栈指针存放器(Stack Pointer),用来指示栈顶的偏移地址。,,BP:基址指针存放器(Base Pointer),指示堆栈区中的一个基地址。,,SI:源变址存放器(Source Index)。,,DI:目的变址存放器(Destination Index)。,,说明:这4
34、个存放器也可以作为通用存放器使用。,,3〕段存放器,,CS:代码段(Code Segment);存放程序段的段地址。,,DS:数据段(Data Segment);存放数据段的段地址。,,ES:附加段(Extra Segment);存放附加段的段地址.,,SS:堆栈段(Stack Segment);存放堆栈段的段地址。,,4〕控制存放器,,IP:指令指针(Instruction Pointer)存放器;能自动加1,生成代码段中下一条将要取的指令的偏移地址。,,PSW:程序状态字(Program State Word)存放器;用各个状态位反映算术逻辑运算的一些状态标志和控制标志。,,5、PSW标志
35、位的定义,,,C—进位标志,结果在最高位产生进位或借位时置1;,,P—奇偶标志,结果中1的个数为偶数时置1;,,A—半进位标志〔低4位向高4位的进位〕;,,Z—运算结果为零时置1;,,S—符号标志,该标志位与结果的最高位相同;,,O—溢出标志,运算结果超出有符号数表示范围时置1;,,D—方向标志,用于串操作,置1使串操作按减1执行;,,T—跟踪标志,置1后处理器进入单步执行方式,便于调试;,,I—中断允许标志,置1允许CPU接受外部可屏蔽中断;,,前6种标志为状态标志,后3种标志为控制标志。,O,D,I,T,S,Z,A,P,C,,CPU怎样判断是否溢出?,,按结果的最高位和次高位的进位情况判断
36、;对两个进位进行异或,异或结果为,1,表示有溢出,为,0,表示无溢出。,,原理不做讨论。,,第三章 Intel-8086的指令系统,,3-1 8086的指令格式,指令由操作码和操作数两局部字段组成。,,如:MOV AX,2345H,,MOV为操作码;AX和2345H为操作数。,,操作码 指示计算机执行何种操作。,,操作数 参加操作的数据对象或其所在的地址。,,,,,8086,系列指令包括无操作数指令、单操作数指令和双操作数指令。,,如,HLT,;,无操作数指令,,,INC CX,;,单操作数指令,,,ADD AX , BX,,;,双操作数指令。第一操作数为,目的操作数,,第二操作数为
37、,源操作数。,,3-2 8086指令的寻址方式,1、指令中数据的存放位置,,指令中进行操作的数据存放位置有三种情况:,,1)存于指令中(立即数),,数据包含在指令中,即被操作数据直接表示在指令的操作数字段中。,,例:MOV AL , 08H,,这种操作数称为立即数。,,2)存于存放器中(存放器操作数),,数据存放在CPU的一个存放器中。,,例:INC CX,,3)存于存储器中(存储器操作数),,数据在内存中或在I/O端口中,存放数据的偏移地址以某种方式表示在指令中。,,如:,,MOV AX,[2500H],,MOV AX, [BX],,此例中[2500]、[BX]为存储器操作数。,,存储
38、器操作数中操作数字段指示此操作数的偏移地址,而段地址由某个段存放器提供。此例中默认为数据段DS。,,2、8086指令的寻址方式,,寻址方式:指令中指明操作数存放位置的表达方式。,,8086有6种寻址方式,,1〕立即寻址,,操作数为立即数,直接存放在指令的操作数字段中。,,只能作为源操作数。,,例:MOV AL, 05H,,指令执行后:,,,(AL)=05H,,例: MOV AX, 3064H,,指令执行后:,,(AX)=3064H,,,2) 存放器寻址方式,,操作数在指令所指示的存放器中。,,表示格式:直接在指令中写出存放器名称。,,如 MOV BX,AX,,MOV CL,23H,,3
39、〕直接寻址,,操作数存放在内存中,操作数的偏移地址直接表示在指令中。,,表示格式:[偏移地址],,如 MOV AX,[3100H],,默认操作数存放在内存的数据段中。,,例:MOV AX,[3100H],,假设 〔DS〕=6000H,,(63100H)=3050H,,那么 〔AX〕=3050H,...,操作码,00,31,...,50H,30H,...,6 0 0 0 0,3 1 0 0,+,6 3 1 0 0,63100H,30H,50H,AH,AL,代,码,段,数,据,段,,操作数也允许存放在其它段中(SS,ES),此时应在指令中指明段超越。,,段超越,,假设操作数不在指令默认的段中,而是
40、在其它某个段中,那么需要在指令中加以表示,这种情况称为段超越。,,表示,,如直接寻址方式中操作数在附加段中,那么应表示为 MOV AX,ES:[3100H],,4) 存放器间接寻址方式,,操作数在存储器中, 操作数偏移地址在BX、SI、DI或BP的某个存放器中。,,假设以SI、DI、BX作为间接寻址存放器,,那么默认操作数存放在数据段中,用DS存放器的内容作为段地址。,,假设以BP存放器作为间接寻址存放器,,那么默认操作数存放在堆栈段中,用SS存放器的内容作为段地址。,,如 MOV BX,[DI],,假设,,〔DS〕=6000H,,〔DI〕=2000H〔62000H〕=50A0H,,
41、那么执行指令后,,(BX)=50A0H,表示格式: [寻址存放器],,存放器间接寻址方式也允许段超越。,,如,,MOV AX, DS:[BP],,MOV CH, SS:[SI],,MOV ES:[BX], AL,,设〔AL〕=B2H,〔BX〕=1234H,,〔ES〕=1400H,那么执行指令后:,,变址寻址方式,,操作数的偏移地址是以存放器SI、DI、BX、BP的内容与指令中给定的8位或16位偏移量之和。,,如 MOV AH,1000H[BX],,或写成 MOV AH,[BX+1000H],,又如 MOV 25H[BP] ,BX,,表示格式:位移量[存放
42、器] 或 [存放器+位移量],,假设以SI、DI、BX寻址,那么默认在数据段中;假设以BP寻址,那么默认在堆栈段中。,,6)基址加变址寻址方式,,操作数的偏移地址是一个基址存放器BX或BP和一个变址存放器SI或DI的内容之和加上给定的8位或16位偏移量。,,表示格式: 位移量[基址][变址],,或 [位移量+基址+变址],,如 MOV 10H[BX][SI],CX,,或写为 MOV [10H+BX+SI],CX,,BX寻址默认为数据段;BP寻址默认为堆栈段。,,3-3 8086指令系统,,可以分为以下六类,:,,,数据传送指令,,算术运算指令,,逻辑运算和移位指
43、令,,串操作指令,,控制转移指令,,处理器控制指令,,3.3.1 数据传送类指令,包括:,,通用传送指令;累加器专用传送指令;,,地址传送指令;标志传送指令;,,1、通用传送指令,,1)根本传送指令〔MOV〕,,指令格式:MOV DST,SRC;,,源操作数和目的操作数可用上述6种寻址方式的任何一种。,,操作:将SRC内容赋给DST。,,所有通用传送指令都不影响标志位。,,注意:不能用MOV指令实现以下传送,,存储器操作数之间不能直接传送,,MOV [1000H] , [DI] 错,,应改为,,MOV AX , [DI],,MOV [1000H], AX,,立即数不能直接
44、传送段存放器,,MOV DS,2000H 错,,应改为,,MOV AX, 2000H,,MOV DS , AX,,段存放器之间不能直接传送,,MOV ES , DS ; 错,,应改为,,MOV BX , DS,,MOV ES , BX,,CS只可以作为源操作数,,例:MOV CS,AX ;错,,MOV AX,CS ;对,,源操作数和目的操作数的宽度必须相同,,立即数,段存放器,存储器,,(各种寻址),通 用,,存放器,,2)堆栈指令(PUSH 、POP),,堆栈(STACK)的概念,,数据的存储按后进先出(Last In First Out——LI
45、FO)原那么组织的一段内存区域。,,入栈指令〔PUSH〕:,,格式:PUSH src,,操作过程分两步完成:,,(SP) (SP) - 2,,((SP)+1,(SP)) (src),,功能:把一个字压入由SP指向的堆栈区。,,如:PUSH AX,,假设〔AX〕=50A0H,,SP=2002H,,SS=6000H,,那么执行 PUSH AX的结果如右图。,,假设再执行,,PUSH BX,,设〔BX〕=0ABCDH,结果如右图。,6000H,2000H,SS,SP,6 0 0 0 0,2,0,0,0,+,6 2 0 0 0,...,AOH,50H,...,620
46、00H,50H,A0H,AX,堆,栈,段,ABH,CDH,,出栈指令〔POP〕,,格式:POP dst ;,,操作:,,(dst) ((SP)+1,(SP)),,(SP) (SP)+2,,功能:把SP所指向的堆栈顶部的一个字 送入目的地址,同时进行修改堆栈指针。,,如: POP BX,,POP AX,,,,PUSH [2300H],,PUSH CS,,但,POP CS,错,,堆栈用途如以下图,,,断点信息:程序断点地址、标志存放器及其它能被子程序使用和改变的存放器。,,堆栈用途,,存放存放器或存储器中暂时不使用的数据,在使用这些数据时可方便地将其弹出;
47、,,调用子程序或发生中断时要保护断点信息〔入栈〕,子程序或中断返回时恢复断点信息〔出栈〕。,,应注意的问题,,堆栈操作都按字操作;,,PUSH , POP 指令的操作数可以是CPU内部存放器或存储单元;,,PUSH CS 合法,POP CS 非法;,,执行PUSH 指令, (SP)-2 (SP),低字节放在低地址,高字节放在高地址;,,SP总是指向栈顶;,,堆栈最大容量即为SP的初值。,,3〕交换指令〔XCHG),,格式:XCHG dst , src ;(dst) (src),,可以实现:存放器之间,,存放器和存储器之间,,注意:,,存储器之间不能直接交换;,
48、,段存放器不能作为操作数;,,允许字或字节操作。,,2、累加器专用传送指令,,1〕输入指令〔IN〕,,功能:用于CPU从外设端口接收数据。,,具体形式有四种:,,IN AL, data8;从8位端口地址输入一个字节,,IN AX, data8;从8位端口地址输入一个字,,IN AL, DX;从16位端口地址输入一个字节,,IN AX, DX ; 从16位端口地址输入一个字,,例1:,,IN AL, 80H;,,从地址为80H的端口读入一个字节;,,例2:,,MOV DX, 1020H; 将16位端口地址赋给DX,,IN AX, DX; 从(DX)为地址的端口读入16位数据
49、。,,解释:,,1〕CPU对各个外部设备接口也采用地址编码。 8086CPU连接外部设备的地址可以是8位或16位。,存,,储,,器,I/O,,接,,口,输,,入,,设,,备,I/O,,接,,口,数据总线 DB,控制总线 CB,地址总线 AB,输,,出,,设,,备,,CPU,,20位,8位或16位,,解释:,,2〕8086CPU访问存储器和访问外部设备采用不同的指令形式,外设地址与存储器地址可以重叠。,,通过CPU的IO/M引脚控制存储器或外设被选通;当访问存储器时IO/M引脚输出低电平,当访问外设时该引脚输出高电平。,,,MOV BX,[1234H],;从,存储器,的[1234H]单元读数据,
50、放入BX。CPU执行该指令使,IO/,M,=0,,,MOV DX,1234H,;立即数赋给DX,,,IN AX,DX,;从地址为[1234H] 的,外设,读数据,,,CPU执行该指令使IO/,M,=1,存,,储,,器,I/O,,接,,口,输,,入,,设,,备,I/O,,接,,口,数据总线 DB,控制总线 CB,地址总线 AB,输,,出,,设,,备,,CPU,,IO/,M,,2〕输出指令〔OUT〕,,功能:用于CPU向外设端口发送数据,,四种形式:,,OUT data8 , AL;向8位地址端口输出一个字节,,OUT data8, AX ;向8位地址端口输出一个字,,OUT DX , AL;向1
51、6位地址端口输出一个字节,,OUT DX , AX ;向16位地址端口输出一个字,,3、目的地址传送指令,,8086 提供三条:,,LEA,,LDS,,LES,,1〕LEA (Load Effective Address),,格式: LEA reg16 , mem,,Reg16 — 16位通用存放器; mem — 存储单元;,,功能:将源操作数的偏移地址传送到目的操作数;,,注意:源操作数必须以存放器间接寻址、变址寻址、基址加变址寻址等方式表示的存储器操作数;目的操作数为一个16位的通用存放器。,,例: LEA AX,[DI],,设〔DI〕=1005H,,执行 LEA AX,[D
52、I],有〔AX〕=1005H,,例: LEA BX,[BX+SI+0F62H],,设〔BX〕=0400H,〔SI〕=003CH,,执行指令后:,,源操作数地址为:〔BX〕+〔SI〕+ 0F62H,,=0400H+003CH+0F62H=139EH,,那么〔BX〕=139EH,,2〕LDS (Load pointer using DS)(略),,格式:LDS reg16 , mem ;,,功能:把源操作数指定的4个相继字节的数据分别送指令指定的存放器及DS存放器中。,,〔reg16〕←〔mem〕,,〔DS〕←〔〔mem〕+2〕,,,,3〕LES (Load pointer usin
53、g ES )(略),,格式:LES reg16 ,mem ;,,功能:把源操作数指定的4个相继字节的数据分别送指令指定的存放器及ES存放器中。,,〔reg16〕←〔mem〕,,〔ES〕←〔〔mem〕+2〕,,例,:,,设,(DS)=0C 000H,,指令 LDS SI, [0010H],,执行指令后,:,,(SI)=0180H,,(DS)=2000H,,,80H,01H,00H,20H,C000H:0010H,(DS),C0011H,C0012H,C0013H,...,...,存储器,C0010H,,例,:,,设,(DS)=B 000H,,(BX)=080AH,,指令 LES DI
54、, [BX],,执行指令后,:,,(DI)=05A2H,,(ES)=4000H,A2H,05H,00H,40H,B000H:080AH,(DS),B080BH,B080CH,B080DH,...,...,存储器,(BX),B080AH,,4、标志传送指令,,8086有四条标志传送操作指令:,,1〕LAHF〔Load AH into flags〕,,格式:LAHF ;,,功能:标志存放器低八位传送给AH,,〔AH〕←〔PSW的低字节〕,,2〕SAHF〔Store AH into Flags〕,,格式:SAHF,,功能:AH内容传送给标志存放器低八位。,,〔PSW的低字节〕←〔AH〕,,3〕
55、PUSHF〔Push Flags 〕,,格式:PUSHF ;,,功能 : 标志进栈。,,〔SP〕←〔SP〕-2,,〔〔SP〕+1,〔SP〕〕←〔PSW〕,,4〕POPF〔Pop Flags 〕,,格式:POPF;,,功能:标志出栈。,,〔PSW〕←〔〔SP〕+1,〔SP〕〕,,〔SP〕←〔SP〕+2,,3.3.2 算术运算类指令,包括:,,加法指令、减法指令、乘法指令、除法指令,,1,、加法指令,,8086,具有,5,条加法指令,:,,ADD(Addition),加法指令,,ADC(Add with Carry),带进位加法指令,,INC(Increment),加,1,指令,,AA
56、A(ASCII adjust for addition),加法,ASCII,调整指令,(,略,),,DAA(Decimal adjust for addition),加法十进制调整指令,(,略,),,1〕不含进位的加法指令ADD,,指令格式:ADD dest , src ;,,功 能 :(dest) (dest)+(src),,Src:立即数,通用存放器,存储器,,dest:通用存放器,存储器,,例:,,ADD CL,10,,ADD DX,SI,,ADD AX, [2F00H],,ADD 100H[BX], AL,,ADD [DI], 30H,,特点:
57、,,可进行8位或16位的无符号数或有符号数加法运算;,,源操作数和目标操作数不能同时为存储器, 不能为段存放器;,,指令影响标志位,,8位〔有符号〕数相加,和超出范围〔-128~+127〕,或16位〔有符号〕数相加,和超出范围(-32768 ~ +32767),那么 O=1,,8位〔无符号〕数相加,和超过255,或16位〔无符号〕数相加,和超过65535,那么 C=1,,,其他标志〔S,A,P,Z)由运算结果按定义确定。,,2〕含进位加法指令ADC(Add with carry),,格式: ADC dest,src ;,,功能:〔dest〕←〔dest〕+〔src〕+C,,C: 进位
58、标志C的当前值,,特点: 与ADD同。,,类型举例:,,ADC CX, 300,,ADC AL, BL,,ADC DX, [SI],,用途:,ADC,指令主要用于多字节运算中。,,,如:求两个,32,位数,12345678H,与,0ABCDEFABH,之和,,MOV AX, 1234H,,MOV BX, 5678H,,ADD BX, 0EFABH,,ADC AX, 0ABCDH,,,3〕加 1 指令INC (Increment by 1 ),,格式: INC dest ;,,功能: (dest)←〔dest〕+1,,dest : 通用存放器、存储器;,,
59、用途:用于在循环程序中修改循环次数或地址指针。,,标志位影响情况:影响S, Z, A, P, O;不影响C。,,例:,,INC DL ; 8位存放器+1,,INC SI ;16位存放器+1,,而,,INC [2100] ;错误,应写成,,INC WORD PTR [2100] ;,,存储器内容+1〔字操作〕,PTR为属性转换操作。,,又如,,INC BYTE PTR [BX][SI] ;字节操作,,,,2、减法指令〔Subtraction),,8086有7条减法指令:,,SUB(Subtraction) 不含借位减法指令,,SBB(Su
60、btraction with Borrow)含借位减法指令,,DEC(Decrement by 1) 减1指令,,CMP(Compare) 比较指令,,NEG(Negate) 求补指令(略),,AAS(ASCII Adjust for Subtraction) 减法ASCII调整指令(略),,DAS(Decimal Adjust for Subtraction) 减法十进制调整指令(略),,1〕不含借位减法指令SUB(Subtraction),,格式:SUB: dest,src;,,功能:〔dest〕←〔dest〕-〔src〕,,Src:立即数,通用存放器,存储器。,,De
61、st:通用存放器,存储器。,,例: SUB AL, 37H,,SUB BX, DX,,,,该指令影响标志位: A、C、O、P、S、Z标志。,,2〕含借位减法指令 SBB(Subtraction with borrow),,格式:SBB dest,src;,,功能:〔dest〕←〔dest〕-〔src〕-C,,Src: 立即数,通用存放器,存储器,,dest:通用存放器,存储器,,指令影响标志位,,例:SBB BX, 100H,,SBB CX, DX,,SBB WORD PTR 100H[BP], 100,,3〕减 1 指令DEC (Decrement by 1
62、),,格式:DEC dest,,功能: (dest)←〔dest〕-1,,dest: 通用存放器、存储器。不能是段存放器。,,用途:用于在循环程序中修改地址指针和循环次数。,,标志位影响情况:影响S,Z,A,P,O;不影响C。,,4〕求补指令NEG (Negate),,格式: NEG dest ;,,功能:(dest) ← 0 - (dest),,dest : 通用存放器 、存储器。,,操作: 把操作数按位求反后末位+1。,,影响标志:A、C、O、P、S、Z。,,C: 操作数为0时求补,C=0 ; 一般使C=1.,,O: 对-128 或-32768求补,
63、O=1; 否那么O=0.,,5) 比较指令CMP(Compare),,格式:CMP dest,src ; 〔dest〕-〔src〕,,结果不保存,只是用来影响标志位。,,影响标志:A、C、O、P、S、Z。,,src:立即数,通用存放器,存储器。,,dest:通用存放器,存储器。,,例: CMP AL,0AH ;存放器与立即数比较,,CMP CX, DI ;存放器与存放器比较,,CMP AX, [1000H] ;存放器与存储器比较,,CMP [BX+5], SI ;存储器与存放器比较,,用途:,,用比较指令来比较两个数之间的关系:,,两者是否相等,两个数中大小关系。
64、,,〔1〕根据Z标志,判断两者是否相等;,,〔2〕根据C标志, 判断两个无符号数的大小;,,〔3〕用S、O标志,判断两个带符号数的大小。,,算术运算对标志位的影响举例:,,1111 1111对应无符号数为255,有符号数-1;,,1000 0010对应无符号数130,有符号数-126;,,1111 1101对应无符号数253,有符号数-3;,,求:1111 1111 +1000 0010 =1000 0001,,结果的无符号数为,129,,有符号数为-127,; C=1 O=0,,求:1111 1101+1000 0010=0111 1111,,结果的无符号数为,127,,有符号数为,127,
65、;C=1;O=1,,算术运算指令执行这些运算时,自动地将相关标志位置为相应的状态。,,如何用CMP指令判两个有符号数的大小:,,CMP X1,X2,,用S标志和O标志做异或运算,假设异或结果为0,那么X1>X2;否那么X1 66、L),,,MUL BL ;,,,AX ← (AL)*(BL),,MUL BX;,,,AX ← (AX)*(BX)的低16位,,DX ← (AX)*(BX)的高16位,,,MUL AX;,,,,4、除法指令,1〕无符号除法〔DIV〕,,格式:DIV SRC,,操作:,,字节除数:AL ← (AX)/(SRC) 之商,,AH ← (AX)/(SRC) 之余数,,字除数: AX ← (DX:AX)/(SRC)之商,,DX ← (DX:AX)/(SRC) 之余数,,2〕带符号除法〔IDIV〕,,格式:IDIV SRC,,操作:同DIV指令,,商和余数是带符号的:商的符号符合一般代数符号规那么,余数的符号与被除数相同。,,3〕字节扩展指令〔CBW〕 〔略〕,,格式:CBW ;Convert Byte to Word,,功能:将AL 字节扩展成字,符号位及高字节在AH中;,,4〕字扩展指令〔 CWD〕 〔略〕,,格式:,,CWD ;Convert Word to Double Word,,功能:AX扩展成双字,符号位及高字在DX中;,,这两条指令的作用是对被除数AL或AX进行扩展
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。