课程目标
微机原理是学习和掌握微机硬件知识和汇编语言程序设计的入门课程:
微型计算机的基本工作原理汇编语言程序设计微型计算机接口技术
目的:建立微型计算机系统的整体概念,形成微机系统软硬件开发的初步能力。
教学内容第一章 基础知识第二章 微型计算机基础第三章 8086/8088 CPU的指令系统第四章 汇编语言程序设计第五章 存储器系统第六章 输入输出和中断技术第七章 常用数字接口电路第八章 模拟量的输入输出
教材李伯成,侯伯亨,张毅坤主编,微机原理与接口技术,西安电子科技大学出版社。
微机原理与接口实验指导书,西安交大课程情况教学:60(4*15)
考试:出勤10%,作业30%,期末考试60%
第1章 基础知识主要内容:
各种常用记数制和编码以及它们
相互间的转换;
二进制数的算术运算和逻辑运算;
符号数的表示及补码运算;
二进制数运算中的溢出问题
§1.1 概 述电子计算机的发展:
电子管计算机(1946-1956)
晶体管计算机(1957-1964)
中小规模集成电路计算机(1965-1970)
超大规模集成电路计算机(1971-今)
电子计算机按其性能分类:
大中型计算机/巨型计算机(Mainframe Computer)
小型计算机(Minicomputer)
微型计算机(Microcomputer)
单片计算机(Single-Chip Microcomputer)
微型计算机的核心:微处理器(中央处理器CPU)
§1.2 计算机中的数制了解
特点;
表示方法;
相互间的转换。
一、常用记数制十进制——符合人们的习惯二进制——便于物理实现十六进制——便于识别、书写八进制如何区分不同进位记数制的数字在数字后面加一个字母进行区分:
二进制:数字后面加B,如1001B
八进制:数字后面加O,如1001O
十进制:一般不加,如1001
十六进制:数字后面加H,如1001H
在明显可以区分其记数制的情况下,可以省略数字后面的字母
,非十进制数到十进制数的转换按相应进位计数制的权表达式展开,再按十进制求和。
例:10110010B = (?)10
13FAH = (?)10
2,十进制到非十进制数的转换十进制 → 二进制的转换:
整数部分:除2取余;
小数部分:乘2取整。
十进制 → 十六进制的转换:
整数部分:除16取余;
小数部分:乘16取整。
以小数点为起点求得整数和小数的各个位。
3,二进制与十六进制间的转换用4位二进制数表示1位十六进制数
例,10110001001.110 = (?)H
0101 1000 1001.1100
5 8 9,C
注意:位数不够时要补0
§1.3 无符号二进制数的运算
无符号数 算术运算
有符号数 逻辑运算一、无符号数的运算算术运算包括,加法运算 减法运算 乘法运算 除法运算
1,规则加法:1+1=0(有进位),…
减法:0-1=1(有借位),…
乘除法:…
一个数乘以2相当于该数左移一位;除以2则相当于该数右移1位。 
00001011×0100=00101100B
00001011÷0100=00000010B…11B
即,商=00000010B
余数=00000011B
2,无符号数的表示范围一个n位的无符号二进制数X,其表示范围为
0 ≤ X ≤ 2n-1
若运算结果超出这个范围,则产生溢出。
(或者说运算结果超出n位,则产生溢出)
判别方法:运算时,当最高位向更高位有进位(或 借位)时则产生溢出。
第2章
微型计算机基础主要内容:
微型机的构成及工作原理
8088/8086 CPU的结构及工作原理系统总线
§2.1 微型机的基本结构掌握:
微机系统的基本组成微型机的工作原理微机8088的存储器组织一、微型计算机系统组成微型计算机系统的三个层次微处理器(Microprocessor)
微型计算机(Microcomputer)
微微处理器简称CPU,是计算机的核心,主要包括:
运算器ALU
控制器CU
寄存器组Registers
CPU实现了运算功能和控制功能型计算机系统(Microcomputer System)
硬件系统级——微型计算机以微处理器为核心,配上只读存储器(ROM)、读写存储器(RAM)、输入/输出(I/O)接口电路及系统总线等部件,就构成了微型计算机。
将CPU、存储器、I/O接口、总线等集成在一片超大规模集成电路芯片上,称为单片微型计算机,简称单片机。
系统级:
以微型计算机为中心,配以相应的外围设备以及控制微型计算机工作的软件,就构成了完整的微型计算机系统。
微型计算机如果不配有软件,通常称为裸机软件分为系统软件和应用软件两大类主机硬件系统——CPU
计算机的控制中心,提供运算、判断能力构成:ALU、CU、Registers(p29)
例:Intel 8088/8086、PIII、P4、Celeron
AMD K7(Athlon、Duron)
CPU的位数:4位、8位、16位、32位、64位是指一次能处理的数据的位数主机硬件系统——存储器存放程序和数据的记忆装置用途:存放程序和要操作的各类信息(数据、文字、图像、。。。)
内存:ROM、RAM
特点:随机存取,速度快,容量小外存:磁盘、光盘、半导体盘、…
特点:顺序存取/块存取,速度慢,容量大有关内存储器的几个概念内存单元的地址和内容内存容量内存的操作内存的分类内存单元的地址和内容内存包含有很多存储单元(每个内存单元包含8bit),为区分不同的内存单元,对计算机中的每个内存单元进行编号,内存单元的编号就称为内存单元的地址。
内存容量:
即内存单元的个数,以字节为单位。
注意:内存空间与内存容量的区别内存容量:实际配置的内存大小。
例:某微机配置2条128MB的SDRAM内存条,其内存容量为256MB内存空间:又称为存储空间、寻址范围,是指微机的寻址能力,与CPU的地址总线宽度有关内存操作读:将内存单元的内容取入CPU,原单元内容不改变;
写:CPU将信息放入内存单元,单元中原内容被覆盖;
刷新:对CPU透明,仅动态存储器有此操作内存的读写的步骤为:
CPU把要读写的内存单元的地址放到AB上若是写操作,CPU紧接着把要写入的数据放到DB上
CPU发出读写命令数据被写入指定的单元或从指定的单元读出到DB
若是读操作,CPU紧接着从DB上取回数据
内存储器的分类读写存储器(RAM)
可读可写易失性,临时存放程序和数据只读存储器(ROM)
工作时只能读非易失性,永久或半永久性存放信息接口的功能提供驱动外设的电压或电流;
匹配计算机与外设之间的信号电平、速度、信号类型、数据格式等;
缓存发给外设的数据、控制命令和外设提供的运行状态信息;
DMA控制和中断控制。
连接多个功能部件的一组公共信号线地址总线AB:用来传送CPU输出的地址信号,确定被访问的存储单元、I/O端口。地址线的根数决定了CPU的寻址范围。
CPU的寻址范围 = 2n,n-地址线根数数据总线DB:在CPU与存储器、I/O接口之间数据传送的公共通路。数据总线的条数决定CPU一次最多可以传送的数据宽度。
控制总线CB:用来传送各种控制信号

8088CPU的两种工作模式
8088可工作于两种模式:
最小模式和最大模式最小模式为单处理机模式,控制信号较少,一般可不必外接总线控制器。
最大模式为多处理机模式,控制信号较多,CPU必须通过总线控制器与总线相连。
引脚定义的方法可大致分为::
每个引脚只传送一种信息(RD等);
引脚电平的高低不同的信号(IO/M等);
CPU工作于不同方式有不同的名称和定义(WR/LOCK 等);
分时复用引脚(AD7 ~ AD0 等) ;
引脚的输入和输出分别传送不同的信息(RQ/GT等)。
8088是工作在最小还是最大模式由MN/MX端状态决定:MN/MX=0时工作于最大模式,反之工作于最小模式。
数据信号线(DB)与地址信号线(AB):
AD7~AD0:三态,地址/数据复用线。ALE有效时为地
址的低8位。地址信号有效时为输出,传送
数据信号时为双向。
A19~A16:三态,输出。高4位地址信号,与状态信号 S6-S3分时复用。
A15~A8,三态,输出。输出8位地址信号。
WR,三态,输出。写命令信号;
RD,三态,输出。读命令信号;
IO/M:三态,输出。指出当前访问的是存储器还是I/O接
口。高:I/O接口,低:内存
DEN:三态,输出。低电平时,表示DB上的数据有效;
RESET:输入,为高时,CPU执行复位;
ALE,三态,输出。高:AB地址有效;
DT/ R:三态,输出。数据传送方向,高:CPU输出,低:CPU输入算术逻辑单元(运算器)
8个通用寄存器
1个标志寄存器
EU部分控制电路功能,执行指令
从指令队列中取指令代码 译码
在ALU中完成数据的运算 运算结果
的特征保存在标志寄存器FLAGS中。
功能:
从内存中取指令送入指令预取队列负责与内存或输入/输出接口之间的数据传送在执行转移程序时,BIU使指令预取队列复位,从指定的新地址取指令,并立即传给执行单元执行。
含14个16位寄存器,按功能可分为三类
8个通用寄存器
4个段寄存器
2个控制寄存器数据寄存器(AX,BX,CX,DX)
地址指针寄存器(SP,BP)
变址寄存器(SI,DI)
8088含4个16位数据寄存器,它们又可分为8个8位寄存器,即:
AX AH,AL
BX BH,BL
CX CH,CL
DX DH,DL
常用来存放参与运算的操作数或运算结果
AX:累加器。多用于存放中间运算结果。所有
I/O指令必须都通过AX与接口传送信息;
BX:基址寄存器。在间接寻址中用于存放基地址;
CX:计数寄存器。用于在循环或串操作指令中存
放循环次数或重复次数;
DX:数据寄存器。在32位乘除法运算时,存放
高16位数;在间接寻址的I/O指令中存放
I/O端口地址。
SP:堆栈指针寄存器,其内容为栈顶的
偏移地址;
BP:基址指针寄存器,常用于在访问内
存时存放内存单元的偏移地址。
作为通用寄存器,二者均可用于存放数据;
作为基址寄存器,BX通常用于寻址数据段;BP则通常用于寻址堆栈段。
BX一般与DS或ES搭配使用
SI:源变址寄存器
DI:目标变址寄存器变址寄存器常用于指令的间接寻址或变址寻址。特别是在串操作指令中,用SI存放源操作数的偏移地址,而用DI存放目标操作数的偏移地址。
于存放逻辑段的段基地址(逻辑段的概念后面将要介绍)
CS:代码段寄存器
代码段用于存放指令代码
DS:数据段寄存器
ES:附加段寄存器
数据段和附加段用来存放操作数
SS:堆栈段寄存器
堆栈段用于存放返回地址,保存寄存器内容,
传递参数
IP:指令指针寄存器,其内容为下一条
要执行的指令的偏移地址
FLAGS:标志寄存器状态标志:存放运算结果的特征控制标志:控制某些特殊操作
6个状态标志位(CF,SF,AF,PF,OF,ZF)
3个控制标志位(IF,TF,DF)
8088:20根地址线,可寻址220(1MB)个存储单元
CPU送到AB上的20位的地址称为物理地址
内存中一个按FILO方式操作的特殊区域。
每次压栈和退栈均以WORD为单位。
SS存放堆栈段地址,SP存放段内偏移,SS:SP构成了堆栈指针。
堆栈用于存放返回地址、过程参数或需要保护的数据。
常用于响应中断或子程序调用。
控制转移指令分为:
转移指令循环控制指令调用和返回指令中断指令
(1) 无条件转移指令 - JMP
本指令无条件转移到指定的目标地址,以执行从该地址开始的程序段。根据设置CS、IP的方法,JMP指令分成4种情况。
① 段内直接转移,JMP disp
指令中给出的8/16位的位移量加到IP。CS保持不变。
② 段内间接转移,JMP reg/mem
reg/mem中的16位偏移地址送IP。CS保持不变。
③ 段间直接转移 JMP segment:offset
指令中给出的16位的段和16位的偏移地址送到CS和IP。
④ 段间间接转移 JMP mem32
mem32中的16位的段和16位的偏移地址送到CS和IP。
转移的目标地址由指令直接给出。指令中给出的目标地址实际上是一个相对于IP的位移量:
位移量 转移范围 汇编语言中格式
8位 -128~+127 JMP SHORT OPRD
16位 -32768~+32767 JMP NEAR PTR OPRD
例:JMP 0120H ;直接转向0120H
JMP SHORT LP ;转向LP
JMP NEAR PTR BBB ;转向BBB
由于是段内转移,故转移后CS内容保持不变转移的目标地址由指令直接给出。指令中给出的目标地址实际上是一个相对于IP的位移量:
位移量 转移范围 汇编语言中格式
8位 -128~+127 JMP SHORT OPRD
16位 -32768~+32767 JMP NEAR PTR OPRD
例:JMP 0120H ;直接转向0120H
JMP SHORT LP ;转向LP
JMP NEAR PTR BBB ;转向BBB
由于是段内转移,故转移后CS内容保持不变转移的目的地址(段和偏移)在两个相邻的字存储单元中。例如:
JMP DWORD PTR[SI]
设指令执行前:(DS)=4000H,(SI)=1212H,
(41212H)=1000H,(41214H)=4A00H
则指令执行后:(IP)=1000H,(CS)=4A00H
于是转到4B000H处开始执行指令。
例中的DWORD PTR表示转移地址是一个双字。
例2:在8000H开始的长度为1000字节的字符串中 查找’S’,若找到,把其偏移地址记录在ADDR中,否则ADDR单元置为0FFFFH。
MOV DI,8000H
MOV CX,1000
MOV AL,’S’
MOV ADDR,0FFFFH
GOON,SCASB
LOOPNZ GOON
JNZ DONE
DEC DI
MOV ADDR,DI
DONE,HLT
子程序的段地址和偏移地址直接由CALL指令给出。
格式:CALL far_proc ;far_proc为远过程的地址指令的操作为:
( CS内容压栈
( IP内容压栈
( CS←段地址
( IP←偏移地址
例:CALL 2000H:1000H
CALL TIMER ;TIMER为远过程子程序的段和偏移地址为存储器的连续4个单元中的内容。
格式:CALL mem32
指令的操作为:
SP←(SP)-2
((SP)+1,(SP))←(CS) ;CS压栈
CS←(mem32+2)
SP←(SP)-2
((SP)+1,(SP))←(IP) ;IP压栈
IP←(mem32)
例:CALL DWORD PTR[DI]
调用地址在[DI],[DI]+1,[DI]+2,[DI]+3四个存储单元中。低字内容为偏移地址,高字内容为段地址。
段内返回指令RET的操作为:
恢复子程序执行前IP的内容。
段间返回指令RET的操作为:
恢复子程序执行前IP和CS的内容。
另有一种带立即数的返回指令,RET n,,其中n为偶数,表示从栈顶弹出地址后另外丢弃的字节数。
例:RET 4 ;返回后再丢弃栈顶的4个字节
8086/8088 CPU在程序中允许安排一条中断指令来引起一个中断过程,这种中断叫内部中断,或叫软中断。被中断的指令地址处称为“断点”。有关中断的详细情况将在第六章讨论。
中断指令共有三条:
(1)INT n 执行类型n的中断服务程序,N=0~255
(2)INTO 执行溢出中断的中断服务程序
(3)IRET 从中断服务程序返回调用程序
1.标志操作指令
用来设置标志位的状态。
(1)CF设置指令
CLC 0→CF
STC 1→CF
CMC CF变反
(2)DF设置指令
CLD 0→DF (串操作的指针移动方向从低到高)
STD 1→DF (串操作的指针移动方向从高到低)
(3)IF设置指令
CLI 0→IF (禁止INTR中断)
STI 1→IF (开放INTR中断)
汇编语言程序设计操作数可能放在存储器中,这就涉及操作数的地址。程序中遇到转移指令或调用指令,也需要知道转移地址,若采用具体地址就很不方便,一旦有错,改动也很麻烦。于是人们采用标号或符号来代替地址,例:
LP1,mov ax,VAR

loop LP1
汇编语言——指令助记符,符号地址,标号,伪指令等语言元素的集合以及这些元素使用的规则。
用汇编语言编写的程序叫汇编语言源程序。
一个基本的汇编语言程序框架如下:
stack SEGMENT PARA ‘stack‘
DB 100 DUP(‘stack’)
stack ENDS
data SEGMENT
<数据、变量在此定义>
data ENDS
code SEGMENT
ASSUME CS:code,DS:data,ES:data
start,MOV AX,data
MOV DS,AX
MOV ES,AX
<此处加入你自己的程序段>
MOV AL,4CH
INT 21H
code ENDS
END start