目 录
一、基础知识
1.1 汇编语言简介
1.1.1 机器语言与汇编语言
-
机器语言:
机器语言就是使用二进制编码组成的机器指令的集合和一组使用机器指令的规则。
-
汇编语言:
汇编语言是对机器指令中的操作码用英文单词的缩写描述(助记符),对操作数用标号、变量、常量描述。(助记符的语言)
-
机器指令:cpu能直接识别并遵照执行的指令,用二进制编码表示,由操作码,操作数组成,编码只含二进制0或1
-
汇编程序与汇编源程序的区别
-
汇编源程序:是用汇编语言编写的程序。
-
汇编程序:特指将汇编源程序翻译成机器语言程序的语言加工程序称为汇编程序
-
汇编:将汇编语言源程序翻译成机器语言程序的过程
-
1.1.2 汇编语言的组成
汇编语言有以下三类指令组成:
-
汇编指令:机器码的助记符,有对应的机器码。它是汇编语言的核心。
-
伪指令:没有对应的机器码,由编译器执行,计算机并不执行。
-
其他符号:如+、-、*、/等,由编译器识别,没有对应的机器码。
1.1.3 汇编语言的特点
-
汇编语言预处理器密切相关,移植性差,但可以直接控制硬件
-
程序效率高
-
受指令的限制,编写汇编语言源程序徐比编写高级语言源程序烦琐
-
调试困难
1.2 计算机中数据的表示
1.2.1 不同进位计数制与及其相互转换
-
进位计数制
-
二进制:b
-
八进制:O
十进制:D/缺省
十六进制:H
-
-
相互转换
例如: 13 .8125 D = 1101.1101B = D.DH
1.2.2 二进制数和十六进制数的运算
-
降幂法
-
除法——》辗转相除法
1.二进制与十进制
-
二进制转十进制
-
十进制转二进制
-
降幂法
-
除法
-
-
对于十进制数的小数部分除了可以使用降幂法也可采用乘法,即不断乘2,并计下整数,而小数部分再乘2,直到结果为0为止。
2.二进制与八进制
-
二进制转八进制:
-
各位二进制数码乘以对应的权之和
-
每三位二进制转为一位八进制数
-
-
八进制转二进制:
-
除法
-
降幂法
-
把每位八进制转为三位二进制数
-
3.二进制与16进制
1.2.3 带符号数的表示
-
带符号数最高位是符号位。
-
正数的符号位为0,负数的符号位为1。
-
表示方法:原码、补码、反码。
-
数的补码——》正数不变,负数则用绝对值取反+1
1.2.4 补码的加法和减法
1.2.5 无符号数的表示
对于正数,不保留符号位,把符号位也作为数值,这样的数叫无符号数。
1.2.6 字符的表示
回车:0dh
换行:0ah
空格:20h
0~9: 30h~ 39h
A~Z: 41h~ 5ah
a~z : 61h~7ah
1.2.7 基本逻辑运算
逻辑运算按位操作
与运算 AND
或运算 OR
异或运算 XOR
非运算 NOT
第2章 计算机基本原理
第二章 计算机基本原理
2.1 计算机系统组成
-
计算机的基本工作原理是存储程序和程序控制
-
冯诺依曼原理的计算机结构
1、存储器用来存放数据和程序; 2、运算器主要运行算数运算和逻辑运算,并将中间结果暂存到运算器中; 3、控制器主要用来控制和指挥程序和数据的输入运行,以及处理运算结果; 4、输入设备用来将人们熟悉的信息形式转换为机器能够识别的信息形式,常见的有键盘,鼠标等; 5、输出设备可以将机器运算结果转换为人们熟悉的信息形式,如打印机输出,显示器输出等。
CPU读取数据时首先从内存中去读,如果内存中没有,再去辅助存储器(比如硬盘)读,把硬盘的读入到内存,然后才会被CPU读取到。 CPU运算后的结果,先存入内存,然后再存入硬盘。 保存数据是将内存的数据写入硬盘,只要硬盘不坏,数据就一直在硬盘里。
2.2 存储器
2.2.1 16位结构的CPU
2.2.2 存储器
1.基本存储单元:
存储器存储指令和数据(内存),每个存储器划分为若干个存储单元,每个存储单元从0开始顺序编号
-
bit:计算机存储信息的最小单位
-
Byte:8位二进制数,1 Byte = 8 bit
-
Word:两个字节(16位组成一个字),1 W=2 Byte
-
DW:双字,4个字节(16位组成一个字)1, DW=4Byte
2.内存中字的存储
-
字与字节的对应关系
从31200H单元开始存放的字数据为A28FH,从31202H单元开始存放的字数据为1234H,分别记为:(31200H)字=A28FH(31202H)字=1234H:
2.2.3 存储器分段
1.分段的概念
-
内存并没有分段,段地址的划分来自CPU,分段只是CPU管理内存的方式。
-
8086使用两个16位的地址合成一个20位的地址。
-
段地址×16==》:一个段的起始地址是16的倍数
-
偏移地址(16位):寻址能力为64K,一个段的长度最大为64K
-
2.段的类型
1).代码段—用于存放指令,代码段段基址存放在段寄存器CS
2).数据段—用于存放数据,数据段段基址段地址存放在段寄存器DS
3).附加段—用于辅助存放数据,附加段段基址存放在段寄存器ES
4).堆栈段—是重要的数据结构,可用来保存数据、地址和系统参数,堆栈段段基址存放在段寄存器SS
2.2.4 逻辑地址
-
逻辑地址=段地址+偏移地址——》段地址:偏移地址
例:段基址为1896H,偏移地址为1655H。其物理地址为多少? 18960H+1655H=19FB5H
(1)代码段有64KB,它的地址范围在210E0H~310DFH,已经达到段的最大范围。 (2)附加段只有2KB,地址范围在34500H~34CFFH之间。 (3)数据段为16KB,其地址范围为34D00H~38CFFH。可知数据段紧接着附加段的最后单元存放,而不必在附加段的64KB最大区域之外设置其他段。此方式也称为段重叠,可充分利用现有的存储空间。 (4)堆栈段的空间最小,只有512个字节单元,它的地址范围是
2.2.5 CPU对内存的读写操作
CPU要想进行数据的读写,必须和外部器件(芯片)进行下面3类的信息交互。
(1)存储单元的地址(地址信息)
(2)器件的选择,读或写命令(控制信息)
(3)读或写的数据(数据信息)
-
CPU从地址为3的内存单元中读取数据的过程
(1)CPU通过地址线将要进行操作的内存单元地址“3”发出; (2)CPU通过控制线发出内存读命令,选中存储器芯片,并通知它,将要从中读取数据 (3)存储器将内存单元地址为“3”中的数据“32H”通过数据线送入CPU
-
写操作与读操作的步骤相似,如向地址为“3”的单元写入数据“FFH”。
(1)CPU通过地址线将要进行操作的内存单元地址“3”发出; (2)CPU通过控制线发出内存写命令,选中存储器芯片,并通知它,要向其中写入数据。 (3)CPU通过数据线将数据“FFH”送入内存的地址为“3”的单元中。
2.3 中央处理器(CPU)中的寄存器
2.3.1 寄存器介绍
-
8086CPU中有14个寄存器:AX、BX、CX、DX、SI、DI、SP、BP、IP、SS、CS、DS、ES、PSW
1.通用寄存器
-
AX 、BX、CX、DX
2. 地址寄存器
-
SP、BP、SI、DI
3. 段寄存器
4. 指令指针寄存器
-
IP:指令指针寄存器,存放即将执行指令的偏移地址。
5. 指令指针寄存器
2.3.2 CS和IP
-
CS和IP的内容提供了CPU要执行指令的地址。
8086 CPU的工作过程可以简要描述如下。
(1)从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器;
(2)IP=IP+所读取指令的长度,从而指向下一条指令;
(3)执行指令,转到步骤(1),重复这个过程。
2.3.3 堆栈
堆栈区是一个特殊的存储区,末单元称为栈底,数据先从栈底开始存放,最后存入的数据所在单元称为栈顶。当堆栈区为空时,栈顶和栈底是重合的。数据在堆栈区存放时,必须以字存入,每次存入一个字,后存入的数据依次放入栈的低地址单元中。栈指针SP每次减2,由栈指针SP指出当前栈顶的位置,数据存取时采用后进先出的方式
2.4 外部设备和接口
外部设备是计算机系统的不可缺少的重要组成部分。通过输入设备把程序和数据输入计算机主机(CPU和内存),通过输出设备把结果输出给用户或保存起来。
根据不同用途,接口中的寄存器(端口)分为以下3类。
(1)数据端口
(2)控制端口
(3)状态端口
CPU与I/O接口中端口的信息传输也都是通过数据总线进行的。
2.5 32位80x86 CPU的工作模式
实模式:DOS
保护模式:32位时代,Windows
虚拟8086模式:Windows下16应用程序窗口。