☆汇编语言的一般概念
计算机程序设计语言可分为机器语言、高级语言和汇编语言三类。
☆机器语言
机器语言就是把控制计算机的命令和各种数 据直接用二进制数码表示的一种程序设计语言。
优点:机器语言最直接地表示了计算机内部的基 本操作,用它编制的程序在计算机中运行的效率 最高。即运行速度最快,程序长度最短。
缺点:用二进制数表示的内容既不便于记忆又难 于阅读。
☆高级语言
高级语言将计算机内部的操作细节屏蔽起 来,用户不需要知道计算机内部数据的传送和 处理的细节,使用类似于自然语言的一些语句 来编制程序,完成指定的任务。
特点:程序设计简单,但程序效率较机器语言低。
☆汇编语言
☆定义
为了便于记忆和阅读,使用字母和符号来 表示机器语言的命令,用十进制数或十六进制 数来表示数据,这样的计算机程序设计语言就 称为汇编语言。
☆汇编语言程序与机器语言程序的关系
一条汇编语言的语句与一条机器语言指令对应, 汇编语言程序与机器语言程序效率相同。
☆不同类型计算机有不同的机器指令系统和汇编语言描述
对一台计算机来说,机器语言的执行主要取 决于该计算机的中央处理器CPU。因此熟悉计算 机内部结构主要是指CPU的功能结构。它包括:
CPU中有多少个寄存器及其作用? CPU是如何访问存储器? 输入输出操作的方式有哪些?
☆学习和使用汇编语言的目的
1. 学习和使用汇编语言可以从根本上认识、理解 计算机的工作过程。
通过用汇编语言编制程序可以更清楚地了解计 算机是如何完成各种复杂的工作。在此基础上, 程序设计人员能更充分地利用机器硬件的全部功 能,发挥机器的长处。
2. 在计算机系统中,某些功能必须用汇编语言程序 来实现。
如:机器自检、系统初始化、实际的输入输出设备的 操作等。
3. 汇编语言程序的效率高于高级语言程序
“效率”有两个方面的含义:程序的目标代码长 度和运行的速度。
在某些要求节省内存空间和提高程序运行速度的 应用场合,如实时过程控制、智能仪器仪表等, 常常用汇编语言来编制程序。
☆进位计数制及其相互转换
☆进位计数制
使用一定个数的数码的组合来表示数字,这种 表示方法称为进位计数制。根据所使用的数码的 个数,就产生了不同的进位计数制。
将各个位置上所表示的基本数值称为位权, 简称权。
每个数位上能使用不同数码的个数称为基数。
例:十进制有十个数码0~9,基数为10,二进制基 数为2。
B(Binary)--二进制数
O (Octal)或Q--八进制数
D (Decimal)--十进制数
H (Hexadecimal)--十六进制数
如未使用任何字母,则默认表示是十进制数
☆各种数制间的相互转换
☆十进制整数转换为二进制数
1. 减权定位法
- 从二进制数高位起,依次用待转换的十进制数与各位权值进行比较;
- 如够减,则该数位系数Ki=1,同时减去该位权值, 余数作为下一次比较的值;
- 如不够减,则Ki=0。
2. 除基取余法
将十进制数除以基数2,其余数为二进制数的最低位,再用其商除2,其余数为次低位,反复做下去,直到商0。
这种转换方法同样适合于其它进制数之间的转换。(红)
☆十进制小数转换为二进制数
1. 减权定位法
例:将十进制数0.645转换为二进制数
减权比较 | Ki | 对应二进制数 |
---|---|---|
0.645-0.5 =0.145 | k-1 | 1 |
0.145<0.25 | k-2 | 0 |
0.145-0.125=0.02 | k-3 | 1 |
0.02<0.0625 | k-4 | 0 |
0.02<0.03125 | k-5 | 0 |
0.02-0.015625 | k-6 | 1 |
所以 0.645D=0.101001B
转换时应根据程序要求的精度或计算机的字长来确 定二进制的位数.(黄框)
2. 乘基取整法
例:将0.8125D转换为二进制数
乘以基数 | Ki | 整数部分 |
---|---|---|
0.8125×2=1.625 | K-1 | 1 |
0.625×2=1.25 | K-2 | 1 |
0.25×2=0.5 | K-3 | 0 |
0.5×2=1. | K-4 | 1 |
所以 0.8125D=0.1101B
☆二进制整数转换为十进制数
1. 按权相加法
101000101B
=1×28+1×26+1×22+1×20
=256+64+4+1
=325
2. 逐次乘基相加法
☆二进制小数转换为十进制数
1. 按权相加法
0.101001B
= 1×2-1+1×2-3+1×2-6
= 0.5+0.125+0.0156
= 0.640625D
2. 逐次除基相加法
☆二进制与八进制和十六进制间的转换
二进制与八进制和十六进制之间的对应关系:
三位二进制数对应一位八进制数,四位二进制数对应一位十六进制数。
☆带符号数的表示3
用“+”或“-”表示正负的数叫真值(黄色块)
用“0”或“1”表示正负的数叫机器数
☆原码表示
二进制数的最高位表示符号,0表示正,1表示负。数值 部分用二进制数绝对值表示
8位二进制数原码的最大数为01111111(+127) 最小数为11111111 (-127)
8位二进制数表示范围:-127≤X≤+127
0的原码有两种表示形式:00000000和10000000(+0和-0)
☆补码的表示
1. 补码的定义
带符号数X的补码表示[X]补定义为:
[X]补=M+X (Mod M)
其中模数M根据机器数的位数而定,如位数为8则M=28 用补码表示的机器数,符号位仍然表示数的符号:0为正,1为负。对于正数,补码与原码相同,对于负数需要进行变换。
2. 由真值、原码变换为补码
由于正数的原码与补码相同,下面讨论负数的变换方法。
负数的真值变换为补码的方法:将各位变反(0变1,1变0) 然后在最低位加1.
负数的原码变换为补码:保持符号位不变,其余各位变反, 最低位加1。
例:将-59变换为补码
真值 -00111011 变反 11000100 加1 11000101
原码 10111011 变反 11000100 加1 11000101
所以 [-59]补=11000101
3. 补码数的表示范围
当位数为8时,最大补码为01111111=[+127]补 最小补码为10000000=[-128]补
0的补码只有一个,[0]补=00000000,而10000000是[-128]补11111111=[-1]补
对于16位数,则补码表示范围为-32768~+32767
4. 补码的加减运算
规则:
[X+Y]补=[X]补+[Y]补
[X-Y]补=[X]补-[Y]补=[X]补+[-Y]补
进位超出:舍去
☆字符的表示
标准ASCII码为一字节,其中用低七位表示字符编码(见附录 A),用最高位表示奇偶数验位。
标准ASCII码共有128个,可分为两类:
非打印ASCII码,共33个,用于控制操作, 如BEL(响铃07H), DEL(删除7FH),CR(回车,0DH), LF(换行,0AH)。
可打印ASCII码共有95个,如数字符0~9,大小写字母等。
☆基本逻辑运算
1. “与”运算(AND)
“与”运算也叫逻辑乘,常用 ∧ 或 · 表示。
F=A ∧ B 或 F=A · B
“与”运算是指:仅当逻辑变量A与B都是1时, 运算结果F才为1。其它情况F为0,
即有: 0 ∧ 0 =0 , 0 ∧ 1 = 0 , 1 ∧ 0 = 0 , 1 ∧ 1 =1
2. “或”运算(OR)
“或”运算也叫逻辑加,用∨或+表示。
即有:F=A ∨B F=A +B
“或”运算是指当逻辑变量A与B中,至少有一 个为1时,结果F为1,其他情况F为0。
即有: 0 ∨ 0 = 0 , 0 ∨ 1 = 1 , 1 ∨ 0 = 1 , 1 ∨ 1 = 1
3. “非”运算
如A为1,则A=0,若A为0,则A=1
1 = 0 , 0 = 1
4. “异或”运算(XOR)
通常用 ⊕表示,即 F = A ⊕ B
“异或”运算是指:当A和B相同时(同时为1或同时为 0),运算结果F为0,而不同时,F为1。
运算规则为:1 ⊕ 1 = 0 , 1 ⊕ 0 = 1 , 0 ⊕ 1 = 1 , 0 ⊕ 0 = 0