第一章 汇 编 语 言 基 础 知 识
1封面第一章 汇 编 语 言 基 础 知 识
2
第一章 汇编语言基础知识
1.1 计算机系统概述 (硬件、软件、语言类型)
1.2 数据表示 (数制、编码、符号数、二进制运算)
1.3 Intel80x86系列微处理器 ( 8086~ P4)
1.4 PC微型计算机系统 ( PC机的软硬件)
1.5 8086微处理器 ( 8086的结构)
1.6 8086的寻址方式 ( 8086寻找操作数的方式)
要点及习题分析第一章 汇 编 语 言 基 础 知 识
3
1.1 计算机系统概述
1.1.1 计算机的硬件
1.1.2 计算机的软件
1.1.3 计算机程序设计语言返回第一章第一章 汇 编 语 言 基 础 知 识
4
1.1.1 计算机的硬件对汇编语言程序员来说,计算机硬件的结构如下图所示 ( CPU、存储器、接口(外设)):
运算器控制器寄存器主存储器系统总线
I/O
接口输入设备输出设备辅助存储器
CPU
外总线第一章 汇 编 语 言 基 础 知 识
5
1,中央处理单元由三部分组成。
控制器:取指令,经译码分析后发出各种控制命令,
如取数、存数、运算等。
运算器:完成各种算术运算和逻辑运算。
寄存器(或寄存器阵列):由多个 8位,16位寄存器组成,提供各种操作所需要的数据。
第一章 汇 编 语 言 基 础 知 识
6
2,存储器
1)存放程序和数据;可重复读取;新数据覆盖原数据。
2)主存:半导体,快,成本高,容量小;
辅存:软硬磁盘、光盘;
3) RAM:可读可写,易失性存储器;
ROM:只读,非易失性存储器;
4)由大量存储单元组成:单位、内容、地址、容量、
B(BYTE),KB,MB,GB,TB等。
第一章 汇 编 语 言 基 础 知 识
7
3.外部设备和接口设备类型:人机交互 机器间通信 外存(可看做
I/O设备)
接口:①接口的必要性:格式转换、电平转换 …
② 接口的组成:三个(组)寄存器;通过寄存器交换数据;
③对接口的访问:端口 ---- 端口号 ----端口地址、
I/O地址;
返回 1.1
第一章 汇 编 语 言 基 础 知 识
8
1.1.2 计算机软件
1,系统软件 面向计算机、由厂家提供;其作用为管理和维护、充分发挥其功能、为用户提供一个方便使用的系统。如操作系统,诊断系统,程序设计语言等
2,应用软件 面向问题、由公司或用户编写
★集成开发环境:开发工具包括文本编辑、翻译程序、
调试程序、连接程序等,在 DOS时代,其各自是独立的;现在将其集成为一个软件,即为“集成开发环境”。
返回 1.1
第一章 汇 编 语 言 基 础 知 识
9
1.1.3计算机的程序设计语言
1.机器语言低级语言
2.汇编语言程序设计语言
3.高级语言 C/C++,JAVA、
DELPHI……
第一章 汇 编 语 言 基 础 知 识
10
1.机器语言指令 → 机器指令;
机器指令的组成:操作码、操作数;
指令系统 ; 机器语言:指令系统及使用指令系统编写程序的规则。
机器语言特点,计算机唯一能够直接识别的语言。
目标程序:用机器语言描述的程序。
机器语言的致命缺点:难以使用。如 100+256
8086机器语言程序,B8 64 00
05 00 01
A3 00 20
第一章 汇 编 语 言 基 础 知 识
11
2.汇编语言汇编指令:用便于记忆、并能描述指令功能的符号表示机器指令 → 汇编指令(符号指令)。
助记符:表示指令操作码的符号,一般用英语单词或缩写。指令的操作数也用符号表示。
汇编语言:汇编指令及使用汇编指令编写程序的规则。
(其他语言要素第三章介绍)
汇编语言 (源 )程序:使用汇编语言编写的程序。
汇编语言的特点:汇编指令与机器指令一一对应,但相对机器语言易于理解、掌握,当我们用低级语言编写程序时使用汇编语言而不用机器语言。
汇编和汇编程序:翻译过程 翻译程序。
第一章 汇 编 语 言 基 础 知 识
12
3.高级语言机器语言和汇编语言以外的程序设计语言统称高级语言。其特点是更加接近自然语言和惯用的数学表达形式,与计算机硬件结构无关,因而便于使用,便于交流和推广。
总之,高级语言编程效率高,但运行效率低。
高级语言可分成编译型和解释型高级语言,分别使用编译程序和解释程序将源程序翻译成机器语言程序,
然后交计算机执行。
第一章 汇 编 语 言 基 础 知 识
13
4.汇编语言程序设计的意义学习汇编语言的意义:
1)与硬件密切相关,是学习硬件类课程的先行课和基础课。
2)有利于理解计算机的工作原理。
3)可直接而有效地控制硬件。
4)执行效率高,占用空间小。
5)特殊应用只能使用汇编语言,如加密解密等。
应该指出的是:在计算机速度大大提高和存储器容量大大增加的今天,高级语言的使用更为广泛和普遍
(特别是编写大型程序)。
返回第一章第一章 汇 编 语 言 基 础 知 识
14
1.2数据表示
1.2.1 数制
1.2.2 编码
1.2.3 有符号数的表示方法
1.2.4 二进制运算返回第一章第一章 汇 编 语 言 基 础 知 识
15
1.2.1 数制
[数制涉及三个问题,计数符号 基数和权 计数规则
( 1) 计数符号这是用于书写数值的符号,所有计数符号的集合称作数符集。 k进制的数符集中必然包含 k个符号。比如:
二进制的数符集中有两个符号,0和 1;
八进制的数符集中有 8个符号,0,1,2,3,4,5,6,7;
十进制的数符集中有 10个符号,0,1,2,3,4,5,6,
7,8,9;
十 六 进 制 的 数 符 集 中 有 16 个符号:
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F。
第一章 汇 编 语 言 基 础 知 识
16
数制的三个问题,1,二进制数( 2) 基数和权如果把用 k进制书写的一个整数从右往左依次记作第 0位,第 1位,…,第 n位,则第 i位上的数符 ai所代表的含义是 ai× ki。 在此,我们把 k称为一个数制的基数,而把 ki称为 k进制数第 i位的权 。 ( 如 888,每个
8的位权都不相同 )
( 3) 计数规则 简单地说,就是,逢 k进 1,借 1
当 k”。 ]…………………………………………………,.
1,二进制数 1 1 0 1 1 0 1 1,1 0 1 B=
1x27+1× 26+0× 25+1× 24+1× 23+0× 22+1× 21+1
× 20+1× 2-1+0× 2-2+1× 2-3
二进制数是计算机内部采用的,并唯一能够直接被计算机识别的数 。
第一章 汇 编 语 言 基 础 知 识
17
2,十六进制数2,十六进制数
8a0f.6bH=8× 163+10 × 162+0 × 161+15 × 160+6
× 16-1+11 × 16-2
引入十六进制数的目的是为了描述二进制数。
数的书写方法:
1)二进制数尾部加 B(b)。
2)十六进制数尾部加 H(h);如记数符号 a,b,c,
d,e,f打头,头部应加 0,如 0A8F5H;记数符号
a,b,c,d,e,f 不区别大小写,与 ABCDEF等效。
3)十进制数尾部加 D(d),但通常可以省略。
第一章 汇 编 语 言 基 础 知 识
18
3.数制间转换3.数制间转换
1)十进制数转换二进制数;
2)十进制数转换十六进制数;
3)二进制数十六进制数互相转换;
返回 1.2
第一章 汇 编 语 言 基 础 知 识
19
1.2.1- 3 数制转换:十进制 → 二进制(整数)
① 将整数部分不断除以 2,记下每次得到的余数,
直到商为零;②余数倒排,即最后得到的余数排在最高位,第一个余数排在最低位。例如将十进制数 13转换成二进制数:
2 1 3 余数
2 6 ----- 1
2 3 ----- 0
2 1 ----- 1
0 ----- 1
13D=1101B
第一章 汇 编 语 言 基 础 知 识
20
1.2.1- 3 数制转换:十进制 → 二进制(小数)
小数部分转换:乘 2取整,顺序排列得到的整数。
例如将 0.8125转换成二进制数:
0.8125
整数 × 2
1,6250
× 2
1,25
× 2
0,50
× 2
1,00
0.8125D=0.1101B(有时会有转换误差,如 0.3D)
返回数制转换第一章 汇 编 语 言 基 础 知 识
21
1.2.1- 3 数制转换:十进制 → 十六进制十进制数转换成十六进制数,方法同十进制数转换成二进制数,只不过“除 2取余”变为“除 16取余”,“乘 2取整” 变为“乘 16取整”。同理,如果要将十进制数转换为其它数制的数(如八进制数),
也采用同样的方法。
二进制数、十六进制数转换成十进制数教材未介绍,只要将二进制数、十六进制数按位权展开相加即可,如将 8A.B5H转换成十进制数:
8A.B5H=8× 161+ 10× 160+ 11× 16-1+5× 16-2
=128+ 10+ 0.6875+ 0.0195=138.707D
返回数制转换第一章 汇 编 语 言 基 础 知 识
22
二进制数互相转换十六进制数
1
1.2.1 - 3 数制转换:二进制 十六进制
( 1 )二进制数转换十六进制数以小数点为起点,以四位为单位向左和向右分割二进制数,然后将每四位二进制数用一位十六进制数表示,1101,0101.1011 B =0D5.BH 又如
1011010.101 B = 5A.AH 或 5 A.5H 。
( 2 ) 十六进制数转换二进制数将每一位十六进制数逐个用四位二进制数表示。
如 8 A9B,F H=1000,1010,1001,1011.1111
正因为二进制数和十六进制数之间的转换简单方便我们通常用十六进制数书写表示二进制数。
返回数制转换
5 A.5 H
第一章 汇 编 语 言 基 础 知 识
23
1.2.2 编码计算机中的数采用二进制数,字母、符号等也只能采用二进制代码( 0,1)的排列组合表示(编码)。
(两种编码,BCD码,ASCII码)
1,BCD 码( 8421码、二 ──十进制数)
解决十进制数在计算机内部如何表示。 BCD码规定用四位二进制数表示一位十进制数。
对多位十进制数,只要把每一位十进制数分别表示为四位二进制数即可。
十进制 BCD码
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001十进制 BCD码
28 0010 1000
956 1001 0101 0110
第一章 汇 编 语 言 基 础 知 识
24
2,ASCII码2,ASCII码解决字母、符号在计算机内部如何表示。
基本 ASCII码(标准 ASCII码)用七位二进制数表示一个符号(共 128个);
书写:用两位十六进制数书写,如 41H----A;
种类,1)控制字符(前 32个和最后一个):
0D--- 回车,0A--- 换行;
2)其他为打印字符(可显示字符);
应记住的 ASCII码,30H~39H,41H,61H
扩展 ASCII码用八位二进制数表示一个符号(共
256个)。
返回 1.2
第一章 汇 编 语 言 基 础 知 识
25
1.2.3 有符号数表示方法
0.无符号数、有符号数、机器数、真值
1.原码 正数原码:符号位为 0,数值位照抄。
负数原码:符号位为 1,数值位照抄。
例,X=+25=+00011001B [X]原 =00011001B
X= -25= -00011001B [X]原 =10011001B
2.反码 正数反码:符号位为 0,数值位照抄。
负数反码:符号位为 1,数值位取反。
例,X=+25=+00011001B [X]反 =00011001B
X= -25= -00011001B [X]反 =11100110B
原码和反码表数范围相同,都是 -127~+127。
第一章 汇 编 语 言 基 础 知 识
26
3,补码3,补码为了将减法运算变成加法来做,有符号数在计算机内一律采用补码表示。
正数补码:符号位为 0,数值位照抄。
负数补码:符号位为 1,数值位取反加一。
例,X=+25=+00011001B [X]补 =00011001B
X= -25= -00011001B [X]反 =11100110B
[X]补 =11100111B
下面是原码、反码和补码的小结。
原码、反码、补码总结:
1)正数的原码反码补码相同;负数的原码反码补码各不相同,但符号位都是 1。
2)设字长为八位,原码反码的表数范围为
-127~+127,补码的表数范围为 -128~+127。
3)已知某负数的补码,求该负数的真值,
方法如下:
①符号位不动,其余位求反加一,得到的是该负数的原码;
②根据原码即可写出该负数的真值。
例,[X]补 =11111100B
[X]原 =10000011B+1=10000100B
X= -0000100= - 4
返回 1.2
第一章 汇 编 语 言 基 础 知 识
27
1.2.4二进制运算(含十六进制运算)
1.算术运算与十进制运算相同,只不过是逢 2进 1,借 1当 2。
加法 减法 乘法
0+0=0 0‐ 0=0 0× 0=0
0+1=1 0‐ 1=1 0× 1=01+0=1 1‐ 0=1 1× 0=0
1+1=10 1‐ 1=0 1× 1=1
2.十六进制算术运算:与十进制运算相同,但
①逢 16进 1,借 1当 16;
②注意运算结果如为 A,B,C,D,E,F,不能写成
10,11,12,13,14,15。
例 1:计算 85AH+924H
8 5 A
+ 9 2 4————
1 17 E
例 2:计算 800H ‐ 1
8 0 0
‐ 0 0 1————
7 F F
不可以写成 14逢 16
进 1
第一章 汇 编 语 言 基 础 知 识
28
3.逻辑运算3.逻辑运算与运算( AND; ∧ ):
1∧0=0 1∧1=1 0∧0=0 0∧1=0
或运算( OR; ∨ ):
1∨0=1 1∨1=1 0∨0=0 0∨1=1
非运算( NOT;~ 或 — ):
~ 0=1 ( 0 =1) ~ 1= 0 ( 1= 0)
异或运算( XOR; ⊕ )
1⊕0=1 1⊕1=0 0⊕0=0 0⊕1=1
注意:逻辑运算是按位运算。
第一章 汇 编 语 言 基 础 知 识
29
4.用补码作减法(补充讲义)
我们用实例说明计算机在执行减法指令时,是如何把减法变成加法来做的(设字长为 8位)。
例 1,(+5)- (+4)即 (+00000101)-( +00000100)
①机器中 +5和 +4都用补码表示。
② 对减数求补 (求反加一),得到 ( -4) 的补码:
11111100
③ ( +5)的补码加 ( -4) 的补码:
0 0 0 0 0 1 0 1+ 1 1 1 1 1 1 0 0
——————————1 0 0 0 0 0 0 0 1
④ 将结果 00000001看作补码,其真值即为 +1。
进位被自动舍弃第一章 汇 编 语 言 基 础 知 识
30
用补码作减法( 2)
例 2 (+5)- (-4) 即 (+0000101)- (-0000100)
①机器中 +5和 - 4都用补码表示。 (-4)补 =11111100
② 对减数求补,得到的是 +4的补码,00000100
③ 将 +5的补码加 +4的补码
0 0 0 0 0 1 0 1+ 0 0 0 0 0 1 0 0
——————————0 0 0 0 1 0 0 1
④ 将结果看成补码,其真值即为正确结果 +9。
例 3,( - 5) -( +4)和 ( - 5) -( - 4) 步骤同上。
总之:①被减数和减数都用补码表示;
②机器对减数先求补,而后做加;
③将计算结果看作补码。
返回第一章第一章 汇 编 语 言 基 础 知 识
31
1.3 Intel 80x86系列微处理器
1.8086/8088/80186
8086,1978年推出 ;内外数据总线 16位 ;地址总线
20位;寻址范围 1MB;主频 5MHz.
8088,1979年推出;外部数据总线 8位;其余基本同
8086,被称为准 16位 CPU。
80186:增强了 8086的功能,但作为计算机的 CPU没有被使用过,只作过某些板卡的控制器。
第一章 汇 编 语 言 基 础 知 识
32
802862.80286( 16位 CPU)
1982年推出;内外数据总线 16位;地址总线 24位;
寻址范围 16MB;主频 5MHz~20MHz。
80286支持两种工作方式:实模式 和 保护模式。
实模式:相当于一个快速 8086。
保护模式:提供虚拟存储管理和多任务的硬件控制。物理寻址范围 16MB,虚拟存储器寻址范围可达
1GB。指令系统除包含 8086/80186指令外,新增 15条保护方式指令第一章 汇 编 语 言 基 础 知 识
33
803863.80386( 32位 CPU)
1985年推出 ;内外部数据总线 32位;地址总线 32位,
物理寻址范围 4GB,虚拟存储器寻址范围可达 64TB。主频为 16/25/33MHz。
386除支持 286的两种工作方式外,新增虚拟 8086
模式。虚拟 8086模式的特点:
1)既具有保护功能,又能执行实模式下的 8086代码,
且可以实现多任务。(可同时运行多个 DOS程序)
2) 可以在虚拟 8086模式和保护模式下快速、反复转换。指令系统除兼容原 16位 CPU指令外,全面升级为
32位指令,并新增多条指令。
第一章 汇 编 语 言 基 础 知 识
34
80486\pentium4.80486 ( 32位 CPU)
1989年推出;特点:①将高速缓存、协处理器与
CPU集成在一个芯片上;②部分采用了 RISC技术;
③采用了指令流水线技术;④大幅度提高了 CPU的主频,可达 100MHz。
5.Pentium/MMX Pentium(32位或准 64位 CPU)
Pentium:1993年推出;内部数据总线 32位,外部数据总线 64位 ;主频 60MHz~200MHz ;采用超标量技术。
MMX Pentium:1996年推出;主频最高 233MHz;新增
57条多媒体指令,提高了多媒体软件执行速度。
下面简单介绍 RISC技术和流水线技术。
RISC技术:精简指令系统计算机技术。
其特点是,CPU的指令系统不含复杂指令,指令长度固定,指令格式种类少,寻址方式少,指令数量少(只选择使用频度很高的指令),因此,
使计算机结构变得更加简单、有效,结合流水线等其他技术,使一个时钟周期完成一条指令,从而大大提高了计算机的速度。如1981年研制成的 RSCI I型 CPU,只有 31条指令,其性能却比当时最先进的商品化微处理器 MC68000和
Z8000快3~4倍。
流水线技术:计算机中的流水线技术和工厂中的流水装配线类似。①将执行一条指令需完成的操作分成若干子操作;②每个子操作由专门部件完成;③各子操作并行工作。由于子操作并行工作,提高了计算机的执行速度。(但要注意,完成一条指令所需要的时间并没有变。)(“每周期完成一条指令”和“完成一条指令需要一个周期”不同。)(超标量)
装配线第一章 汇 编 语 言 基 础 知 识
35
Pentium pro\pii/piii\p46,Pentium Pro/ P Ⅱ / P Ⅲ /P4
Pentium Pro:1995年推出; Pentium的增强型芯片,主要用于服务器,
P II:1997年推出;在 Pentium Pro 的基础上增加了 MMX指令。
P III:1999年推出;在 P II的基础上增加了 70条
SSE指令。
P 4,2000年推出;新增 76条 SSE2指令。
另外,从 P II 时代开始,Intel为了占领低端市场,
推出了 Celeron(赛扬)微处理器,目前,最新型的
Celeron(赛扬 )微处理器是所谓 C4,与 P4引脚兼容。
返回第一章第一章 汇 编 语 言 基 础 知 识
36
1.4 PC微型计算机系统
1,PC 机的硬件基本配置:主机、键盘和鼠标、
显示器、软盘驱动器、硬盘驱动器和光盘驱动器等。
2,主存空间的分配
①常规内存:容量 1MB;
00000H~0FFFFFH。
* 保留内存:显示缓冲区和扩展 ROM;
*基本内存,DOS占用、用户区。
扩展内存
640K
384K保留内存基本内存常规内存第一章 汇 编 语 言 基 础 知 识
37
PC机的软件 ② 扩展内存 (XMS):对 80286以上的 CPU来说 1MB
以上的存储空间称为扩展内存,可供用户程序使用。
3,PC机的软件(学习,汇编语言,使用的软件)
①编辑程序,如 DOS的 EDIT。
②汇编程序,如 MASM 6.X。
③连接程序 LINK。
④调试程序 DEBUG。
返回第一章第一章 汇 编 语 言 基 础 知 识
38
1.5 8086微处理器
1.5.1 8086的功能结构
1.5.2 8086的寄存器组
1.5.3 存储器组织与段寄存器
1.存储器组织(位、字节、地址、字单元 … )
2.分段管理(分段、逻辑地址、物理地址 … )
3.段寄存器(段寄存器、段超越 …,)
返回第一章第一章 汇 编 语 言 基 础 知 识
39
1.5.1 8086的功能结构指令译码总线接口单元执行单元
ABUS
DBUS
CBUS
内部数据总线内部数据总线返回 1.5
第一章 汇 编 语 言 基 础 知 识
40
1.5.2 8086寄存器组寄存器是 CPU内部临时存放数据的部件。
8个通用寄存器,4个段寄存器,1个指令指针寄存器,1个标志寄存器。以上寄存器均为 16位寄存器。
1,8086通用寄存器
(1) AX—累加器。 (2) BX—基地址寄存器。
(3) CX—计数寄存器。 (4) DX—数据寄存器。
(5) SI—源变址寄存器。 (6) DI—目的变址寄存器。
(7) BP—栈基地址寄存器。 (8) SP—栈顶指针。
(9) IP——指令指针寄存器(专用寄存器)。
通用寄存器中的 4 个数据寄存器可以分成 8个 8位寄存器使用:
AX→ AH,AL BX → BH,BL
CX→ CH,CL DX → DH,DL
第一章 汇 编 语 言 基 础 知 识
41
标志寄存器2.标志寄存器标志寄存器又称作程序状态字 (Program Status
Word,简记作 PSW),共 16位,一般把每一位分别使用,8086/8088使用其中的 9位,用于存放当前程序执行的状况和运算结果的特征,各标志位的分布如图 2.3所示 。
D15 d14 d13 d12 d11 d10 d9 d8
D7 D6 D5 D4 D3 D2 D1 D0
OF DF IF TF
SF ZF AF PF CF
第一章 汇 编 语 言 基 础 知 识
42
标志寄存器 9个标志位可分为两组:状态标志 ( 条件标志 ),记载算术运算或者逻辑运算结果的特征;另一组是控制标志位,记载 CPU当前工作状态 ( 控制 CPU执行指令的方式 ),包括 TF,IF,DF等 3个标志位 。
1,状态标志 ( 条件标志 )
( 1) CF——进位标志。
( 2) ZF——零标志。
( 3) SF——符号标志。
( 4) OF——溢出标志。(设置,与 CF的区别)
( 5) PF——奇偶标志。(低 8位,偶数时为 1)
( 6) AF——辅助进位标志。
第一章 汇 编 语 言 基 础 知 识
43
控制标志位
2,控制标志位
( 1) TF——单步中断允许标志。
( 2) I F——外部可屏蔽中断允许 标志。
( 3) DF——方向标志。
返回 1.5目录第一章 汇 编 语 言 基 础 知 识
44
1.5.3 存储器组织与段寄存器
1.数据的存储格式
A F H
5 A H
3 4 H
1 2 H
5 6 H
7 8 H
0006H
0005H
0004H
0003H
0002H
0001H
0000H
地址位 (bit)、字节 (Byte)、字:字长,一个字包含的位数 … ;
8086,286,386…,的字长 ;
存储器的基本单位,地址、内容;
字、双字的存放,遵循低字节占低地址,高字节占高地址。字单元、
双字单元的地址。地址对齐字单元 [0002h]=1234h
双字单元
[0002H]=78561234H
字节单元 [0002h]=34h
内容第一章 汇 编 语 言 基 础 知 识
45
存储器的分段管理 12.存储器的分段管理
①为何分段,8086的地址总线宽度为 20位,寻址范围 220=1MB,但一个地址寄存器只有 16位,无法直接形成 20位地址,故把 1M空间分成许多“段”,用一个寄存器表示某段在 1M空间内的起始地址 (段地址 ),
用另一个寄存器表示表示段内某单元相对本段起始地址的 偏移地址 。(用两个 16位寄存器形成 20位地址)
②地址的表示方法,段 (基 )地址:偏移地址为能用 16位寄存器表示段的起始地址 (xxxxxH),
并不是任意一个单元的地址都能作段的起始地址,只有那些形式为 xxxx0H的地址才能作段的起始地址,该起始地址存入 16位寄存器时,将 0省略即可。偏移地址为 16位,可直接放入 16位寄存器。
第一章 汇 编 语 言 基 础 知 识
46
分段管理 2
③ 逻辑地址和物理地址逻辑地址:存储单元地址的表达形式。
即 段地址,偏移地址物理地址:存储单元在 1M空间内的实际地址。
④已知逻辑地址,求物理地址如 205AH,3B06H
2 0 5 A 0 H
+ 3 B 0 6 H————————
2 4 0 A 6 H
① 段地址乘以 16(也就是将保存段地址时省略的 0补回。)
②位对齐,加偏移地址物理地址第一章 汇 编 语 言 基 础 知 识
47
分段管理 3⑤ 地址的唯一性一个存储单元的物理地址是唯一的,但逻辑地址并不是唯一的,例如 4106H:400AH,42AEH,258AH,
3507H,0FFFAH…… 都表示同一个存储单元,其物理地址为 4506AH。
⑥涉及分段的其他问题
a) 1M内存空间总共可以分多少个段? xxxx0h
b)每个段最大可以包括多少个存储单元?
c) xxxxH:0000H是段内哪一个单元?其物理地址是多少?
第一章 汇 编 语 言 基 础 知 识
48
3.段寄存器
8086专门存放段地址的寄存器称为段寄存器,共有 4个,CS- 代码段段寄存器;
DS- 数据段段寄存器;
ES- 附加段段寄存器 ;
SS- 堆栈段段寄存器。
①段寄存器的作用:程序的不同部分放入相应段;
②段超越:取指令时,段地址只能是 CS;
堆栈操作时,段地址只能是 SS;
读取数据时,默认的段寄存器为 DS,
但也可以指定使用其他段寄存器。
第一章 汇 编 语 言 基 础 知 识
49
段寄存器使用规定
S S
E S
D S
D S
S S
C S
默 认段 寄 存 器有效地址 EA
D I
S I
有效地址 EA
S P
I P
偏 移 地 址
CS,ES,SS

CS,ES,SS
CS,ES,SS
无无可 超 越 的段 寄 存 器
BP作基址时串的目的操作数串的源操作数一般数据访问堆栈操作取指令访 问 存 储方 式注意:虽然有些操作允许段超越,但除了编写 COM程序,一般情况下不使用段超越,特别是堆栈段只用于堆栈操作。
段寄存器使用规定第一章 汇 编 语 言 基 础 知 识
50
③ 使用段寄存器涉及的其他问题③ 使用段寄存器涉及的其他问题按前述,可以使用的段寄存器只有 4个,且每个段最大空间为 64KB,好象限制很死,但实际使用时却很灵活:
程序可以只有一个代码段 (COM程序) 。
段与段之间可以相互独立,也可以相互重叠,
取决于各段的大小。
如果必要,一个段的实际容量可以大于 64K,
只要在程序运行时,动态修改相应段寄存器的值(程序有多个代码段或多个数据段)。
.
.
.
.
.
.
64K
64K
段寄存器指向修改段寄存器值使其指向新地址段大于 64K示意图返回 1.5
第一章 汇 编 语 言 基 础 知 识
51
1.6 8086的寻址方式
1.6.1 8086机器代码格式
1.6.2 立即数寻址方式
1.6.3 寄存器寻址方式
1.6.4 存储器寻址方式
1,寄存器间接寻址
2,寄存器相对寻址
3,基址变址寻址
4,直接寻址
5,基址变址相对寻址返回第一章第一章 汇 编 语 言 基 础 知 识
52
1.6.1 8086机器代码格式
① 指令的组成(机器指令角度):操作码 操作数(二进制代码的排列组合)(操作数:无,1,2)
②汇编指令格式:
操作码助记符 目的操作数,源操作数;注释操作码助记符:每条指令必有。
操作数:指令操作的对象或操作对象的地址。
MOV AX,2050H
MOV AX,[2050H]
(详细的机器指令格式省略)
返回 1.6
第一章 汇 编 语 言 基 础 知 识
53
1.6.2 立即数寻址方式寻址方式:寻找操作数地址的方式,即寻找操作数,而后完成指令。
这种寻址方式直接把参与操作的数据写在指令中,
是指令的一部分,该数据称为立即数。计算机寻找操作数时,只要读取指令的操作数字节;操作数可以是各种数制下的数值(相当于 8位或 16位二进制数),
也可以是带单引号的字符 。
例如,MOV AX,2050H
MOV AL,05H
MOV AL,‘ A’ B8H50H
20H
操作码立即数第一章 汇 编 语 言 基 础 知 识
54
指令举例观察指令:
MOV 05H,AL
MOV BL,324D
MOV CH,2050H
MOV DL,‘ 25’
注意,1,立即数永远不能作目的操作数。
2,源操作数和目的操作数要互相匹配。
返回 1.6目录第一章 汇 编 语 言 基 础 知 识
55
1.6.3 寄存器寻址执行速度最快的寻址方式。
MOV AX,BX
MOV S P,AX
MOV D I,2050H
MOV D L,CH
错误指令:
MOV A L,BX
MOV S P,CH
返回 1.6目录第一章 汇 编 语 言 基 础 知 识
56
1.6.4 存储器寻址方式程序运行时用到的数据决大部分存放在内存中,
如何寻找内存中的数据就是存储器寻址方式。共 5种。
1,直接寻址这种寻址方式是在指令中直接规定操作数所在单元的偏移地址。(在汇编语言中,这个偏移地址通常以变量的形式出现,在指令中就直接写变量的名字。)
MOV AX,[2050H] ; AX←[DS × 16+ 2050H]
MOV DX,ES,[2050H] ;使用段超越; DX←[ES × 16+ 2050H]
段超越指令格式区别 MOV AX,2050H
第一章 汇 编 语 言 基 础 知 识
57
直接寻址方式示意图 ( MOV AX,[2050H] )
1492HDS
14920H
+ 2050H────
16970H
20H
50H
A1H
.
.
.
AAH
55H
代码段数据段操 作 码偏移地址
16970H
AH AL
× 16
执 行 结 果
AX=55AAH
第一章 汇 编 语 言 基 础 知 识
58
2,寄存器间接寻址偏移地址(或有效地址)通过寄存器间接给出,
可用的寄存器为 BX,BP,SI,DI。
MOV AX,[BX]; AX←[DS × 16+ BX]
MOV AL,[BX]; AL←[DS × 16+ BX]
MOV AX,[SI]; SI←[DS × 16+ SI]
MOV AX,[DI]; AX←[DS × 16+ DI]
MOV AX,[BP]; AX←[ SS× 16+ BP]
MOV AX,ES,[BX]; AX←[ES × 16+ BX]
MOV AX,DS,[BP]; AX←[DS × 16+ BP]
字 操 作字节操作段寄存器使用 SS
段超越第一章 汇 编 语 言 基 础 知 识
59
3,寄存器相对寻址指令规定一个寄存器和一个有符号的 8位或 16位偏移量,有效地址等于 寄存器内容加偏移量 。可用的寄存器仍然是 BX,BP,SI,DI。计算物理地址时,当指令规定的寄存器是 BP时,默认的段寄存器用 SS,其他三个寄存器用 DS;可以段超越。
MOV AX,[DI+06H]; AX←[DS × 16+ DI+ 06]
MOV AX,06H[DI] ; 同上
MOV CL,[BP+0205H]; CL←[SS × 16+ BP+ 205H]
MOV DX,205H[BP];同上,但是是字操作。
第一章 汇 编 语 言 基 础 知 识
60
4,基址变址寻址用一个基址寄存器与一个变址寄存器的值相加,
计算结果作为操作数的偏移地址。基址寄存器与变址寄存器的搭配如下,BX SI
BP DI
MOV AX,[BX+SI]; AX←[DS*16+BX+SI]
MOV AX,[BP+DI]; AX←[SS*16+BP+DI]
MOV AX,[BP][DI];另一种写法。
注意:①允许段超越。
② [BX+BP]或 [SI+DI]是非法搭配。
第一章 汇 编 语 言 基 础 知 识
61
5.基址变址相对寻址在基址变址寻址方式基础上,增加一个 8位或 16
位偏移量,三者之和为偏移地址。
MOV AX,[BX+SI+06]; AX←[DS × 16+BX+SI+06]
MOV AX,2050H[BP+SI]; AX←[SS*16+ ……… ]
备注:
① 在直接寻址中,地址可以用符号代替,如,MOV AX,WORD_ADDR”,相当于,MOV AX,[xxxxH]”,
“WORD_ADDR”称为变量或符号地址,第三章介绍。
②偏移量可以是变量或符号数,也在第三章介绍。
③如果一条指令有两个操作数,源操作数和目的操作数的寻址方式可能相同,也可能不同,如指令
,MOV AX,[BX]”,源操作数为寄存器间接寻址,目的操作数为寄存器寻址。
第一章 汇 编 语 言 基 础 知 识
62
讲解指令系统时使用的符号
r8,8位通用寄存器 AH/AL/BH/BL/CH/CL/DH/DL
r16:16位通用寄存器 AX/BX/CX/DX/SI/DI/BP/SP
reg:代表 r8 或 r16
seg:段寄存器 CS/DS/ES/SS
m8:存储器中的一个 8位操作数(含 5种寻址方式)
m16:存储器中的一个 16位操作数(含 5种寻址方式)
mem:代表 m8 或 m16
imm:8位或 16位立即数
dest:目的操作数 src:源操作数
disp:代表 8位或 16位偏移量第一章 汇 编 语 言 基 础 知 识
63
mem操作数的各种形式
① [2050H];VAR_ADDR
② [BX];[BP];[si];[di]
③ [BX+disp];[BP+disp];[si+disp];[di+disp]
disp[BX]; disp[BP]; disp[SI]; disp[DI]
④ [BX+SI];[BX+DI];[BP+SI];[BP+DI]
[BX][SI];[BX][DI];……
⑤ [BX+SI+disp];[BX+DI+disp];
[BP+SI+disp];[BP+DI+disp];
其他写法
disp[bx+si]
disp[bx][si]
第一章 汇 编 语 言 基 础 知 识
64
要点及习题分析:㈠本章要点
1.数制:二进制数、十六进制数及其相互转换。
2.有符号数的表示方法:原码、反码、补码。
3.8086寄存器组:通用寄存器、专用寄存器、状态标志的设置及含义。
4.存储器管理:分段、逻辑地址和物理地址、段寄存器、段超越。
5.8086寻址方式,7种方式特别是对存储器操作数的 5
种寻址方式,也就是寻址 mem数的各种表达形式。
返回第一章第一章 汇 编 语 言 基 础 知 识
65
㈡ 习题分析
1.5 将下列十六进制数转换为二进制数和十进制数。
① 0FFH ④ 0EFH ⑥ 10H ⑧ 0ABH
1.6 将下列十进制数转换为 BCD码。
② 24 ④ 68 ⑥ 255 ⑧ 2458
1.7 将下列 BCD码转换为十进制数。
① 10010001③ 00110110⑤ 00001000⑦ 10000001
1.8 将下列十进制数分别用 8位二进制数的原码、反码和补码表示。
② -127 ④ -57 ⑥ -128 ⑧ 68
第一章 汇 编 语 言 基 础 知 识
66
1.10 写出 0—9,A—Z,a—z以及回车和换行的 ASCII码。
1.11 计算机中有一个,01100001”编码,如果把它认为是无符号数,它是十进制何数?认为它是 BCD码,是十进制何数? 认为它是 ASCII码,表示什么字符?
1.15 罗列 8086的 8个 8位寄存器和 16位寄存器,并说明各自的作用。
1.16 状态标志和控制标志有何区别?
1.17 举例说明 CF和 OF的区别。
1.18 什么是,小端方式,?对字和双字存储单元,
什么是它们的对齐地址?为什么要对齐地址?
1.19 将下列逻辑地址转换成物理地址。
① 0FFFF,0 ④ 0B821,4567
补充题:设物理地址为 96FF8H,偏移地址任意,则段地址可取,① 8600H ② 8800H ③ 900H ④ 96FFH⑤ 9700H
第一章 汇 编 语 言 基 础 知 识
67
1.20 8086有哪 4种逻辑段?各段用途?
1.21 数据的默认段是哪个段?是否允许其他段存放数据?如果允许,有何要求?
1.22 什么是操作码、操作数?有哪三种给出操作数的方法?什么是寻址方式?
1.23 何谓有效地址 EA?操作数如在主存中,有哪些寻址方式可以存取它?
1.24 指出下列指令中源操作数的寻址方式,设
BX=2000H,DI=40H,给出 DX的值或有效地址 EA的值。
① mov dx,[1234h] ② mov dx,1234h ③ mov dx,bx
④ mov dx,[bx] ⑤ mov dx,[bx+1234h]
⑥ mov dx,[bx+di] ⑦ mov dx,[bx+di+1234h]
返回第一章