汇编语言学习笔记(1)——微机基础
1、常用数制
- 十进制数
- 在汇编语言编程中,十进制数直接表示
- 一般书写形式:( )D 或 ( )10
- 二进制数
- 计算机内部信息存储运算,输入/输出都是利用的二进制数
- 在汇编语言编程中,二进制数XXX用XXXB来表示
- 一般书写形式:( )B 或 ( )2
- 十六进制数
- 一般当二进制数很长时,改用等值的十六进制来表示
- 范围(0~F)
- 在汇编语言编程中,十六进制数XXX用XXXH来表示
- 一般书写形式:( )H 或 ( )16
2、BCD码
- 计算机中采用二进制,但二进制书写、阅读不便,所以在输入输出时人们仍习惯使用十进制;
- 采用二进制数对每一位十进制数字进行编码来 表示一个十进制数,这种数叫做BCD码;
- BCD码有多种形式,最常用的是8421BCD码, 它是用4位二进制数对十进制数的每一位进行编码,这4位二进制码的值就是被编码的一位十进制数的值;
十进制数 | 8421BCD | 5421BCD | 2421BCD | 余3BCD | 格雷码 |
0 | 0000 | 0000 | 0000 | 0011 | 0000 |
1 | 0001 | 0001 | 0001 | 0100 | 0001 |
2 | 0010 | 0010 | 0010 | 0101 | 0011 |
3 | 0011 | 0011 | 0011 | 0110 | 0010 |
4 | 0100 | 0100 | 0100 | 0111 | 0110 |
5 | 0101 | 1000 | 1011 | 1000 | 0111 |
6 | 0110 | 1001 | 1100 | 1001 | 0101 |
7 | 0111 | 1010 | 1101 | 1010 | 0100 |
8 | 1000 | 1011 | 1110 | 1011 | 1100 |
9 | 1001 | 1100 | 1111 | 1100 | 1000 |
3、数制转换
- 二、八、十六进制->十进制
- 每位的数值和该位的权值相乘,再累加
- 二进制->十六进制
- 四位二进制数为一组,每组用等值的十六进制代换
- 十六进制->二进制
- 一位十六进制数用等值的四位二进制数代换
- 十进制->二进制
- 整数:除2取整,直到商为零为止,倒排
- 小数:乘2取整,直到乘积的小数部分为0时止,顺排
4、非数值型信息编码方法
- ASCII码
- 在计算机中除了数值之外,还有一类非常重要的数据,那就是字符,计算机常用的输入/输出设备有 键盘、显示器、打印机,它们处理的数都是人熟悉 的字符,有英文的大小写字母,数字符号(0,1,…, 9)以及其他常用符号(如:%、+等)。
- 在计算机中,这些符号都是用二进制编码的形式表示,每一个字符被赋予一个惟一固定的二进制编码。 目 前,一 般都是采用美国标准信息交换码(ASCII),它使用七位二进制编码来表示一个符号。由于用七位码来表示一个符号,故该编码方案中共有128个符号。
- 计算机常用的输入/输出设备有键盘、显示器、打印机。 数字、字母、符号的输入/输出均采用标准 ASCII码
5、数值型信息编码方法(码制)
- 真值:指在一定的时间及空间(位置或状态)条件下,被测量所体现的真实数值。
- 机械数:把二进制数的最高位定义为符号位,其余位为数值位。符号位为0表示正数,符号位1表示负数。 符号位和数值位在一起表示一个数,称为机器数。
- 机械数的3种表示方式
- 原码:原码表示的有符号数,最高位为符号位,数值位部分就是该数的绝对值
- 反码:反码表示的有符号数,也是把最高位规定为符号位,但数值部分对于正数是其绝对值,而对于负数则是其绝对值按位取反(即1变0,0变1)
- 补码:补码表示的有符号数,对于正数来说同原码、反码一样,但负数的数值位部分为其绝对值按位取反后末位加1所得。
- 机器数比真值数多一个符号位
- 没有负零的补码,或者说负零的补码 与正零的补码相同
- 由于补码表示的机器数更适合运算,为此, 计算机系统中负数一律用补码表示
- 机器数的数值范围
- 设机器数字长=n位,用来表示整数
- 则n位原码数,其真值范围为 -(2n-1 -1) ~ +(2n-1-1)
- 则n位反码数,其真值范围为 -(2n-1 -1) ~ +(2n-1-1)
- 则n位补码数,其真值范围为 -2n-1 ~ +(2n-1 -1)
- 则n位无符号数,其真值范围为 0 ~ +(2n -1)
- 整数补码计算
- 模:一个计量器的最大容量称为该计量器的“模”,例如四位计数器能存0000~1111共十六个数,所以模 = 24
- 整数补码加减计算:
- 条件:(1) 符号位参加运算;(2) 以2n为模(n为字长);(3)-2n-1 ≤ x, y, x+y ,x-y < +2n-1
- 公式:(x + y)补 = (x)补 +(y)补
6、溢出与进位
- 进位:运算后,最高位向更高位的进位值
- 溢出:运算结果超出了运算器所能表示的范围
- 计算机表示进位和溢出:
-
- 运算器一律把操作数看成是有符号数
- 最高位的进位值保存在“进位标志寄存器” 中,有进位则进位标志为1 (CF = 1 )
- 加数、被加数的最高位相同,且和结果的最 高位相异,则溢出标志为1(OF = 1)
- 溢出的判断
- 如果参与运算的数是无符号数,则判进位标志, 进位标志=1,表示溢出
- 如果参与运算的数是有符号数,则判溢出标志, 溢出标志=1,表示溢出
7、计算机基本组成
- 硬件和软件
- 微机硬件结构:
-
- 以CPU为核心通过3条总线连接存储器、I/O接口
- 总线:总线是CPU与存储器、I/O接口交换信息 的公共通道
- I/O接口: CPU与外设的接口电路
- 总线的划分:
- 地址总线:传输CPU访问存储器, 访问I/O端口的地址信号,通常是单向总线
- 数据总线:传输CPU读/写内存, 读写I/O端口时的数据,通常是双向总线
- 控制总线:CPU发出的控制命令, 或外部向CPU提出的请求,大部分是单向总线,少数是双向
- 术语:
- 读:即输入,信息从外部→CPU
- 写:即输出,信息从CPU→外部
- 读内存:从存储器某单元取信息→CPU
- 写内存:信息写入存储器某单元
- 计算机工作过程
- 程序由多条有逻辑关系的指令组成,指令的长度不等(一般为1~4字节),指令是程序员发出的,计算机能识别的,通知CPU执行某种操作的命令
- 计算机的工作就是逐条执行由指令构成的程序
- 程序和数据均以二进制代码的形式不加区别地存放在存储器中,存放位置由地址指定,地址码也是二进制形式
- 计算机按程序的流程自动地连续取出 指令并执行之
- 为实现自动连续地执行程序,控制器设置一程序计数器PC,它可根据指令的长度自动增量(总是指向下一条指令)。只要给出程序中第一条指令的地址,控制器就可依据存储程序中的指令顺序周而复始地取指令、译码、 执行,直到完成全部指令操作为止, 即控制器通过指令流的串行驱动实现程序控制