微机原理知识点总结课件_第1页
微机原理知识点总结课件_第2页
微机原理知识点总结课件_第3页
微机原理知识点总结课件_第4页
微机原理知识点总结课件_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

1、何谓计算机? 计算机是一种能够自动进行算术和逻辑运算的电子装置。 关键词:电子装置、运算、自动 计算机特点:二进制、高速计算机的编码系统。 运算是计算机的核心功能。它所有的扩展功能都和编码有关。 计算机中只能存储和处理二进制数码,一些数据、字符、汉字、图像声音等信息在计算机中都是用规定好的二进制组合代码来表示的,称为计算机的编码系统。 计算机硬件由运算器、控制器、存储器、输入设备、输出设备五大基本部件组成:计算机分类: 超级计算机、大型计算机、小型计算机、微型计算机或个人计算机 嵌入式计算机微型计算机或个人计算机是目前发展最快, 应用最普及的计算机。CPU是电脑的核心,即中央处理器。微型计算机

2、的应用:1、科学计算2、信息处理3、计算机辅助技术4、过程控制 5、人工智能6、网络通信总线是计算机系统模块化的产物。分时和共享是总线的两个基本特性。系统总线包括:地址总线、数据总线、控制总线。微型计算机的性能指标:1. 运算速度2. 字长(目前常用的微型机都是32位或64 位。) 3. 存储器的容量常见的寄存器有:缓冲寄存器、移位寄存器、计数器、累加器。微型计算机的软件系统: 计算机软件是指支持计算机运行的各种程序,以及开发、使用和维护这些程序的各种技术资料的总称。计算机的硬件和软件二者缺一不可,否则不能正常工作 系统软件的主要功能是简化计算机操作,充分发挥硬件功能,支持应用软件的运行并提供

3、服务。 应用软件处于软件系统的最外层,直接面向用户,为用户服务。应用软件是为了解决各类应用问题而编写的程序,包括用户编写的特定程序,以及商品化的应用软件和套装软件。程序设计语言,是人机交流信息的一种特定语言。在编写程序时用指定的符号来表达语义。8086 微处理器的内部结构1. 构成:8086 由执行部件(EU)和总线接口部件(BIU)组成。2.功能:执行部件(EU)负责指令的执行,总线接口部件(BIU)负责对总线的操作,进行与存储器或IO 接口的数据交互。3. EU各部分功能 4个通用数据寄存器 AX 用作累加器; BX 一般用作基地址寄存器; CX 通常用作计数器; DX 多用作辅助累加器。

4、 4个专用地址指针寄存器 SP 堆栈指针寄存器; BP 基地址指针寄存器; SI 源变址寄存器; DI 目的变址寄存器。 算术逻辑单元(ALU): ALU 执行16位的算术与逻辑操作。 标志寄存器(FR):16位寄存器,其中有7位未用。4. 总线接口部件BIU 1.功能:BIU 控制完成全部总线操作,自动从存储器取出指令并根据EU的命令控制数据在CPU 和存储器或IO 接口之间传送。2.工作过程:BIU 将逻辑地址转换成物理地址,如果是存储器访问,BIU 通过地址加法器将16 位段寄存器提供的段地址移位,和16 位偏移地址寄存器的地址相加,得到20 位的存储器地址,再根据总线操作类型读取指令或

5、读写操作数。BIU得到指令以后,将其送入6 字节的指令队列,以备EU 顺序取出执行。3.构成: 段寄存器、指令指针寄存器、地址加法器、指令队列、总线控制逻辑 4个16位的段寄存器 CS 代码段寄存器,存放程序段地址; DS 数据段寄存器,存放数据段地址; ES 扩展段寄存器,存放辅助数据段地址 SS 堆栈段寄存器,存放堆栈段地址。 指令指针寄存器(IP) 用于存放程序段的偏移量地址(16位)。地址加法器 根据逻辑地址计算出20 位物理地址。指令队列 存放多条指令用于指令预取。(6字节)总线控制逻辑 实现对总线操作的控制,产生控制号。指令流水线:串行操作和并行操作8086 的存储器组织1.存储空

6、间:8086 有20 根地址线,可以寻址MB 的存储器空间。 对应存储器的地址编码为 00000 H FFFFF H。 2.存储器分段:为了能够利用16 位寄存器访问MB 的内存空间。3.存储器地址 物理地址:每个存储器单元由20条地址线的一个惟一编码与之对应。这个 编码也叫存储单元的地址。这种实际的存储器编码地址称为物理 地址或绝对地址。 段基址:段的起始地址的高16 位称段基址。 偏移地址:段内的相对地址,相对于段起始地址的偏移值,称偏移地址。 逻辑地址:段基址和偏移地址都不是绝对地址, 而是一个相对的地址,通常称 这种程序中编排的地址为逻辑地址。 逻辑地址表示格式: 段基址:偏移地址 物

7、理地址形成: 把段基址存放到段寄存器中,偏移地址存放到偏移量寄存器中, 经过20位的加法器就可以形成任意一个20 位的物理地址。4.数据的存放 在计算机的存储器中存放着三类信息: 代码:指令的机器码, 指示CPU 执行 什么操作。 数据:数值和字符, 程序加工的对象; 暂存数据(堆栈数据):临时保存的返回地址和中间结果。 为了避免混淆, 这三类信息通常分别存放在各自的存储器区域内。用段寄存器指示这些存储区域的起始地址。一般每个段落中存放着同类性质的信息。8086约定用四个段寄存器存放段基址。 CS16 位代码段寄存器 DS16 位数据段寄存器 ES16 位附加段寄存器(第二数据段) SS16

8、位堆栈段寄存器5.各类数据物理地址 CS、DS、SS 和其他寄存器组合指向存储单元的示意图例5.3 如果在一个程序段开始执行之前, (CS)=1003H,(IP)=1007H,给定一个数据的偏移地址是0047H, 且(DS)=1101H。试问:(1 ) 该程序段的第一个字的物理地址是多少?(2 ) 数据在内存中的物理地址是多少?解:逻辑地址表示格式是:段地址:偏移地址。根据物理地址的定义式, 得(1 ) 物理地址= ( CS)×10H+1007H=(1003H×10H)+1007H =11037H(2 ) 物理地址= (DS)×10H+0027H =(1101H&

9、#215;10H)+0047H=11057H【评注】 物理地址是惟一的。 对应同一个物理地址, 可以有不同的逻辑地址。 分清段内偏移地址的来源及其相匹配的段地址。例5.4 若某数据区的开始地址为A7F0H: 2B40H , 则该数据区的首字单元和32 个字的末字单元的物理地址分别为多少?解:首地址为(0A7F0×10H ) + 2B40H = 0AAA40H 末地址为0AAA40H + (20H -1 )×2 = 0AAA7EH【评注】数据区最后一个字的地址为:首地址+ ( 字数- 1) ×2。例5.5 如果一个堆栈从地址3250H : 0000H 开始, 最先存

10、入字的偏移地址为0100H, SP 的内容为0052H , 问:(1 ) 栈顶地址是什么?(2 ) 栈底地址是什么?(3 ) 存入数据1234H 和5678H 后, SP 的值是多少?解:堆栈的最高地址叫栈底, 堆栈指针SP 总是指向栈顶。栈顶地址是最后一个存入的数据地址。栈顶地址= (SS)×10H + (SP) =3250H×10H + 0052H = 32552H栈底地址= (SS)×10H + 0100H = 32600H8086CPU 中堆栈存取必须以字为单位。存入数据1234H 和5678H , 即两个字压入堆栈后, SP 减4 , SP 的内容为:

11、( SP ) -字数×2 = 0052H - 2×2 = 004E H。SS 的内容不变。例5.6 数据总线和地址总线在结构上有什么不同之处? 如果一个系统的数据和地址合用一套总线或者合用部分总线, 那么,要靠什么来区分地址和数据?解:从结构上看, 数据总线是双向的, 即数据既可以从CPU送到其他部件, 也可以从其他部件送到CPU; 地址总线是专门用来传送地址信息的, 而地址总是从CPU 送出去的, 所以地址总线是单向的。如果采用地址总线和数据总线复用技术, 则需在总线周期中依靠时序、并配合一定的控制信号来区分。【评注】在 8086/ 8088CPU 中就采用了地址总线和数

12、据总线复用的技术, 在总线周期中, T1 状态时复用总线充当地址总线, 并为了告示地址已准备好, 可以被锁存,CPU 此时还会送出高电平的ALE 信号。从总线周期的T2 状态开始, 复用线充当数据总线。例5.7 在总线周期的T1 , T2 , T3 , T4 状态, 8086CPU 分别执行什么动作? 什么情况下需要插入等待状态TW ? 等待状态TW在哪儿插入? 怎样插入?解T1 , T2 , T3 , T4 状态构成基本总线周期:(1 ) 在T1 状态, CPU 往多路复用总线上发出地址信息, 以指出要寻址的存储单元或外设端口地址。(2 ) 在T2 状态, CPU 从总线上撤消地址, 而且将

13、总线的低16位浮置成高阻状态, 为传输数据作准备。(说明: 在写总线周期的T2 状态, CPU 在撤消地址后直接输出数据, 而不用经过高阻状态)。总线的最高4 位用来输出本总线周期状态信息。(3 ) 在T3 状态, 多路总线的高4 位继续提供状态信息, 而多路总线的低16 位上出现由CPU 写出的数据或者CPU 从存储器或I/ O 端口读入的数据。(4 ) 在T4 状态, 总线周期结束。当指定的存储器或外设完成数据传送时, 便在“READY”信号线上发出“准备好”信号, CPU 接收到这一信号后, 会自动脱离TW 状态而进入T4 状态, 结束总线周期。当外设或存储器速度较慢, 不能及时地配合C

14、PU 传送数据时, 需在总线周期中插入等待状态TW 。这时, 外设或存储器应通过“READY”信号线在T3 状态启动之前向CPU 发一个“ 数据未准备好”信号, 于是CPU 会在T3之后插入1 个或多个等待状态TW 。当指定的存储器或外设完成数据传送时, 便在“READY”信号线上发出“准备好”信号, CPU 接收到这一信号后, 会自动脱离TW 状态而进入T4 状态, 结束总线周期。指令的组成指令由操作码和操作数两部分组成。操作码说明计算机要执行哪种操作。操作数是指令执行的参与者。操作数分为四种类型:立即数、寄存器操作数、存储器操作数、外设端口操作数寻找操作数的过程就是寻址方式:立即数寻址方式

15、、寄存器寻址方式、存储器寻址方式、外 设端口寻址方式注意:(1 )立即数只能作为源操作数, 不能作为目标操作数。 (2 )立即数不能直接传送到段寄存器, 但可通过其他寄存器或堆栈传送。 (3 )MOV 指令的两个操作数类型必须相同。 例如: MOV AL, BX 是错误的指令。 (4 )CPU 中的寄存器除IP外都可通过MOV 指令访问。 (5 )CS 只能作为源操作数, 不能作为目标操作数。 (6 )段寄存器之间不能直接传送, 两个内存单元之间不能直接传送。 例如: MOV BX , SI 是错误的指令。 (7) PUSH CS 是合法指令, 而POP CS 却是非法指令, 因为8086 指

16、令系统中不允许CS寄存器作为目标操作数, 执行POP CS 将改变代码段寄存器CS 的内容, 会导致CPU 从新的CS 和IP 给出的与程序毫不相干的地址中去取下一条指令, 从而使程序错误地运行。 (8 )堆栈操作遵循“ 后进先出”的原则。保存内容和恢复内容时, 要按照对称的次序执行。非法传送 两个操作数的类型不一致 绝大多数双操作数指令,除非特别说明,目的操作数与源操作数必须类型一致,否则为非法指令MOV AL,050AH;050Ah为字,而AL为字节寄存器有明确的字节或字类型,有寄存器参与的指令其操作数类型就是寄存器的类型对于存储器单元与立即数同时作为操作数的情况,必须显式指明;byte

17、ptr指示字节类型,word ptr指示字类型 两个操作数不能都是存储器 8086指令系统不允许两个操作数都是存储单元(除串操作指令),要实现这种传送,可通过寄存器间接实现 MOV AX,buffer1 ;AXbuffer1(将buffer1内容送AX) MOV buffer2,AX ;buffer2AX ;这里buffer1和buffer2是两个字变量 ;实际表示直接寻址方式 段寄存器的操作有一些限制 不允许立即数传送给段寄存器 MOV DS,100H ;立即数不能传送段寄存器 不允许直接改变CS值 MOV CS,SI ;不允许使用的指令 不允许段寄存器之间的直接数据传送 MOV DS,ES

18、 ;不允许段寄存器间传送例:将从DATA1开始的存储区域中的100个数存入DATA2开始的存储区中 MOV SI,OFFSET DATA1 ; SI作源操作数地址指针 (OFFSET为运算符, DATA1为变量。 OFFSET DATA1表示传送的是地址) MOV DI,OFFSET DATA2;DI作目的操作数地址指针 MOV CX,100;置计数器初值NEXT:MOV AL,SI MOV DI,AL;传送一个字节数据 INC SI ;源操作数地址指针加1 INC DI;目的操作数地址指针加1 DEC CX;计数器减1,CX(CX1) JNZ NEXT;若CX0则转NEXT HLT;停机输入

19、输出寻址方式直接寻址:只用于寻址00HFFH前256个端口,操作数i8表示端口号。间接寻址:可用于寻址全部64K个端口,DX寄存器的值就是端口号。对大于FFH的端口只能采用间接寻址方式。例:有两组50个字节的数据,分别放在自FIRST和SECOND开始的存储区中,试比较两组数据是否相同,若相同,AL为0;若不同,AL为0FFH。 MOV SI,OFFSET FIRST ;SI作为第一组数的地址指针 MOV DI,OFFSET SECOND;DI作为第二组数的地址指针 MOV CX,50;置计数器初值 P: MOV AL,SI;从第一组数中取出一个数送AL CMP AL,DI;与第二组数中相同位

20、置的数比较 JZ NEXT;若相等,继续比较 MOV AL,0FFH;若不等,AL为0FFH JMP STOP;跳出循环NEXT:INC SI;第一组数指针加1 INC DI;第二组数指针加1 DEC CX;计数值减1 JNZ P;若没有比较完,则跳至P MOV AL,0;比较完了,都相等,则AL为0 STOP: HLT 程序设计语言可分为三种:机器语言、汇编语言、高级语言例:实现1100 的累加, 并将和存入SUM。ADDCOUNT EQU 100 ;为定义符号常量ADDCOUNTMYDATA SEGMENT ; 定义数据段SUM DW 0 ; 定义变量SUM, 并置初值为0STR1 DB

21、OK ! ; 定义字符串变量STR1MYDATA ENDS ; 定义数据段结束MYCODE SEGMENT ; 定义代码段 ASSUME CS: MYCODE, DS : MYDATA ; 声明代码段、数据段为哪一个段START : MOV AX, MYDATA ; 初始化DS为MYDATA MOV DS, AX XOR AX, AX MOV CX, ADDCOUNTADDUP: ADD AX, CX ; CX 用于累加次数计数, 完成1100 的累加 DEC CX JNZ ADDUP MOV SUM, AX MOV AH , 9 ; 向屏幕输出OK !MOV DX, OFFSET STR1

22、INT 21H MOV AH , 4CH ; 退出程序返回DOS INT 21HMYCODE ENDS ; 定义代码段结束 END START ; 定义该程序模块结束掌握基本指令:MOVXCHGXLAT、PUSHPOP、LEA;CLCSTCSTC、CLDSTD;ADDADCINC、SUBSBBDECCMPNEG、CBWCWD汇编语言源程序的一般格式段结构:汇编语言源程序一般包括数据段、堆栈段、附加数据段和代码段, 即程序由段结构 组成。数据段:用于存放变量、数据和结果。堆栈段:用于执行压栈、出栈操作, 以便子程序调用时保存现场和恢复现场, 也用于传递数。代码段:则是所编制的执行程序或常数表格。

23、代码段必不可少, 其他段不需要时可以省略。 汇编源程序一般由若干段组成, 每个段都有一个名字(叫段名) , 以SEGMENT 作为段的开始, 以ENDS 作为段的结束, 这两者( 伪指令) 前面都要冠以相同的名字。 从性质上可分为代码段、堆栈段、数据段和附加段四种, 但代码段与堆栈段是不可少的, 数据段与附加段可根据需要设置。在本例中, 一共定义了3 个段: 1 个数据段、1 个堆栈段和1 个代码段。这3 个段的段名分别为DATA, STACK 和CODE, 均由用户自己设定。在代码段中, 用ASSUME 命令 (伪命令) 告诉汇编程序, 在各种指令执行时所要访问的各段寄存器将分别对应哪一段。

24、程序中不必给出这些段在内存中的具体位置, 而由汇编程序自行定位。各段在源程序中的顺序可任意安排, 段的数目原则上也不受限制, 段名可以任选。 源程序的每一段是由若干行汇编语句组成的, 每一行只有一条语句, 且不能超过128 个字符, 但一条语句允许有后续行, 最后均以回车作结束。整个源程序必须以END 语句来结束,它通知汇编程序停止汇编。END 后面的标号START 表示该程序执行时的起始地址。汇编语言语句格式汇编语言源程序:由一系列语句组成。 语句:包括指令语句与伪指令语句。指令语句:是机器指令的符号表示, 经过汇编后产生对应的机器码, 指定CPU何 种操作, 在执行程序时被执行。伪指令语句

25、:即伪指令语句只是给汇编程序提供一些控制信息,如定义符号, 分配存储单元, 初始化存储器等, 而本身并不生成目标代码。1、 标号和名字(1) 标号及其属性 标号是指令的符号地址, 表示“ :”后面的指令所在的存储器中的首地址, 用来作为汇编语言源程序中转移、调用以及循环等指令的操作数程序转移的目标地址。 三种属性:段地址、段内偏移地址以及类型。 段地址: 标号所在段的段地址( 16 位数) , 是标号所在段起始地址的前16 位。 段内偏移地址: 它是标号与段起始地址之间 相距的字节数, 为一16 位无符号数。 类型: 类型表示该标号所代表的指令的转移范围, 分NEAR 与FAR 两种。 NEA

26、R 类型的标号仅在同一段内使用, 用2 字节指针给出偏移地址属性; FAR 类型的标号无此限制, 必须用4 字节指针指出其段基地址及段内偏移地址。(2) 标号的定义 标号的组成: 标号用一标识符定义, 即以字母开头, 由字母、数字、特殊字符(如?、* 、下划线、S| 、 等)组成的字符串表示,标号的最大长度不超过31个字符,标号最好具有一定含义的英文单词或单词缩写表示, 以便于阅读。 在指令的助记符之前, 使用标号并紧跟一个冒号“ :”, 表示该标号被定义为一个类型为NEAR 的标号。(3)名字2、指令助记符 指令助记符和伪指令助记符。3、参数 不同的语句,要求有不同的参数。 参数可分为三类:

27、常量、操作数和表达式。4、注释 以“ ; ”开始, 用来简要说明该指令在程序中的作用, 以提高程序的可读性。常量:固定值称为常量, 在汇编期间它的值已完全确定, 且在程序运行中它的值不会发生改变。常量可以是数据和字符。常量有“数字常量”和“字符串常量”等。 (1)数字( 整数)常量:如 01001001B、1538D、1538、0ABCDH (2)字符串常量:用单引号括起来的一个或多个字符。这些字符以ASCII 码形式存储在内中。 如AB, 在内存中就是41H , 42H;操作数:操作数可以是常量、寄存器名和存储器操作数。 存储器操作数是存储器地址,用于指令语句的各种寻址方式。在汇编语言中一般

28、不用物理地址,而用符号地址,具体有标号和变量两种。1) 变量:变量是指存放在某些存储单元的数据,在程序运行期间随时可以修改。为了便于对变量的访问, 常以变量名的形式出现在程序中, 变量名可以看做是存放数据的存储单元的符号地址。a.变量的定义与预置:给变量分配存储单元, 且对这些存储单元赋予一个符号名变量名, 同时将这些存储单元预置初值。b.变量属性:经过定义的变量有3 个属性, 段属性(SEG) : 表示变量所在逻辑段的段基址。 偏移量属性(OFFSET): 表示变量在逻辑段离段起始点的字节数。 类型属性(TYPE):表示变量占用存储单元的字节数。 变量的类型属性由变量定义伪指令DB、DW、D

29、D 规定, 分别对应字节类型(BYTE)、字类型 (WORD)、双字类型( DOUBLEWORD)。c.变量与标号 标号是给指令性语句所在单元地址取的名字,它表明该指令在存储器中的位置, 可作为转移类指令(包括子程序调用) 的操作数。标号与变量类似, 都是存储单元的符号地址。只是标号对应的存储单元中存放的是指令; 而变量所对应的存储单元中存放的是数据。 属性:段属性;偏移量属性;类型属性表达式:将常量、操作数用运算符连接起来形成表达式,在汇编时分别产生一个数值或 一个地址。运算符:在汇编语言中运算符分为6 类运算符, 分别是:算术运算符、 逻辑运算符、关系 运算符、 分析运算符、合成运算符、

30、分离运算符。表达式分类: 数值表达式和地址表达式, 在汇编过程中分别产生一个数值或一个地址。注意:表达式的运算不是在执行程序时进行的,而是由汇编程序在汇编时预先对他进行运算。DOS 常用中断调用1) 返回DOS 向量号 21H 功能号 4CH 例: MOV AH , 4CH INT 21H2) 键盘输入并显示 向量号 21H 功能号 1 功能:从键盘输入一个字符, 将 其ASCII 码保存在AL 中, 输 入字符回显在CRT 上。 例 MOV AH , 1 INT 21H 中断返回时, 输入字符的ASCII 码 被存放在AL 中, 该字符并显示在屏幕上。3) 键盘输入但不显示输入字符 向量号

31、21H 功能号 8 功能:输入一字符, 其ASCII 码存放在AL 中, 但不显示。这种功能往往在设置口令时使用。 例 MOV AH , 8 INT 21H4)显示一字符 向量号 21H 功能号 2 入口参数: DL= 待显示字符的ASCII码 功能:显示DL 中的字符。 例 显示字符“*”: MOV AH , 2 MOV DL ,* INT 21H5)在打印机上打印一字符 向量号 21H 功能号 5 入口参数: DL= 待打印字符的ASCII码 例 打印数字9: MOV AH , 5 MOV DL ,9 INT 21H6)显示以“”结尾的字符串 向量号 21H 功能号 9 入口参数: DS:

32、 DX 指向字符串的首地址7)字符串输入 向量号 21H 功能号 0AH 入口参数: DS: DX 指向输入缓冲区。 输入缓冲区格式如下: 第1 字节为预定的最大输入字符数。 第2 字节空出, 待中断服务程序填入键盘连续输入到回车前实际输入字符数。 第3 字节及以后字节, 待中断服务程序填入输入字符串的ASCII 码。例:编写一个实现把一位十六进制数转换为对应ASCII 码的程序。分析: 十六进制数与对应ASCII码的关系如下 0 1 2 3 4 5 6 7 8 9 30H 31H 32H 33H 34H 35H 36H 37H 38H 39H A B C D E F 41H 42H 43H

33、44H 45H 46H这种对应关系可表示为一个分段函数: Y= X + 30H ( 0<=X<=9 ) X + 37H (0AH<=X<=0FH )所以, 程序要根据十六进制数码值是否超过9 而进行分支。源程序如下: DATA SEGMENT XX DB 4 ; 假设的十六进制数ASCII DB ? ; 存放对应的ASCII 码 DATA ENDS CODE SEGMENT ASSUME CS : CODE, DS :DATASTART :MOV AX, DATAS MOV DS, AX MOV AL, XX AND AL, 0FH ; 确保在0 至F 之间CMP AL

34、, 9 JA LAB1 ; 超过9 转移到LAB1 , 加37H ADD AL, 30H ; 否则, 加30H JMP LAB2LAB1:ADD AL, 37HLAB2: MOV ASCII , AL MOV AH , 4CH INT 21HCODE ENDS END START例:从TABLE单元开始存放着一个班级学生的成绩(用$表示结束)。60分以下为差,6069分为及格,7079分为中,8089分为良,90100分为优。 试统计各个分数段的人数。 DATA SEGMENTTABLEDB 86,96,80,77DB49,88,68,73DB 88,69,$ SORTDB 5 DUP(0)D

35、ATA ENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVSI,OFFSET TABLENEXT:MOVAL,SIINCSICMPAL,$ JZOVER CMPAL,60JBECMPAL,70JBDCMPAL,80JBCCMPAL,90JBBINCSORT;优+1JMPNEXTE:INCSORT+4;差+1JMPNEXTD:INCSORT+3;及格+1JMPNEXTC:INCSORT+2;中+1JMPNEXTB:INCSORT+1;良+1JMPNEXTOVER:MOVAH,4CHINT21H CODEENDSENDST

36、ART 例: 试编写程序段, 实现符号函数。分析: 变量X 的符号函数可表示为:Y = 1 X > 0 0 X = 0 - 1 X < 0DATA SEGMEN TX DW - 3Y DW ?DATA ENDSCODE SEGMENT ASSUME CS : CODE, DS :DATASTART :MOV AX, DATA MOV DS, AX MOV AX, X OR AX, AXJE ZERO ; X = 0 , 则转ZERO JNS PLUS ; X 为正数, 则转PLUS MOV BX,0FFFFH ; X 为负数,则-1送BX JMP CONT1ZERO: MOV BX

37、, 0 JMP CONT1PLUS: MOV BX, 1CONT1:MOV Y, BX MOV AH , 4CH INT 21HCODE ENDS END START例:从BUF单元开始有9个有符号的16位数,求正数的个数并显示到显示器上。DATASEGMENTBUF DW 9DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATA MOVDS,AX MOVSI,OFFSET BUF;置数据指针SI MOVDL,0;计数器清零 MOVCX,9;置循环次数LP: MOVAX,SI ;取数送AX TEST AX,8000H ;检测

38、AX的最高位 JNZNEXT;若最高位为1则转NEXT INC DL;否则,计数器加1NEXT:INC SI INC SI ;修改指针 LOOP LP;若CX10,转LP ORDL,30H;否则,将DL内的数据转换为ASC码 MOVAH,2INT21H ;INT 21H软中断功能调用,显示DL中的数据 MOV AH,4CH INT21H;返回DOSCODE ENDSEND START例: 从 STRIN 单元开始有一字符串, 以作为结束标志, 求字符串的长度。程序如下:DATA SEGMENTSTRIN DB ASDFGHJ123KJCOUNT DW ?DATA ENDSCODE SEGMEN

39、TASSUME CS : CODE, DS :DATA; START :MOV AX, DATA MOV DS, AX MOV BX, OFFSET STRIN ; 置地址指针 MOV CX, 0 ; 置计数器初值为0 LP : MOV AL, BX ; 取一个字符到AL 中 CMP AL, ; 是吗? JE DONE ; 是则结束 INC CX ; 不是则计数加1 INC BX ; 地址加1 JMP LP ; 继续 DONE: MOV COUNT , CX ; 计数送COUNT 单元 MOV AH , 4CH INT 21H CODE ENDS END START例: 从 STRIN 单元开

40、始有一字符串, 以作为结束标志, 求字符串的长度。程序如下:DATA SEGMENTSTRIN DB ASDFGHJ123KJCOUNT DW ?DATA ENDSCODE SEGMENTASSUME CS : CODE, DS :DATA; START :MOV AX, DATA MOV DS, AX MOV BX, OFFSET STRIN ; 置地 址指针 MOV CX, 0 ; 置计数器初值为0 LP : MOV AL, BX ; 取一个字符到AL 中 CMP AL, ; 是 吗? JE DONE ; 是则结束 INC CX ; 不是则计数加 1 INC BX ; 地址加1 JMP L

41、P ; 继续 DONE: MOV COUNT , CX ; 计数送 COUNT 单元 MOV AH , 4CH INT 21H CODE ENDS END START例:延时显示7个MAIN DATASEGMENTTABLE DB MAIN DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,0007HA2:MOVDX, OFFSET TABLEMOVAH,09HINT21HCALL DELAYLOOPA2MOVAH,4CHINT21HDELAYPROC NEARPUSH CXPUSHAX MOVCX,00

42、40HA3:MOVAX,0560HA4:DECAXJNZA4LOOPA3POPAXPOPCXRET DELAYENDP CODEENDSENDSTART例:将内存区域中的两个单字节相加,结果送入第3字节,并将结果转换成十进 制数(两位数)送显示器显示。DATASEGMENTLISTDB16,48,?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXCALLADSUB;相加,存结果CALLOUTPR;显示结果MOVAH,4CHINT21H;返回DOSADSUB PROCMOVAL,LISTADDAL,LIST+1MOV

43、LIST+2,ALRETADSUBENDPOUTPRPROCMOVAL,LIST+2MOVAH,0MOVBL,10DIVBLMOVDL,ALMOVBH,AHCALLDISPLMOVDL,BHCALLDISPLRETOUTPR ENDPDISPL PROC ORDL,30HMOVAH,2INT21HRETDISPL ENDPCODE ENDSEND START 存储器的分类按存取方式:(1)随机存储器(RAM):读/写存储器,计算机的内存、CACHE均属于RAM(2)只读存储器(ROM):只能读出信息,不能写入新的内容,用于存放固定不变的系统程序或子程序等(3)顺序存储器(SAM):信息排列、寻

44、址操作和读写操作均按顺序进行,如磁带半导体存储器的分类例1、某EPROM芯片的外部引线如图所示,试将此芯片接到C8000H到CFFFFH的内存地址上(使用74LS138译码器),画出连接图。 例2、试判断下图所示的译码逻辑电路中74LS138译码器的输出Y0、Y4、Y6、Y7所 决定的内存地址范围。例3、某存储器芯片的选片译码器如图所示,试写出该芯片所占的内存地址范围 12000H12FFFH13000H13FFFH74LS244输入实例输出实例基本输入输出接口无条件传送:输入实例无条件传送:输出实例无条件传送:基本输入输出接口查询输入接口查询输出接口8255AA1 、A0 为00 时, 选中

45、A 端口; 为01 时, 选中B 端口; 为10 时, 选中C 端口; 为11 时, 选中控制端口。RD 芯片读出信号, 低电平有效。WR 芯片写入信号, 低电平有效。方式选择控制字端口C 置1/置0 控制字练习:简单的输入/输出,即显示灯接口具体要求:有12个灯,4个开关,(每次有且只有一个合上)如开关1合上(为高电平),则前4个灯亮,如开关2合上(为高电平),则中4个灯亮如开关3合上(为高电平),则后4个灯亮,如开关4合上(为高电平),则退出驱动程序MOVDX,33BHMOV AL,10001000B;初始化8255,设PC7PC4为输入,其它为输出,0方式OUTDX,ALLP0:MOVD

46、X,338HMOVAL,0FFHOUTDX,AL ;给PA口输出FFH,使 灯灭MOVDX,339HOUTDX,AL ;给PB口输出FFH,使 灯灭MOVDX,33AHOUTDX,AL ;给PC口输出FFH,使 灯灭L:MOV DX,33AHIN AL,DX;读入开关状态MOV AH,AL AND AL,80HJNZ L1;开关1合,跳转MOV AL,AHAND AL,40HJNZ L2 ;开关2合,跳转MOV AL,AHAND AL,20HJNZ L3 ;开关3合,跳转MOVAL,AHAND AL,10HJNZ STOP;开关4合,跳转JMP LLI:MOVDX,33AHMOV AL,0HOUT DX,AL ;给PC口输出全0,使 前4灯亮MOV AL,0FHMOV DX,339HOUT DX,AL ;给PB口输出1,使中 4灯灭MOV DX,338HOUT DX,AL

温馨提示

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

评论

0/150

提交评论