第 1章 基础知识
第 1章 基础知识
1.1 汇编语言及特点
1.2 数据表示
1.3 8086CPU和寄存器组
1.4 存储器物理地址的形成
开 始
第 1章 基础知识
1.1 汇编语言及特点
1.1.1 机器语言
1.1.2 汇编语言
1.1.3 高级语言
1.1.4 汇编语言的特点
返回本章首页
第 1章 基础知识
1.1.1 机器语言
计算机能够直接识别的数据是由二进制数 0
和 1组成的代码。机器指令就是用二进制代码组
成的指令,一条机器指令控制计算机完成一个基
本操作。
用机器语言编写的程序是计算机惟一能够
直接识别并执行的程序,而用其他语言编写的程
序必须经过翻译才能变换成机器语言程序,所以,
机器语言程序被称为目标程序。
返回本节
第 1章 基础知识
1.1.2 汇编语言
为了克服机器语言的缺点,人们采用助记符表示机
器指令的操作码,用变量代替操作数的存放地址等,这样就
形成了汇编语言。所以汇编语言是一种用符号书写的、基
本操作与机器指令相对应的、并遵循一定语法规则的计算
机语言。
用汇编语言编写的程序称为汇编源程序。
汇编语言是一种符号语言,比机器语言容易理解和
掌握,也容易调试和维护。但是,汇编语言源程序要翻译
成机器语言程序才可以由计算机执行。这个翻译的过程称
为“汇编”,这种把汇编源程序翻译成目标程序的语言加
工程序称为汇编程序。
返回本节
第 1章 基础知识
1.1.3 高级语言
汇编语言虽然较机器语言直观,但仍然烦
琐难懂。于是人们研制出了高级程序设计语言。
高级程序设计语言接近于人类自然语言的语法习
惯,与计算机硬件无关,易被用户掌握和使用。
目前广泛应用的高级语言有多种,如
BASIC,FORTRAN,PASCAL,C,C++等等。
返回本节
第 1章 基础知识
1.1.4 汇编语言的特点
( 1)汇编语言与处理器密切相关。
( 2)汇编语言程序效率高。
( 3)编写汇编语言源程序比编写高级语言源程
序烦琐。
( 4)调试汇编语言程序比调试高级语言程序困
难。
第 1章 基础知识
汇编语言的主要应用场合:
( 1)程序执行占用较短的时间,或者占用较小
存储容量的场合。
( 2)程序与计算机硬件密切相关,程序直接控
制硬件的场合。
( 3)需提高大型软件性能的场合。
( 4)没有合适的高级语言的场合。
返回本节
第 1章 基础知识
1.2 数据表示
1.2.1 数值数据
1.2.2 字符数据
返回本章首页
第 1章 基础知识
1.2.1 数值数据
数值数据分为有符号数和无符号数 。 无符号数最
高位表示数值,而有符号数最高位表示符号 。 有
符号数有不同的编码方式, 常用的是补码 。
第 1章 基础知识
1,原码
最高位表示符号(正数用 0,负数用 1),其他位表
示数值位,称为有符号数的原码表示法。 【例
1.1】有符号数的原码表示。
X=45=00101101B [X]原 = 00101101B
X=-45,[X]原 =10101101B
原码表示简单易懂, 但若是两个异号数相加 ( 或
两个同号数相减 ),就要做减法 。 为了把减法运
算转换为加法运算就引进了反码和补码 。
第 1章 基础知识
2, 反码
正数的反码与原码相同, 符号位用 0表示, 数值
位值不变 。 负数的反码符号位用 1表示,数值位为
原码数值位按位取反形成, 即 0变 1,1变 0。
【 例 1.2】 有符号数的反码表示 。
X=45=00101101B,[X]反 =00101101B
X=-45,[X]反 =11010010B
第 1章 基础知识
3,补码
正数的补码与原码相同, 即符号位用 0表示, 数
值位值不变 。 负数的补码为反码加 1
形成 。
【 例 1.3】 有符号数的补码表示 。
X=45=00101101B [X]补 =00101101B
X=-45 [X]补 =11010011B
第 1章 基础知识
4,符号扩展
在数据处理时,有时需要把 8位二进制数扩展成 16位二进制
数,当要扩展的数是无符号数时,可在最高位前扩展 8个 0。
如果要扩展的数是补码形式的有符号数,那么,就要进行符
号位的扩展, 符号扩展后, 其结果仍是该数的补码 。
【 例 1.4】 符号扩展表示 。
21的 8位二进制补码为,00010101
符号扩展后 21的 16位二进制补码为,0000000000010101。
00010101和 0000000000010101都是 21的补码 。
第 1章 基础知识
5,数据的表示范围和大小
n位二进制数能够表示的无符号整数的范围是,
0 ≤I ≤ 2n-1
n位二进制数能够表示的有符号整数的范围是,
-2( n-1) ≤ I ≤+2( n-1) -1
第 1章 基础知识
6.十六进制表示
由于二进制数的基数太小, 书写和阅读都不方便,
而十六进制的基数 16= 24,这样二进制数与十六
进制之间能方便地转换 。 因此, 习惯把二进制数
改写成十六进制数, 在汇编语言程序设计时尤其
如此 。
在书写时, 为了区别于十六进制和二进制数, 通
常在十六进制数后加字母 H。
返回本节
第 1章 基础知识
1.2.2 字符数据
1,ASCII码
2,BCD码
第 1章 基础知识
1,ASCII码
标准 ASCII码用 7位二进制数编码,共有 128个。
计算机存储器基本单位为 8位, ASCII码的最高
位通常为 0,通信时, 最高位用作奇偶校验位 。
ASCII码表中的前 32个和最后 1个编码是不能显
示的控制字符, 用于表示某种操作 。
ASCII码表中 20H后的 94个编码是可显示和打印
的字符, 其中包括数码 0~ 9,英文字母, 标点符
号等 。
第 1章 基础知识
2,BCD码
虽然二进制数实现容易,但不符合人们的使
用习惯,且书写阅读不方便, 所以在计算机输入
输出时通常还是采用十进制来表示数, 这就需要
实现十进制与二进制间的转换 。 为了转换方便,
常采用二进制编码的十进制,简称为 BCD码 。
BCD码就是用 4位二进制数表示 1位十进制
整数。表示的方法有多种,常用的是 8421BCD码,
它的表示规律如表 1.1所示。
第 1章 基础知识
表 1.1 十进制数字的 8421BCD码
十进制数字 8421BCD码 十进制数字 8421BCD码
0 0000 5 0101
1 0001 6 0110
2 0010 7 0111
3 0011 8 1000
4 0100 9 1001
返回本节
第 1章 基础知识
1.3 8086CPU和寄存器组
1.3.1 Intel 8086CPU内部结构
1.3.2 8086寄存器组
1.3.3 标志寄存器
返回本章首页
第 1章 基础知识
1.3.1 Intel 8086CPU内部结构
图 1.2 8086CPU内部结构
图 1.2 8086CPU内部结构 返回本节
第 1章 基础知识
1.3.2 8086寄存器组

1.
3
80
86CPU





第 1章 基础知识
1.通用寄存器
( 1) 数据寄存器
数据寄存器共有 4个寄存器 AX,BX,CX,DX,用来保
存操作数或运算结果等信息。
AX寄存器称为累加器 。 使用频度最高, 用于算术, 逻辑
运算以及与外设传送信息等 。
BX寄存器称为基址寄存器 。 常用于存放存储器地址 。
CX寄存器称为计数器 。 一般作为循环或串操作等指令中
的隐含计数器 。
DX寄存器称为数据寄存器 。 常用来存放双字数据的高 16
位, 或存放外设端口地址 。
第 1章 基础知识
变址和指针寄存器包括 SI,DI,SP,BP4 个 16位寄存器,
主要用于存放某个存储单元的偏移地址 。
SI是源变址寄存器, DI是目的变址寄存器, 在字符串操
作中, SI和 DI都具有自动增量或减量的功能 。
SP为堆栈指针寄存器,用于存放当前堆栈段中栈顶的偏
移地址; BP为基址指针寄存器,用于存放堆栈段中某一
存储单元的偏移地址。
( 2)变址和指针寄存器
第 1章 基础知识
2.段寄存器
8086CPU的4个 16位的段寄存器分别称为代码段
寄存器 CS,数据段寄存器 DS,堆栈段寄存器 SS,
附加数据段寄存器 ES。 段寄存器用来确定该段在
内存中的起始地址 。
代码段用来存放程序的指令序列 。 CS存放代码
段的段首址, 指令指针寄存器 IP指示代码段中指
令的偏移地址 。
第 1章 基础知识
3.指令指针
8086CPU中的指令指针 IP,它总是保存下
一次将要从主存中取出指令的偏移地址, 偏移地
址的值为该指令到所在段段首址的字节距离 。 在
目标程序运行时, IP的内容由微处理器硬件自动
设置, 程序不能直接访问 IP,但一些指令却可改
变 IP的值, 如转移指令, 子程序调用指令等 。
返回本节
第 1章 基础知识
1.3.3 标志寄存器
8086CPU中有一个很重要的 16位标志寄存器,它
包含 9个标志位,主要用于保存一条指令执行后,
CPU所处状态信息及运算结果的特征。
1,条件标志
2,状态控制标志
第 1章 基础知识
1.条件标志
( 1) 进位标志 CF
( 2) 零标志 ZF
( 3) 符号标志 SF
( 4) 溢出标志 OF
( 5) 奇偶标志 PF
( 6) 辅助进位标志 AF
第 1章 基础知识
2.状态控制标志
( 1) 方向标志 DF
( 2) 中断允许标志 IF
( 3) 追踪标志 TF
返回本节
第 1章 基础知识
1.4 存储器物理地址的形成
1.4.1 存储器
1.4.2 存储器单元的地址和内容
1.4.3 物理地址的形成
返回本章首页
第 1章 基础知识
1.4.1 存储器
存储器是计算机的记忆部件,用来存放程序和数
据。按所在的位置,存储器可以分成主存储器和辅助存
储器。
主存储器存放当前正在执行的程序和使用的数据,
CPU可以直接存取,它由半导体存储器芯片构成,其成
本高,容量小,但速度快。
辅助存储器可用来长期保存大量程序和数据,CPU
需要通过 I/O接口访问,它由磁盘或光盘构成,其成本低,
容量大,但速度较慢。
返回本节
第 1章 基础知识
1.4.2 存储器单元的地址和内容
存储单元地址, 8086系统中,为了标识和存取每
一个存储单元,给每个存储单元规定一个编号,
这就是存储单元地址。
存储单元的内容,一个存储单元中存放的信息
称为该存储单元的内容。
第 1章 基础知识
图 1.4表明了存储器
中部分存储单元存
放信息情况 。 从图
1, 4可看到,地址为
34560H的字节的存
储单元中的内容是
34H,而 地 址 为
34561H的字节存储
单元中的内容是
12H。
返回本节
第 1章 基础知识
1.4.3 物理地址的形成
8086CPU的地址线是 20位的,这样最大可寻址空
间应为 220=1MB,其物理地址范围从 00000H~ FFFFFH。
而 8086CPU寄存器都是 16位的。那么,这 1MB空间如何
用 16位寄存器表达呢?
根据要求可把 1M字节地址空间划成若干逻辑段 。
每个逻辑段必须满足两个条件:一是逻辑段的起始地址
( 简称段首址 ) 必须是 16的倍数;二是逻辑段的最大长
度为 64K。 按照这两个条件, 1M字节地址空间最多可划
分成 64K个逻辑段, 最少也要划分成 16个逻辑段 。 逻辑段
与逻辑段可以相连, 也可以不连, 还可以重叠 。
第 1章 基础知识
【 例 1.5】 各独立段的分配情况示例 。
设 CS=B000H,DS=1CDEH,SS=4200H、
ES=0150H,它们分别为代码段, 数据段, 堆栈段
和附加段的段首址 。 自每个段首址开始, 各段均
占 64KB的范围, 各段之间互不重叠 。 如图 1.5所
示 。
第 1章 基础知识
第 1章 基础知识
【例 1.6】各段相互重叠情况示例。
设 CS=0200H,DS=0400H,SS=0480H,这样代
码段、数据段和堆栈段的物理首地址分别为
02000H,04000H和 04800H。 其中代码段占 8KB
地址空间,数据段占 2KB,堆栈段占 256B,
SP=0100H。 如图 1.6所示。
第 1章 基础知识
图 1.6 各段重叠存储单元分配图
返回本节