1
课程目标微机原理是学习和掌握微机硬件知识和汇编语言程序设计的入门课程:
微型计算机的基本工作原理
汇编语言程序设计
微型计算机接口技术目的:建立微型计算机系统的整体概念,
形成微机系统软硬件开发的初步能力。
2
教学内容第一章 基础知识第二章 微型计算机基础第三章 8086/8088CPU的指令系统第四章 汇编语言程序设计第五章 存储器系统第六章 输入输出和中断技术第七章 常用数字接口电路第八章 模拟量的输入输出
3
教材李伯成,侯伯亨,张毅坤主 编,微机原理与接口技术,西安电子科技大学出版社。 2002.2
微机原理与接口实验指导书,西安交大课程情况教学,60
考试:出勤 10%,作业 30%,期末考试 60%
答疑辅导
4
第 1章 基础知识主要内容:
各种常用记数制和编码以及它们相互间的转换;
二进制数的算术运算和逻辑运算;
符号数的表示及补码运算;
二进制数运算中的溢出问题
5
§ 1.1 概 述
电子计算机的发展:
电子管计算机( 1946-1956)
晶体管计算机( 1957-1964)
中小规模集成电路计算机( 1965-1970)
超大规模集成电路计算机( 1971-今)
电子计算机按其性能分类:
大中型计算机 /巨型计算机( Mainframe Computer)
小型计算机( Minicomputer)
微型计算机( Microcomputer)
单片 计算机( Single-Chip Microcomputer)
微型计算机的核心:微处理器 (中央处理器 CPU)
Intel CPU的发展见下页表
6
代 发表年份 字长(bits) 型号 线宽(?m) 晶体管数 (万个 ) 时钟频率 (MHz) 速度(MIPS)
一 19711972 48 40048008 50 0.20.3 <1 0.05
二 1974 8 8080 20 0.5 2-4 0.5
三 19781982 16 8086/808880286 2-3 2.913 4.77-108-20 <11-2
四 19851989 32 8038680486 1-2 27.5120 12-3325-66 6-1220-40
五 1993 32 Pentium 0.6-0.8 330 60-200 100-200

1995
1996
1997
1999
2001
32
P/Pro
P/MMX
PII
PIII
P4
0.6
0.6
0.35
.25-.13
.18-.13
550
450
750
850
3000
133-200
166-233
233-450
450-1200
1300-3000
>300
七 2002? 64 Itanium? 0.08 CPU:2.5KCache:30K 800(20条指令 /时钟周期 ) >3000
7
§ 1.2 计算机中的数制
了解
特点;
表示方法;
相互间的转换。
8
一、常用记数制
十进制 ——符合人们的习惯
二进制 ——便于物理实现
十六进制 ——便于识别、书写
八进制
9
1,十进制特点:以十为底,逢十进一;
共 有 0-9十个数字符号 。
表示:
10
2,二进制特点:以 2为底,逢 2进位;
只有 0和 1两个符号。
表示:
11
3,十六进制特点:以 16为底,逢 16进位;
有 0--9及 A--F共 16个数字符号。
表示:
12
进位计数制的一般表示一般地,对任意一个 K进制数 S都可表示为
1 2 0
n 1 2 0
1
1
1
()








nn
kn
m
m
n
i
i
im
S S K S K S K
S K S K
SK
其中:
Si -- S的 第 i位数码,可以是 K个符号中任何一个;
n,m – 整数和小数的位数;
K -- 基数;
Ki -- K进制数的权
13
如何区分不同进位记数制的数字在数字后面加一个字母进行区分:
二进制:数字后面加 B,如 1001B
八进制:数字后面加 O,如 1001O
十进制:一般不加,如 1001
十六进制:数字后面加 H,如 1001H
在明显可以区分其记数制的情况下,可以省略数字后面的字母
14
二、各种数制间的转换
1,非十进制数到十进制数的转换按相应 进位计数制的权表达式展开,
再按十进制求和。
例,10110010B = (?)10
13FAH= (?)10
15
2,十进制到非十进制数的转换
十进制 → 二进制的转换:
整数部分:除 2取余;
小数部分:乘 2取整。
十进制 → 十六进制的转换:
整数部分:除 16取余;
小数部分:乘 16取整。
以小数点为起点求得整数和小数的各个位。
16
3,二进制与十六进制间的转换
用 4位二进制数表示 1位十六进制数例,10110001001.110 = (?)H
0101 1000 1001.1100
5 8 9,C
注意:位数不够时要补 0
17
§ 1.3 无符号二进制数的运算无符号数 算术运算有符号数 逻辑运算
18
一、无符号数的运算
算术运算包括:
加法运算减法运算乘法运算除法运算
19
1,规则
加法,1+1=0(有进位),…
减法,0-1=1(有借位),…
乘除法,…
一个数乘以 2相当于该数左移一位;除以 2
则相当于该数右移 1位。
20
[例 ]:
00001011× 0100=00101100B
00001011÷ 0100=00000010B…11B
即,商 =00000010B
余数 =00000011B
21
2,无符号数的表示范围一个 n位的无符号二进制数 X,其表示范围为
0 ≤X ≤ 2n-1
若运算结果超出这个范围,则产生溢出。
(或者说运算结果超出 n位,则产生溢出)
判别方法:
运算时,当最高位向更高位有进位(或借位)时则产生溢出 。
22
[例 ]:
11111111
+ 00000001
1 00000000
结果超出8位(最高位有进位),发生溢出。(结果为 256,超出8位二进制数所能表示的范围 255)
23
3,逻辑运算
与 (∧ )、或 (∨ )、非 (▔ ),异或 (⊕ )
特点:按位运算,无进借位
运算规则
…..
例,A=10110110,B=01101011
求,A∧B,A∨B,A⊕B
24
4,逻辑门逻辑门:完成逻辑运算的电路掌握:
与、或、非门逻辑符号和逻辑关系
(真值表);
与非门、或非门的应用。
25
与门( AND Gate)
Y = A∧ B
A B Y
0 0 0
0 1 0
1 0 0
1 1 1
&AB Y
注:基本门电路仅完成 1位二进制数的运算
26
或门( OR Gate)
Y = A∨ B
A B Y
0 0 0
0 1 1
1 0 1
1 1 1
Y
A
B
≥1
27
非门( NOT Gate)
1A Y
Y = A
A Y
0 1
1 0
28
异或门( eXclusive OR Gate)
Y = A⊕ B
Y
A
B

A B Y
0 0 0
0 1 1
1 0 1
1 1 0
29
5,译码器
74LS138译码器:
G1
G2A
G2B
C
B
A
Y0
Y7
译码输出译码输入译码使能
30
74LS138真值表使 能 端 输 入 端 输 出 端
G1 #G2A #G2B C B A #Y0 #Y1 #Y2 #Y3 #Y4 #Y5 #Y6 #Y7
0 1
1 0
1 1
0
1 0 0
1 0 0
1 0 0
1 0 0
1 0 0
1 0 0
1 0 0
1 0 0




0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
0 1 1 1 1 1 1 1
1 0 1 1 1 1 1 1
1 1 0 1 1 1 1 1
1 1 1 0 1 1 1 1
1 1 1 1 0 1 1 1
1 1 1 1 1 0 1 1
1 1 1 1 1 1 0 1
1 1 1 1 1 1 1 0
31
§ 1.4 带符号二进制数的运算
计算机中的带符号二进制数
把二进制数的 最高位 定义为符号位
符号位为 0 表示 正数,符号位为 1 表示 负数
连同符号位一起数值化了的数,称为 机器数 。
机器数所表示的真实的数值,称为 真值 。
(在以下讲述中,均以8位二进制数为例)
32
[例 ]:
+52 = +0110100 = 0 0110100
符号位 数值位
-52 = -0110100 = 1 0110100
真值 机器数
33
1,符号数的表示
对于符号数,机器数常用的表示方法有 原码,反码 和 补码 三种。
数 X的原码记作 [X]原,反码记作
[X]反,补码记作 [X]补 。
注意:对正数,三种表示法均相同。
它们的差别在于对负数的表示。
34
原码 [X]原
定 义符号位,0表示正,1表示负;
数值位:真值的绝对值。
n
n n
X X
X X
X



1
1 1
2
2 2
≥0
0 ≥-
35
原码的例子真值 X=+18=+0010010
X=-18=-0010010
原码 [X]原 =0 0010010
[X]原 =1 0010010
符号 符号位
n位原码表示数值的范围是对应的原码是 111? 1~ 011? 1。
( ) ~ ( )nn112 1 2 1
36
数 0的原码
8位数 0的原码,+0 = 0 0000000
- 0 = 1 0000000
即:数 0的原码不唯一。
37
反码 [X]反定义
若 X>0,则 [X]反 =[X]原
若 X<0,则 [X]反 = 对应原码的符号位不变,数值部分按位求反
n
n n
X XX
X X


1
1
2
( 2 1 ) 2
≥0
0 ≥-
38
[例 ]:
X= - 52 = -0110100
[X]原 = 10110100
[X]反 = 11001011
39
反码的例子真值 X=+18=+0010010
X=-18=-0010010
反码 [X]反 =0 0010010
[X]反 =1 1101101
符号 符号位
n位反码表示数值的范围是对应的反码是 100? 0~ 011? 1。
( ) ~ ( )nn112 1 2 1
40
0的反码:
[+0]反 = 00000000
[-0]反 = 11111111
即:数 0的反码也不是唯一的。
41
补码定义:
若 X>0,则 [X]补 = [X]反 = [X]原
若 X<0,则 [X]补 = [X]反 +1
-
n
n n
X X
X
X X


1
1
2
2 2
≥0
0 > ≥-
42
[例 ]:
X= –52= – 0110100
[X]原 = 10110100
[X]反 = 11001011
[X]补 = [X]反 +1=11001100
n位补码表示数值的范围是对应的补码是 100? 0~ 011? 1。
~ ( )112 2 1nn
43
0的补码:
[+0]补 = [+0]原 =00000000
[-0]补 = [-0]反 +1=11111111+1
=1 00000000
对 8位字长,进位被舍掉
∴ [+0]补 = [-0]补 = 00000000
44
特殊数 10000000
该数在原码中定义为,-0
在反码中定义为,-127
在补码中定义为,-128
对无符号数,(10000000)2 = 128
45
8位有符号数的表示范围:
对 8位二进制数:
原码,-127 ~ +127
反码,-127 ~ +127
补码,-128 ~ +127
想一想,16位有符号数的表示范围是多少?
46
2,有符号二进制数与十进制的转换对用补码表示的二进制数:
1)求出真值
2)进行转换
47
[例 ]:
将一个用补码表示的二进制数转换为十进制数。
1) [X]补 = 0 0101110B 真值为,+0101110B
正数所以,X=+46
2) [X]补 = 1 1010010B
负数
X = [[X]补 ]补 = [11010010]补
= - 0101110B
所以,X = - 46
48
3,补码加减法的运算规则
通过引进补码,可将减法运算转换为加法运算。规则如下:
[X+Y]补 =[X]补 +[Y]补
[X-Y]补 =[X]补 - [Y]补其中 X,Y为正负数均可,符号位参与运算。
49
*补码的运算原理模 (module)就是一个计数系统的最大容量 。 例如,钟表的模为 12,8位二进制数的模为 28。
凡是用器件进行的运算都是有模运算,运算结果超过模的部分 会被运算器 自动丢弃 。 因此,当 器件为 n位时,

X=2n+X (mod 2n)
不难验证,
[X]补 =2n+X (mod 2n)
因此,
[X?Y]补 = 2n + (X?Y) (mod 2n)
= (2n+X) + (2n?Y) (mod 2n)
= [X]补 + [?Y]补
50
[例 ]:
X=-0110100,Y=+1110100,求 [X+Y]补
[X]原 =10110100
[X]补 = [X]反 +1=11001100
[Y]补 = [Y]原 =01110100
所以,[X+Y]补 = [X]补 + [Y]补
=11001100+01110100
=01000000
51
4,符号数运算中的溢出问题
进 (借 )位 ——
在加法过程中,符号位向更高位产生进位;
在减法过程中,符号位向更高位产生借位。
溢出 ——
运算结果超出运算器所能表示的范围。
52
溢出的判断方法
方法1:
同号相减或异号相加 —— 不会溢出。
同号相加或异号相减 —— 可能溢出:
两种情况:
同号相加时,结果符号与加数符号相反 —— 溢出;
异号相减时,结果符号与减数符号相同 —— 溢出。
方法2:
两个 8位带符号二进制数相加或相减时,若
C7?C6= 1,
则结果产生溢出。
C7为最高位的进 (借 )位; C6 为次高位的进 (借 )位。
53
[例 ]:
有符号数运算,有溢出表示结果是错误的
无符号数运算,有进位表示结果 是 错误的
1 0 1 1 0 1 0 1
+ 1 0 0 0 1 1 1 1
1 0 1 0 0 0 1 0 0
0 1 0 0 0 0 1 0
+ 0 1 1 0 0 0 1 1
1 0 1 0 0 1 0 1
0 1 0 0 0 0 1 0
+ 1 1 0 0 1 1 0 1
1 0 0 0 0 1 1 1 1
CASE1,CASE2:
CASE3:
54
§ 1.5 二进制编码一、十进制数的表示 —— BCD码
用 4位二进制数表示一位十进制数。有两种表示法,压缩 BCD码 和 非压缩 BCD码 。
压缩 BCD码的每一位用 4位二进制表示,
0000~1001表示 0~9,一个字节表示两位十进制数。
非压缩 BCD码用一个字节表示一位十进制数,
高 4位总是 0000,低 4位的 0000~1001表示 0~9。
55
计算机中除了能够处理数值数据以外,还可以处理文字、语音、图像等各种信息,这些信息统称为非数值数据。
非数值数据在计算机中也必须以 二进制形式 表示,非数值数据的表示本质上是编码的过程。
最常用的数据编码:美国标准信息交换代码
(American Standard Code for Information
Interchange,ASCII码 )
(见下页 ASCII编码表,教材中的附录 A)
二、非数值数据的表示
56
ASCII码 — 美国标准信息交换代码
A S C I I 字符表
000 001 010 01 1 100 101 1 10 111
0000 N U L D L E SP 0 @ P ` p
0001 S O H D C 1 ! 1 A Q a q
0010 S T X D C 2 " 2 B R b r
001 1 ET X D C 3 # 3 C S c s
0100 EO T D C 4 $ 4 D T d t
0101 EN G N A K % 5 E U e u
01 10 A C K S Y N & 6 F V f v
01 1 1 B EL ET B ' 7 G W g w
10 00 BS C A N ( 8 H X h x
1001 HT EM ) 9 I Y i y
1010 LF S U B *,J Z j z
101 1 VT ES C + ; K [ k {
1 100 FF FS,< L \ l |
1 101 CR GS - = M ] m }
1 1 10 SO RS,> N? n ~
1111 SI US /? O? o D EL
注,H 表示高 3 位,L 表示低 4 位。
H
L
57
ASCII码
采用 7位二进制代码对字符进行编码
数字 0~9的编码是 0110000~0111001,它们的高 3位均是 011,后 4位正好与其对应的二进制代码( BCD码)
相符。
英文字母 A~Z的 ASCII码从 1000001( 41H)开始顺序递增,字母 a~z的 ASCII码从 1100001( 61H)开始顺序递增,这样的排列对信息检索十分有利。
最高位通常总为 0,有时也用作奇偶校验位。
58
§ 1.6 计算机中常用数据单位
bit
1Mb=1024?1024bit=220bit
1Gb=230bit=1024Mb
1Tb=240bit=1024Gb
Byte
1 Byte=8bit,1KB=1024 Byte,…
Word
表示字长,有 1bit,4bit,8bit,16bit等,
一般情况下为 2Byte(16bit)。
59
第 1章难点
补码的概念及其运算
有符号数运算的溢出问题