第1章 汇编语言基础知识
1.教学目的:掌握汇编语言概念极其使用的进位计数制、不同进位计数制之间的转换、计算机编码以及基本数据类型。
2.教学要求:
①了解汇编语言的基本概念
②理解汇编语言使用的进位计数制
③熟练掌握不同进制之间转换、计算机的编码
④熟悉汇编语言中的基本数据类型
3.教学重点:
①不同进制之间转换
②计算机的编码
4.掌握难点:
①不同进制之间转换
②计算机的编码
5.教学进程安排:P1~P18
6.教学方法:
①一般叙述基本概念
②着重课堂讲授不同进制之间转换、计算机的编码
7.教学内容摘要,
1.1汇编语言概述
1.1.1汇编语言基本概念
1.机器语言
2.汇编语言
3.高级语言
1.1.2 汇编语言的特点
1.执行速度快
2.程序短小
3.可以直接控制硬件
4.可以方便地编译
5.辅助计算机工作者掌握计算机体系结构
1.2进位计数制及其转换计算机内部的信息分为两大类:
1.控制信息:控制信息是一系列的控制命令,用于指挥计算机如何操作;
2.数据信息:数据信息是计算机操作的对象,它可分为数值数据和非数值数据
(1)数值数据用于表示数量的大小,它有确定的数值;
(2)非数值数据没有确定的数值,它主要包括字符、汉字、逻辑数据等等。
信息在输入计算机内部时,都必须用基2码编码表示,其原因如下:
基2码在物理上最容易实现。
2.基2码用来表示二进制数,其编码、加减运算规则简单。
3.基2码的两个符号“1”和“0”正好与逻辑数据“真”与“假”相对应,为计算机实现逻辑运算带来了方便。
1.2.1数与数制十进制数的特点是“逢十进一,借一当十”,需要用到的数字符号为十个,分别是0~9。
二进制数的特点是“逢二进一,借一当二”,需要用到的数字符号为二个,分别是0~1。
八进制数的特点是“逢八进一,借一当八”,需要用到的数字符号为八个,分别是0~7。
十六进制数的特点是“逢十六进一,借一当十六”,需要用到的数字符号为十六个,分别是0~9、A~F。
(234.13)10=2×102+3×101+4×100+1×10-1+3×10-2
(101.11)2=1×22+0×21+1×20+1×2-1+1×2-2
(124.36)8=1×82+2×81+4×80+3×8-1+6×8-2
(AC.B5)16=A×161+C×160+B×16-1+5×16-2
根据上述概念,可推广出表示任意进制数的通式:
其中 为整数部分,为小数部分。R为基数,每一项的数字可用0~R-1数字中的一个数字来表示。
1.2.2不同数制之间的转换
1,十进制数与二进制数之间的转换
(1)十进制整数转换成二进制整数方法:除2取余法注意:第一次得到的余数为二进制数的最低位,最后得到的余数为二进制数的最高位。
【例1-1】将十进制数97转换成二进制数。其过程如下:
2
97
余数为1,
余数为0,
余数为0,
余数为0,
余数为0,
余数为1,
余数为1,
余数为0
2
48
2
24
2
12
2
6
2
3
2
1
商为
0
即A0=1
即A1=0
即A2=0
即A3=0
即A4=0
即A5=1
即A6=1;
结束最后结果为(97)10 =(A6 A5 A4 A3 A2 A1 A0)2=(1100001)2
(2)十进制小数转换成二进制小数方法:乘2取整法注意:最后将每次得到的整数部分(必定是0或1)按先后顺序从左到右排列即得到所对应二进制小数。
【例1-2】将十进制小数0.6875转换成二进制小数。如下:
0.6875
× 2
1.3750 整数部分为1,即A-1=1
0.3750 余下的小数部分
× 2
0.7500 整数部分为0,即A-2=0
0.7500 余下的小数部分
× 2
1.5000 整数部分为1,即A-3=1
0.5000 余下的小数部分
× 2
1.0000 整数部分为1,即A-4=1
0.0000 余下的小数部分为0,结束最后结果为(0.6875)10=(0.A-1A-2A-3A-4) 2 =(0.1011)2
(3)一般的十进制数转换成二进制数为了将一个既有整数又有小数部分的十进制数转换成二进制数,可以将其整数部分和小数部分分别进行转换,然后再组合起来。例如:
(4)二进制数转换十进制数方法:按位权展开后相加。
例如:(111.11)2 =1×22+1×21+1×20+1×2-1+1×2-2
=4+2+1+0.5+0.25
=(7.75)10
2,十进制与八进制之间的转换
(1)十进制整数转换成八进制整数方法:除8取余法
(2)十进制小数转换成八进制小数方法:乘8取整法
3,十进制与十六进制之间的转换
(1)十进制整数转换成十六进制整数方法:除16取余法
(2)十进制小数转换成十六进制小数方法:乘16取整法
(3)十六进制数转换十进制数方法:按位权展开后相加
4,二进制与八进制、十六进制数之间的转换因为: 23=8,所以每三位二进制数对应一位八进制数;
24=16,所以每四位二进制数对应一位十六进制。
表1-1列出了十进制、二进制、八进制、十六进制最基本的数字的对应关系。这些对应关系在后面的二进制、八进制、十六进制相互转换中要经常用到。
表1-1 十、二、八、十六进制数码的对应关系
十进制
二进制
八进制
十六进制
0
0000
0
0
1
0001
1
1
2
0010
2
2
3
0011
3
3
4
0100
4
4
5
0101
5
5
6
0110
6
6
7
0111
7
7
8
1000
10
8
9
1001
11
9
10
1010
12
A
11
1011
13
B
12
1100
14
C
13
1101
15
D
14
1110
16
E
15
1111
17
F
在计算机里,通常用数字后面跟一个英文字母来表示该数的数制。
(1)十进制数一般用D(DECIMAL)、
(2)二进制数用B(BINARY)、
(3)八进制数用O(OCTAL)、
(4)十六进制数用H(HEXADECIMAL)来表示。
1.3计算机中数与字符的表示方法
1.3.1 数值数据的编码及其运算
1,二进制数的编码及运算两个概念:
机器数:带符号的二进制数值数据在计算机内部的编码。
真值:机器数所代表的实际值。
(1)二进制数补码编码要注意以下两个问题:
在补码表示法中,0只有一种表示,即000…000。
对于10000000这个补码编码,其真值被定义为-128。
举例:机器字长n=8位,X=+48D,求[X]补举例:机器字长n=8位,X=-48D,求[X]补举例:机器字长n=16位,X=+48D,求[X]补举例:机器字长n=16位,X=-48D,求[X]补注意:汇编语言中,为了区别指令码和名称,规定A~F开始的数据前面加零。
补码数要扩展时,正数是在符号的前面补0,负数是在符号的前面补1。
已知补码求真值的方法是:当机器数的最高位(符号位)为0时,表示真值是正数,其值等于其余n-1位的值;当机器数的最高位(符号位)为1时,表示真值是负数,其值等于其余n-1位按位取反末位加1的值。
我们来讨论一下补码表示数的范围。
表1-2 8位二进制补码数范围补码编码(机器数)
十进制数(真值)
0 1111111
+127
0 1111110
+126
┇
┇
0 0000010
+2
0 0000001
+1
0 0000000
0
1 1111111
-1
1 1111110
-2
┇
┇
1 0000010
-126
1 0000001
-127
1 0000000
-128
当n=16时,N的数据取值范围是,-32768≤ N ≤+32767
(2)二进制数补码的运算补码的运算规则:
[X+Y]补 = [X]补 + [Y]补
[X-Y]补 = [X]补 + [-Y]补计算机引入了补码编码后,带来了以下几个优点:
减法转化成了加法:这样大大简化了运算器硬件电路的设计,加减法可用同一硬件电路进行处理。
运算时,符号位与数值位同等对待,都按二进制参加运算;符号位产生的进位丢掉不管,其结果是正确的。这大大简化了运算规则。
运用以上两个公式时,要注意两点:
第一点:公式成立有个前提条件,就是运算结果不能超出机器数所能表示的范围,否则运算结果不正确,按“溢出”处理。
第二点:采用补码运算后,结果也是补码,欲得运算结果的真值,还需转换。
2,无符号整数的编码及运算规则在某些情况下,计算机要处理的数据全是正数,此时机器数再保留符号位就没有意义了。这时,我们将机器数最高有效位也作为数值位处理,也就是说,假设机器字长为n位:
则有符号整数的编码可表示为:
1位 n-1位无符号整数的编码可表示为:
n位无符号整数的表数范围为:0≤N≤2n-1
3,十进制数的编码及运算
(1)BCD码表1-3 BCD码表十进制数码
0
1
2
3
4
5
6
7
8
9
8421码
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
(2)BCD码的运算规则
(3)BCD码的修正规则
1.3.2非数值数据的二进制编码
1,字符编码使用最多、最普遍的是ASCII字符编码,即美国信息交换标准代码(AMERICAN STANDARD CODE FOR INFORMATION INTERCHANGE)。
2,汉字的编码
⑴汉字输入编码
⑵汉字机内码
⑶汉字字形码
3,逻辑数据的编码
⑴“与”运算(AND)
⑵“或”运算(OR)
⑶,非”运算(NOT)
⑷“异或”运算(XOR)
逻辑运算关系见表1-5所示。
表1-5 逻辑数运算规则逻辑与
逻辑或
逻辑非
逻辑异或
备注
0.0 = 0
0+0 = 0
 = 0
0⊕0 = 0
0.1 = 0
0+1 = 1
 = 1
0⊕1 = 1
1.0 = 0
1+0 = 1
1⊕0 = 1
1.1 = 1
1+1 = 1
1⊕1 = 0
8.参考资料:《IBM-PC汇编语言程序设计》沈美明
9.作业:P18 习题1
10.本章小结:
①本部分为汇编语言的基础,必须理解和熟悉。
②本部分要求灵活应用,不要死记硬背。