目录
第一章 基础知识................................................................................................................................... 4
1.1 机器语言....................................................................................................................................4
1.2 汇编语言的产生........................................................................................................................4
1.3 汇编指令的组成.......................................................................................................................5
1.4 存储器........................................................................................................................................5
1.5 指令和数据................................................................................................................................5
1.6 存储单元....................................................................................................................................5
1.7 cpu 对存储器的读写.................................................................................................................6
1.8 地址总线....................................................................................................................................7
1.9 数据总线....................................................................................................................................8
1.10 控制总线................................................................................................................................10
1.11 内存地址空间........................................................................................................................11
1.12 主板........................................................................................................................................11
1.14 接口卡....................................................................................................................................11
1.14 各类存储器芯片....................................................................................................................12
1.15 内存地址空间........................................................................................................................14
第二章 寄存器..................................................................................................................................... 16
2.1 通用寄存器..............................................................................................................................17
2.2 字在寄存器中的存储..............................................................................................................18
2.3 几条汇编指令..........................................................................................................................19
2.4 物理地址..................................................................................................................................19
2.5 16 位结构的 cpu......................................................................................................................20
2.6 8086cpu 给出物理地址的方法...............................................................................................20
2.7“段地址*16+偏移地址=物理地址”的本质含义................................................................21
2.8d 段的概念................................................................................................................................22
2.9 段寄存器.................................................................................................................................23
2.10 CS 和 IP................................................................................................................................. 23
2.11 修改 CS、IP 指令................................................................................................................. 24
2.12 代码段....................................................................................................................................25
第三章 寄存器(内存访问)............................................................................................................... 25
3.1 内存中字的存储......................................................................................................................25
3.2DS 和 [address] .......................................................................................................................26
3.3 字的传送..................................................................................................................................27
3.4mov、add、sub........................................................................................................................ 27
1. mov 指令形式(2 个操作对象)...................................................................................27
2.add、sub 和 mov 指令类似。......................................................................................... 28
3.5 数据段......................................................................................................................................28
3.6 栈..............................................................................................................................................28
3.7cpu 提供的栈机制....................................................................................................................29
3.8 栈顶超界的问题......................................................................................................................31
3.9push、pop 指令........................................................................................................................33
3.10 栈段........................................................................................................................................34
第四章 第一个程序............................................................................................................................... 34
4.1 汇编程序从写出到执行的过程..............................................................................................34
4.2 源程序.....................................................................................................................................35
4.3 编辑源程序..............................................................................................................................37
4.4 编译..........................................................................................................................................37
4.5 连接..........................................................................................................................................37
4.6 以简化的方式进行编译和连接..............................................................................................38
4.7 1.exe 的执行............................................................................................................................38
4.8 谁将可执行文件中的程序装载进入内存并使用它允许 ......................................................38
4.9 程序执行过程跟踪..................................................................................................................38
第五章 [bx] 和 loop 指令.................................................................................................................... 40
1. 完整的描述数据单元需要的信息:.......................................................................................40
2. 约定()表示一个寄存器或者一个内存单元的内容。()中的元素可以有 3 种类型:40
3. 约定符号 idata 表示常量.........................................................................................................41
5.1[BX].......................................................................................................................................... 41
5.2loop 指令.................................................................................................................................. 41
5.3 在 debug 中跟踪用 loop 指令实现的循环方式.....................................................................42
5.4debug 和汇编编译器 masm 对指令的不同处理.................................................................... 42
5.5loop 和 [bx] 的联合应用.......................................................................................................42
5.6 段前缀......................................................................................................................................44
5.7 一段安全的空间......................................................................................................................44
5.8 段前缀的使用..........................................................................................................................44
第六章 包含多个段的程序................................................................................................................... 45
6.1 在代码段中使用数据..............................................................................................................45
6.2 在代码段中使用栈..................................................................................................................46
6.3 将数据、代码、栈放入不同的段..........................................................................................48
第七章 更灵活的定位内存地址的方法............................................................................................... 49
7.1and 和 or................................................................................................................................. 49
1.and 指令:逻辑与指令,按位进行与运算。 ................................................................ 49
2.or 指令:逻辑或指令,按位进行或运算。 ...................................................................49
7.2 关于 ASCII 码......................................................................................................................... 49
7.3 以字符形式给出的数据..........................................................................................................50
7.4 大小写转换的问题..................................................................................................................51
7.5[bx+idata]..................................................................................................................................52
7.6 用[bx+idata]的方式进行数组的处理.....................................................................................52
7.7SI 和 DI....................................................................................................................................53
7.8[bx + si] 和 [bx + di]...............................................................................................................54
7.9[bx+si+idata]和[bx+di+idata]...................................................................................................54
7.10 不同的寻址方式的灵活应用................................................................................................55
1.定位内存方法...................................................................................................................55
2.将 datasg 段中每个单词改为大写字母...........................................................................55
第八章 数据处理的两个基本问题....................................................................................................... 57
8.1 bx、si、di 和 bp......................................................................................................................57
8.3 机器指令处理的数据在什么地方..........................................................................................57
8.3 汇编语言中数据位置的表达..................................................................................................58
i = 0;.........................................................................................................................................................62
八、转移指令的原理............................................................................................................................. 64
1、操作符 offset........................................................................................................................... 65
2、jmp 指令.................................................................................................................................. 65
1、依据位移进行转移的 jmp 指令....................................................................................66
2、转移的目的地址在指令中的 jmp 指令........................................................................67
3、转移地址在寄存器或内存中的 jmp 指令....................................................................67
4、jcxz 指令和 loop 指令................................................................................................... 68
九、call 和 ret 指令................................................................................................................................ 69
1、ret 和 retf................................................................................................................................69
2、call 指令..................................................................................................................................71
(1)将当前的 IP 或 CS 和 IP 压入栈中;..................................................................71
(2)转移(jmp)。..........................................................................................................71
3、call 和 ret 的配合使用..........................................................................................................72
十、标志寄存器..................................................................................................................................... 76
1、标志寄存器..............................................................................................................................76
2、adc 指令和 sbb 指令............................................................................................................... 81
3、cmp 指令..................................................................................................................................83
4、检测比较结果的条件转移指令..............................................................................................85
5、DF 标志和串传送指令........................................................................................................... 87
6、pushf 和 popf........................................................................................................................... 88
十一、内中断......................................................................................................................................... 88
1、内中断的产生..........................................................................................................................88
2、中断处理程序、中断向量表、中断过程..............................................................................90
3、iret 指令................................................................................................................................... 91
4、除法错误中断的处理..............................................................................................................92
5、单步中断..................................................................................................................................95
6、int 指令.................................................................................................................................... 96
7、BIOS 和 DOS 所提供的中断例程....................................................................................... 100
十二、端口........................................................................................................................................... 104
1、端口的读写............................................................................................................................105
2、CMOS RAM 芯片 ................................................................................................................. 105
3、shl 和 shr 指令.......................................................................................................................107
十三、外中断....................................................................................................................................... 108
1、外中断....................................................................................................................................108
1、可屏蔽中断..................................................................................................................109
2、不可屏蔽中断..............................................................................................................110
2、PC 机键盘的处理过程 ..........................................................................................................110
十四、直接定址表............................................................................................................................... 118
十五、 指令系统总结......................................................................................................................... 125
第一章 基础知识
1.1 机器语言
1.机器语言:机器指令的集合。
2.机器指令:CPU 能直接识别并执行的二进制编码
举例:
(1)把寄存器 BX 的内容存放到 AX 中,机器指令:1000100111011000
3.机器指令特点:
(1)机器码晦涩难懂,难于辨别和记忆
(2)不易查错
1.2 汇编语言的产生
1. 汇编指令:汇编指令是机器指令的助记符,是机器指令的一种格式,同
机器指令一一对应。
举例:
(2)把寄存器 BX 的内容存放到 AX 中,汇编指令:MOV AX,BX
2. 寄存器:cpu 中可以存储数据的器件。
3. 汇编指令到机器指令的过程
图 1-1 用汇编语言编写程序的工作过程
编译器:够将汇编指令转换成机器指令的翻译程序。
1.3 汇编指令的组成
1.汇编语言由 3 类指令组成:
(1)汇编指令:机器码的助记符,有对应的机器指令,是汇编语言的核心,
决定了汇编语言的特性。
(2)伪指令:没有对应的机器码,由编译器执行,计算机并不执行
(3)其他符号:如+、-、*、/等,由编译器识别,没有对应的机器码。
1.4 存储器
1. 存储器:内存,存放指令和数据的地方,磁盘中的数据必须读到内存中
才可以被 cpu 利用。Cpu——大脑,存储器——记忆。
1.5 指令和数据
1.指令:指令通常由操作码和地址码(操作数)两部分组成。
2.指令集:指令的集合,每种 CPU 都有自己的汇编指令集
3.在内存或磁盘上,指令和数据没有任何区别,都是二进制信息,cpu 需要
根据实际情况为为同样的信息赋予不同的意义。
举例:
(1)内存中的一串二进制:1000100111011000,计算机可以把他作为数据
来处理,也可以当做指令来处理。
1000100111011000——>89D8H(数据)
1000100111011000——>mov ax,bx 指令)
1.6 存储单元
1. 存储单元:存储器中的组成部分,按顺序从 0 进行编号,1 个存储单元
可以存储 1 个 Byte 的数据。
2. 单位换算
1KB=1024B
1B=8b
B:Byte(字节) b:bit(二进制位)
1MB=1024KB
1GB=1024MB 1TB=2014GB
1.7 cpu 对存储器的读写
1.总线:连接各个部件的信息传输线,是各个部件共享的传输介质,物理上
讲就是一根根导线的集合,逻辑上根据传送信息的不同分为地址总线、控制总线、
数据总线。
2.总线分类
(1)根据位置分类:片内总线、系统总线
片内总线:芯片内部总线
系统总线:计算机各部件之间的信息传输线
(2)根据传送信息的不同分类:地址总线、控制总线、数据总线。
地址总线:CPU 通过地址总线来指定存储单元。
数据总线:CPU 与内存或其他器件之间的数据传送是通过数据总线来进行的
控制总线:CPU 对外部器件的控制是通过控制总线来进行的。
3.cpu 读写操作,必须与存储器芯片进行 3 类信息交互:
(1)地址信息:存储单元地址
(2)控制信息:器件的选择,读或写的命令
(3)数据信息:读或写的数据
4.Cpu 从 3 号单元读取数据的过程如下:
图 1-2 cpu 从内存读取数据的过程
(1)cpu 通过地址先将地址信息 3 发出;
(2)Cpu 通过控制总线发出内存度命令,选中存储器芯片,并通知他,将
要从中读取数据;
(3)存储器将 3 号单元的数据 8 通过数据线送入 cpu。
5.Cpu 向存储单元写数据的过程与上述一致。
6.命令计算机进行数据读写——机器码(输入驱动计算机工作的电平信息)
举例:
(1)从 3 号单元读数据
机器码:101000010000001100000000
汇编指令:mov AX,[3]
含义:从 3 号单元读取数据送入寄存器 AX
CPU 接受这条机器码后完成上述的读写工作。
1.8 地址总线
1.cpu 是通过地址总线来指定存储单元的,地址总线上能传送多少个不同的
信息,cpu 就可以对多少个存储单元进行寻址。
(1)1 根导线可以传送的稳定状态只有两种,高电平或是低电平。用二进
制表示就是 1 或 0.
(2)图示有 10 根地址线即一次可以传输 10 位,可以传送 210个不同的信息,
范围为 0-1023。当一个具有 10 根地址总线的 cpu 向内存发出地址信息是 11 时
10 根地址线由高到低位分别传送的二进制是 0000001011。
(3)一个 cpu 有 N 根地址线,则可以说这个 CPU 的地址总线的宽度为 N,
cpu 最多寻找 2n 个内存单元。
1.9 数据总线
1. cpu 与内存或者其他器件之间传送数据是通过数据总线来进行的,数据