1、1. 计算机系统是由两大部分组成:硬件系统和软件系统硬件系统是指所有构成计算机的物理实体,它包括计算机系统中一切电子、机械、光电等设备。软件系统是指计算机运行时所需的各种程序、数据及其有关资料,2冯诺依曼体系结构(传统机)的硬件结构: 分为五大部分,即存储器、运算器、控制器、输入设备和输出设备,冯诺依曼计算机特点: (1)用二进制数表示数据和指令; (2)指令和数据存储在内部存储器中,按顺序自动依次执行指令; (3)由运算器、控制器、存储器、输入设备和输出设备组成基本硬件系统; (4)由控制器来控制程序和数据的存取及程序的执行; (5)以运算器为核心。,第一二五章 概述,3现代机的硬件结构现代
2、机是指大规模或超大规模集成电路出现以后,组成计算机的各部分都在总线上,包括中央处理器CPU、主存储器RAM和ROM、各种I/O接口以及接口外带的各种外部设备。,4. 软件系统计算机的软件系统由为计算机本身运行所需要的系统软件(System Software)和用户完成特定任务所需的应用软件(Application Software)两大类组成。 系统软件通常指那些用于管理机器各种资源的程序及协调各装置工作的程序和为支持应用软件的运行并提供服务的程序。 应用软件通常是指用来为用户解决某种应用问题的程序并包括有关的文件和资料。是为用户某种专门用途而设计的程序系统,5. 存储器结构:分为四个逻辑段,
3、起始地址放在段寄存器中。 存放代码逻辑段的叫代码段,起始地址在CS中;存放数据的逻辑段叫数据段,起始地址放在DS中;存放操作结果的逻辑段叫附加段,起始地址放在ES中。当堆栈用的逻辑段叫堆栈段,起始地址存放在SS中。,地址形成:物理地址计算 物理地址(PA)=段寄存器内容左移4位+偏移地址 不同用途的字节单元 的物理地址求法不同:取指令:PA=CS*10H+IP取源操作数:PA=DS*10H+EA(EA由EU提供)字符串操作:对源串:PA=DS*10H+SI对目的串:PA=ES*10H+DI堆栈操作:PA=SS*10H+SP,6. 微型计算机的系统总线:数据总线、地址总线、控制总线 系统总线是C
4、PU与其它部件之间传送数据、地址和控制信息的公共通道 (1)数据总线:用来传送数据,主要实现CPU与内存储器或I/O设备之间、内存储器与I/O设备或外存储器之间的数据传送。 (2)地址总线:用来传送地址。主要实现从CPU送地址至内存储器和I/O设备,或从外存储器传送地址至内存储器等。 (3)控制总线:用于传送控制信号、时序信号和状态信息等。,1. 语句类型:指令性语句、指示性语句 指令性语句由指令组成,CPU可以执行; 指示性语句用来告诉编译程序如何对源程序进行汇编,它不生成目标代码,不由CPU执行,所以常称为伪操作指令;,第三章 汇编语言指令系统及编程,标号:主要用来定义标号、名字,以便在操
5、作数域中引用它们。标号和名字都是由标识符组成的。标识符可由最多31个字母、数字和特殊字符所组成,它必须以字母或特殊字符开始。,2. 指令语句语句格式如下: 标号: 指令助记符 操作数 ;注释;,指令助记符:又称作操作码,它是语句中唯一必不可少的部分。 指令语句中的助记符规定这个语句中的操作类型;伪指令语句中的助记符规定这个语句中的伪操作功能。 操作数:它用来存放助记符要求的操作数,使之能实现预期的目的。指令语句可能有一个、两个或没有操作数,而伪指令是否需要操作数,需要何种操作数,随伪操作命令不同而不同。可充当操作数的有常量、变量、标号、寄存器和表达式等。 注释:注释以分号(;)开头,用来说明语
6、句或程序功能和含义的符号序列。它增加了程序的可读性,为修改、调试、交流提供了方便。,操作数的寻址方式,例:寄存器与存储器之间的传送MOV BX,AX ;寄存器到存储器 若(DS)6000H ,(BX)1200H,(AX)1234H 执行后(61200H)34H (61201H)12HMOV CL,BPDI 将SS段的偏移地址(BP)(DI)存储单元内容送CL。 如(SS)8000H,(BP)1020H,(DI)0383H,(813A3H)55H 执行后 (CL)=55H,例:设(DS)=1000H,(SS)=4000H,(SP)=100H,(BX)=2100H, (12100H)=00A8H。
7、执行下列指令后,有关寄存器、存储器和堆栈的内容。 PUSH DS PUSH BX PUSH BX POP DI POP WORD PTRDI+2 POP DS,解: PUSH DS(SP)-2SP (SP)=00FEHPA=(SS)*10H+(SP)=400FEH(400FEH)=1000H,解: PUSH BX(SP)-2SP (SP)=00FCHPA=(SS)*10H+(SP)=400FCH(400FCH)=2100H,解: PUSH BX 计算操作数地址: PA=(DS)*10H+(BX)=12100H (SP)-2SP (SP)=00FAHPA=(SS)*10H+(SP)=400FAH
8、(400FAH)=00A8H,解: POP DI(SP)=00FAH (400FAH)=00A8H(DI)=00A8H(SP)+2H (SP)=00FCH,解: POP WORD PTRDI+2 计算操作数地址: PA=(DS)*10H+(DI)+2H=100AAH (100AAH)=2100H (SP)+2SP=00FEH,解: POP DS(DS)=1000H (SP)+2H (SP)=0100H,例: 设AL中有一个数字,写出完成下列命令的指令:(1)高4位不变,低4清零;(2)高4位不变,低4置1;(3)高4位不变,低4取反;,P79 3.1,例1:分析数据定义伪指令的存储单元初始化。
9、 B1 DB 10H,30H,-1 B2 DB A,B B3 DB AB B4 DW AB W1 DW 1000H,2030H W2 DB ?,? BUF1 DW ?,? BUF2 DB 2 DUP(0) BUF3 DB 3 DUP(1,2,?) BUF4 DB 2 DUP(1234) BUF5 DB 5 DUP(1,2,3 DUP(3),2 DUP(1,0),例:从4000H开始的单元中存放32个有符号数,要求统计负数的个数,并将结果存入BUFFER单元。分析:用SI指向表的首址,CX作计数器,DX作负数个数计数器。然后用TEST命令对每一个存储单元的符号位进行测试,D71则该数为负数。程序
10、: XOR DX, DX ;MOV DX,0, 主程序 MOV SI, 4000HMOV CX, 32AGAIN: MOV AL, SIINC SITEST AL, 80H;测试符号位D7JZ NEXTINC DXNEXT: LOOP AGAINMOV BUFFER, DX,例:在以DATA为首地址的内存中存放200个16位的带符号数,试找出其中最大和最小的符号数,分别放在MAX和MIN 中。,STASRT:LEA SI,DATAMOV CX,200CLD ;清零DF,即串操作增量进行LODSW ;取串,一个字MOV MAX,AXMOV MIN,AXDEC CX NEXT: LODSWCMP
11、AX,MAX,JG LARGER CMP AX,MIN JL SMALLJMP GOOD LARGER:MOV MAX,AXJMP GOOD SMALL: MOV MIN,AX GOOD: LOOP NEXTHLT,例:比较两个字符串是否相同,并找出其中第一个不相等字符的地址,将该地址送BX,不相等的字符送AL。两个字符串的长度均为100个字节,M1为源串首地址,M2为目标串首地址。 LEA SI,M1 ;(SI)源串首地址LEA DI,M2 ;(DI)目标串首地址MOV CX,100 ;(CX)串长度CLD ;(DF)=0,地址按增量方向修改REPE CMPSB ;若相等则重复比较AND C
12、X,0FFH ;检查(CX)是否等于零JZ STOP ;(CX)=0则转STOPDEC SI ;否则(SI)1,指向不相等单元MOV BX,SI ;(BX)不相等单元的地址MOV AL,SI ;(AL)不相等单元的内容 STOP: HLT ;停止,DATA SEGMENTX DW ? DATA ENDSCODE SEGMENTASSUMECS:CODE, DS:DATA,START: MOV AX, DATAMOV DS, AXMOV AX, XOR AX, AXJE ZERO;ZF=1,结果为0JNS PLUS;SF=0,即正数MOV BL, 0FFHJMP HALTZERO: MOV BL
13、, 0JMP HALT PLUS: MOV BL, 1 HALT: MOV AH, 4CHINT 21H CODE ENDSEND START,例 7:有一数学函数如下: 1 x0y= 0 x=0 -1 x0 要求写出程序完成上述计算。,;数据段 DATA SEGMENTNUM DB 7,9,-10,0,100,-27,99 COUNT DW 100HMAX DB ? DATA ENDS ;代码段 CODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DATAMOV DS,AXMOV CX,COUNT,MOV BX,OFFSET NUMMOV AL,
14、BX LP1: INC BXCMP AL,BXJGE NEXTMOV AL,BX NEXT: LOOP LP1MOV MAX,ALHLT CODE ENDS END START,例9:在以NUM为首址的存区中存有一组带符号的字节类型的数据,从中找出最大数并送入MAX单元。,存储器分类:读写存储器、只读存储器 读写存储器分类:静态RAM、动态RAM,第六章 存储器,(1) 掩模ROM早期的ROM由半导体厂商按照某种固定线路制造的,制造好以后就只能读不能改变。这种ROM适用于批量生产的产品中,成本较低,但不适用于研究工作。,(2) 可编程序的只读存储器PROM(Programmable ROM)为
15、了便于用户根据自己的需要来写ROM,就发展了一种PROM,可由用户对它进行编程,但这种ROM用户只能写一次,目前已不常用。,(3) 可擦去的可编程只读存储器EPROM(Erasable PROM)为了适应科研工作的需要,希望ROM能根据需要写,也希望能把已经写上去的内容擦去,然后再写,且能改写多次,于是就生产了这种EPROM。,3.ROM的种类,4. 存储器容量的扩展 按扩展方式不同主要分为:位扩展、字扩展,(1)位扩展 将多片ROM或RAM组合成位数更多的存储器。位扩展的方法十分简单,只需把相同类型的存储器芯片的地址线、片选线、读写控制线都并联起来,数据端单独引出即可。,(2)字扩展 字扩展
16、实际就是存储容量的扩展,将多片存储器芯片接成一个字数更多的存储器 。字扩展时将存储器芯片的地址线、数据线、读写控制线并联,由不同的片选信号来区分各个存储器芯片所占据的不同地址空间范围。,假设需要存储容量为MN位存储器,若使用存储器容量为KL位的存储器芯片进行字位扩展,那么需要M/KN/L个该存储器芯片。,例如:存储器容量为8K8,若选用2114芯片(1K 4),则需要:,地址译码方式:全译码、部分译码、线译码,采用全译码方式实现片选控制的RAM子系统,2,1,3,4,各存储芯片的地址范围,这种片选控制方式可以提供对整个存储空间的寻址能力,即使不需要使用全部地址空间也可采用全译码方式,多余的译码
17、输出(如图中的Y4Y7)暂时不用,可留作需要时扩充。,采用部分译码方式实现片选控制的RAM子系统,2,1,3,4,各存储芯片的地址范围,这种片选控制方式可以提供对整个存储空间的寻址能力,即使不需要使用全部地址空间也可采用全译码方式,多余的译码输出(如图中的Y4Y7)暂时不用,可留作需要时扩充。,采用线选法方式实现片选控制的RAM子系统,2,1,3,4,上图基本地址: (1):03800H03FFFH (2):05800H05FFFH (3):06800H06FFFH (4):07000H077FFH,(5)计算存储器芯片的地址空间,1. 中断的定义 所谓中断,是一个过程,即CPU在正常执行程序
18、的过程中,遇到外部内部的紧急事件需要处理,暂时中断(中止)当前程序的执行,而转去为事件服务,待服务完毕,再返回到暂停处(断点)继续执行原来的程序,这样一个完整的过程叫中断。,第七章 中断,2. CPU响应中断的条件 (1)设置中断请求触发器 (2)设置中断屏蔽触发器 (3)中断是开放的 (4)现行指令执行结束,3. CPU就响应中断做以下几种事: (1)关中断8086在CPU响应中断后,发出中断响应信号INTA的同时,内部自动地实现关中断。(2)保留断点CPU响应中断,封锁IP+1,并且把IP和CS推入堆栈保留,以备中断处理完毕后,能返回主程序。(3) 保护现场 把断点处的有关的各个寄存器的内
19、容和标志位的状态,推入堆栈保护起来 (4) 给出中断入口,转入相应的中断服务程序8086是由中断源提供的中断矢量形成中断入口地址(即中断服务程序的起始地址)。,5. 恢复现场 把所保存的各个内部寄存器的内容和标志位的状态从堆栈弹出,送回CPU中的原来位置。,6. 开中断与返回在中断服务程序的最后,要开中断(以便CPU能响应新的中断请求)和安排一条返回指令,将堆栈内保存的IP和CS值弹出,运行就恢复到主程序。,4. 中断向量表 (1)中断向量:在向量中断中,每个中断服务程序都有一个确定的入口地址,该地址称为中断向量。,(2)中断向量表 8086/8088最多能管理256个中断,统一编号为0-25
20、5,称为中断类型号或中断向量号,是识别中断源的唯一标志。每个中断源都有一个为它服务的中断服务程序。把系统中所有中断向量集中起来,按中断类型号从小到大的顺序存放到存储器的某一区域内,这个存放中断向量的存储区叫做中断向量表,亦即中断入口地址表。,8086/8088系统中,在内存的最低1KB(00000H-003FFH)地址范围建立了一个中断向量表,每个中断向量占用4个存储单元,4个单元中的前2个单元存放的是中断服务程序所在段内的偏移量(IP的内容,16位地址),低位字节存放在低地址,高位字节存放在高地址;后2个单元存放的是中断服务程序所在段的段基地址(CS的内容,16位地址),存放方法与前2个单元
21、相同。中断向量在表中的位置称为中断向量地址,中断向量地址与中断类型号的关系为:中断向量地址(首地址)=中断类型号*4,中断过程 通常如下描述:中断工作过程,也叫中断过程或中断处理过程,一般包含以下五个步骤:中断请求、中断判优、中断响应、中断处理以及中断返回。,P243 8.4,1. I/O设备端口的编址 在微型计算机系统中,I/O设备端口的编址有两种方式: 一种是I/O端口地址与存储器单元地址统一编址,即存储器映射方式 另一种是I/O端口地址和存储器地址分开独立编址,采用不同的编址方式,即I/O映射方式。,第八章 输入/输出,2. CPU与外设数据传送的方式 CPU与I/O设备之间数据传送,通
22、常有以下几种情况: (1) 无条件传送;(2)查询传送方式 (3)中断传送方式;(4)直接数据通道传送(DMA),3. 接口与端口的区别,以2MHz输入8253,实现每5秒定时(设8253端口地址40H43H),分析:8253最大初值65536,CLK=2MHz可实现的最大定时时间为: 65536/(2106)=32.769ms 所以需要两个计数器串联,一个计数器的输出作为另一个计数器的输入,3.8253的应用,第九章 定时计数器,1.8253的工作方式(主要是方式0、2、3)及控制字,2.8253的初始化,计数器1:模式2,OUT1每5ms输出一个脉冲初值:5ms/0.5s=10000计数器
23、0:模式2,OUT0每5s输出一个脉冲初值:5s/5ms=1000,OUT0 GATE0 CLK0OUT1 GATE1 CLK1,+5V,+5V,2MHz,每5秒产生一个脉冲,8253的应用,8253时钟2MHz,则其周期为:1/(2106)=0.5s,计数器0初始化:,MOV AL, 74H OUT 43H, AL MOV AX, 10000 OUT 41H, AL MOV AL, AH OUT 41H, AL MOV AL, 74H MOV AL, 34H OUT 43H, AL MOV AX, 1000 OUT 40H, AL MOV AL, AH OUT 40H, AL,8253的应用
24、,计数器1初始化:,例.设8088系统,8253的端口地址为81H83H,将频率为1MHz的时钟加到CLK0,通道1的OUT1与LED相连.要求编程使OUT1输出周期为10s、占空比1:1的方波,使LED闪烁。,1.8255的工作方式 2.8255的控制命令字 3.8255的PC口按位置位/复位控制字 4.8255的初始化及应用,第十章 并行输入/输出接口,则程序段如下: MOV DX,303H ;8255A控制口地址 MOV AL, 09H ;控制字,PC4置1 OUT DX ,AL ;控制字写入控制端口如果要使该引脚(PC4)复位,则用下列程序段实现: M0V Dx,303H ;8255A
25、控制口地址 MOV AL,08H ;使PC2=1的控制字 OUT DX,AI ;送到控制口,例. 若要使PC口的PC4端输出高电平,则按位置位/复位控制字应为00001001B=09H,将该控制字写入8255A的控制寄存器,即可在PC4引脚得到一个高电平的操作。设控制口地址为0303H,,例:编写程序段,实现对端口C的PC6位清0,PC2位置1,8255A各端口地址为80H、82H、84H、86H。,MOV AL, 0CH ;控制字01100B OUT 86H, AL MOV AL, 05H ;控制字00101B OUT 86H, AL,例:编写程序段,实现对端口C的PC7位置1,PC3清0,
26、8255A控制端口地址为00EEH。,MOV AL, 0FH ;控制字01111B MOV DX, 00EEH OUT DX, AL MOV AL, 06H ;控制字00110B OUT DX, AL,8255作为打印机的接口,工作于方式0,如图所示。设在BUF开始的内存缓冲区存放着100个待打印字符,完成 8255A初始化程序及把待打印字符送打印机打印的程序。,MOV AL, 88H ;(1001000 B)OUT 8BH, ALMOV AL, 01H ;(00001 B)OUT 8BH, ALMOV SI, OFFSET BUF ;打印字符内存首地址MOV CX,100 ;打印字符个数 L
27、PST:IN AL, 8AHAND AL, 80HJNZ LPST,2)设在BUF开始的内存缓冲区存放着100个待打印字符,完成8255A初始化程序及把待打印字符送打印机打印的程序。,1)写出8255各端口的地址,8255各端口的地址:88H,89H,8AH,8BH,8. 8255PB口接LED,PA口接8个开关,如图所示。当K0闭合时,K1-K8闭合,PB口对应的LED亮;当K0断开时, K1-K8断开,PB口对应的LED亮。,1. 串行通信的概念串行通信:是指利用一条传输线将数据一位位地顺序传送 2.根据同步方式的不同,将串行通信分为,即异步通信(ASYNC)和同步通信(SYNC) 两种方
28、式。,第十一章 串行通信,3.波特率:是衡量数据传送速率的指标。表示每秒钟传送的二进制位数。 例如数据传送速率为120字符/秒,而每一个字符为10位则其传送的波特率为101201200字符/秒1200波特。,A/D转换器的应用 图示是A/D转换器与CPU的接口。图中DAC0832的口地为FEH。,锯齿波程序: START:MOV AL,00H OUT 0FEH,AL INC AL JMP START HLT,第十二章 A/D与D/A,三角波程序:MOV AL,00H DOWN:OUT 0FEH,ALINC ALJNZ DOWNMOV AL,0FEH UP: OUT 0FEH,ALDEC ALJ
29、NZ UPJMP DOWNHLT,方波程序: START:MOV AL,33H ;置上限电平OUT 0FEH,ALCALL DELAYMOV AL,0EEH ;置上限电平 UP: OUT 0FEH,ALCALL DELAYJMP DOWN DELAY:MOV CX,4000HLOOP DELAYRETHLT,图12-14 ADC0809与CPU的接口,12.5.1 8位A/D转换芯片与CPU的接口,图示数据采集系统,设8255口地址为:200H-203H,A/D转换的程序如下:ORG 1000H START:MOV AL, 91H ;8255A初始化,方式0,;A口输入,B口输出MOV DX,
30、 203H ;8255A控制字端口地址OUT DX, AL ;送8255A方式字 MOV DI,20H ;转换结果存在20H开始的连续单元中MOV CX ,08H MOV AL, 00H ; 选IN0输入端转换ZH: MOV DX, 201H ;8255A的B口地址OUT DX, AL ;送IN0通道地址INC ALMOV BL,ALMOV AL, 10H ;STARTPC4 = 1; 地址锁存信号MOV DX,203HOUT DX, AL ;启动A/D转换NOP,MOV AL, 08HOUT DX, AL ;STARTPC4 = 0TEST: DEC DX IN AL, DX ;读C口状态AND AL, 01H ;检测EOC状态JZ TEST ;如果未转换完, ;再测试;转换完则继续MOV DX, 200H ;8255A的A口地址IN AL, DX ;读转换结果MOV DI,ALINC DIMOV AL,BLLOOP ZHHLT ;,