第1章汇编语言基础知识 1.教学目的:掌握汇编语言概念极其使用的迸位计数制、不同进位计数制之间的 转换、计算机编码以及基本数据类型 2.教学要求 ①了解汇编语言的基本概念 ②理解汇编语言使用的进位计数制 ③熟练掌握不同进制之间转换、计算机的编码 ④熟悉汇编语言中的基本数据类型 3.教学重点 ①不同进制之间转换 ②计算机的编码 4.掌握难点 ①不同进制之间转换 ②计算机的编码 5.教学进程安排:P1~P18 6.教学方法 ①般叙述基本概念 ②着重课堂讲授不同进制之间转换、计算机的编码 7.教学内容摘要 1.1汇编语言概述 1.1.1汇编语言基本概念 1.机器语言 2.汇编语言 3.高级语言 1.1.2汇编语言的特点 1.执行速度快 2.程序短小 3.可以直接控制硬件 以方便地编译 5.辅助计算机工作者掌握计算机体系结构 1.2进位计数制及其转换
第 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 进位计数制及其转换
计算机内部的信息分为两大类: 控制信息:控制信息是一系列的控制命令,用于指挥计算机如何操作 2.数据信息:数据信息是计算机操作的对象,它可分为数值数据和非数值数据 (1)数值数据用于表示数量的大小,它有确定的数值 (2)非数值数据没有确定的数值,它主要包括字符、汉字、逻辑数据等等。 信息在输入计算机内部时,都必须用基2码编码表示,其原因如下 1.基2码在物理上最容易实现 2.基2码用来表示二进制数,其编码、加减运算规则简单。 3.基2码的两个符号“1”和“0”正好与逻辑数据“真”与“假”相对应,为计算机实现逻辑 运算带来了方便。 1.2.1数与数制 十进制数的特点是“逢十进一,借一当十”,需要用到的数字符号为十个,分别是0~9。 二进制数的特点是“逢二进一,借一当二”,需要用到的数字符号为二个,分别是0~1。 八进制数的特点是“逢八进一,借一当八”,需要用到的数字符号为八个,分别是0~7 十六进制数的特点是“逢十六进一,借一当十六”,需要用到的数字符号为十六个,分别是 (234.13)1=2×102+3×10+4×10+1×10+3×102 (101.11)21×20×2+1×2+1×2+1×22 (124.36)s1×82+2×82+4×8+3×8+6×82 (AC.B5)16=A×16+×16°+B×16+5×162 据上述概念,可推广出表示任意进制数的通式 N=±∑x 其中之x厂为整数部分,乙x厂为小数部分。R为基数,每一项的数字可用0~R-1数 字中的一个数字来表示。 1.2.2不同数制之间的转换 1.十进制数与二进制数之间的转换 (1)十进制整数转换成二进制整数 方法:除2取余法 注意:第一次得到的余数为二进制数的最低位,最后得到的余数为二进制数的最高位 【例1-1】将十进制数97转换成二进制数。其过程如下 余数为1 即A=1 48余数为0, 即A1=0 余数为0, 即A2=0 余数为0, 即A3=0 余数为0, 即A=0 余数为1 即A=1 余数为1, 即A=1: 余数为0 结束 商为 最后结果为(97)10=(A6AsA4A3A2A1A0)2=(1100001)2 (2)十进制小数转换成二进制小数
计算机内部的信息分为两大类: 1.控制信息:控制信息是一系列的控制命令,用于指挥计算机如何操作; 2.数据信息:数据信息是计算机操作的对象,它可分为数值数据和非数值数据 (1)数值数据用于表示数量的大小,它有确定的数值; (2)非数值数据没有确定的数值,它主要包括字符、汉字、逻辑数据等等。 信息在输入计算机内部时,都必须用基 2 码编码表示,其原因如下: 1. 基 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×2 2 +0×2 1 +1×2 0 +1×2 -1 +1×2 -2 (124.36)8=1×8 2 +2×8 1 +4×8 0 +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 转换成二进制数。其过程如下: 即 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 97 余数为 1, 余数为 0, 余数为 0, 余数为 0, 余数为 0, 余数为 1, 余数为 1, 余数为 0 2 48 2 24 2 12 2 6 2 3 2 1 商为 0 ( ) 0 1 − = =− =− = + = m i i i n i i i n i m i i x r x r N x r = n i i i x r 0 − =− m i i i x r 1
方法:乘2取整法 注意:最后将每次得到的整数部分(必定是0或1)按先后顺序从左到右排列即得到所对 应二进制小数。 【例12】将十进制小数0.6875转换成二进制小数。如下: 0.6875 1.3750 整数部分为1,即A=1 0.3750 余下的小数部分 0.7500 整数部分为0,即A= 0.7500 余下的小数部分 1.5000 整数部分为1,即A=1 0.5000 余下的小数部分 1.0000 整数部分为1,即A=1 余下的小数部分为0,结束 最后结果为(0.6875)1=(0.A1A2A-3A-)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.二进制与八进制、十六进制数之间的转换 因为:2=8,所以每三位二进制数对应一位八进制数 2=16,所以每四位二进制数对应一位十六进制 表1-1列出了十进制、二进制、八进制、十六进制最基本的数字的对应关系。这些对应关 系在后面的二进制、八进制、十六进制相互转换中要经常用到。 表1-1十 八、十六进制数码的对应关系
方法:乘 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. 二进制与八进制、十六进制数之间的转换 因为: 2 3 =8,所以每三位二进制数对应一位八进制数; 2 4 =16,所以每四位二进制数对应一位十六进制。 表 1-1 列出了十进制、二进制、八进制、十六进制最基本的数字的对应关系。这些对应关 系在后面的二进制、八进制、十六进制相互转换中要经常用到。 表 1-1 十、二、八、十六进制数码的对应关系
十进制 进制 八进制 十六进制 0010 123456789 0123456 01234 O1 0l11 0123456 678gABcDEF 14 在计算机里,通常用数字后面跟一个英文字母来表示该数的数制 (1)十进制数一般用D( DECIMAL)、 (2)二进制数用B( BINARY) (3)八进制数用0( OCTAL) (4)十六进制数用H( HEXADECIMAL)来表示 1.3计算机中数与字符的表示方法 1.3.1数值数据的编码及其运算 1.二进制数的编码及运算 两个概念: 机器数:带符号的二进制数值数据在计算机内部的编码 真值:机器数所代表的实际值 (1)二进制数补码编码 要注意以下两个问题: ①在补码表示法中,0只有一种表示,即000…000。 ②对于1000000这个补码编码,其真值被定义为-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-28位二进制补码数范围 补码编码(机器数) 十进制数(真值) 011l1110
十进制 二进制 八进制 十六进制 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
00000010 00000001 00000000 0 1 1111111 l11l1110 l0000001 127 当n=16时,N的数据取值范围是:-32768≤N≤+32767 (2)二进制数补码的运算 补码的运算规则 [X+Y]补=[X]补+[Y]补 [X-Y]补=[X]补+[Y]补 计算机引入了补码编码后,带来了以下几个优点: 减法转化成了加法:这样大大简化了运算器硬件电路的设计,加减法可用同一硬件电 路进行处理 算时,符号位与数值位同等对待,都按二进制参加运算;符号位产生的进位丢掉不 管,其结果是正确的。这大大简化了运算规则。 运用以上两个公式时,要注意两点: 第一点:公式成立有个前提条件,就是运算结果不能超出机器数所能表示的范围,否则运 算结果不正确,按“溢出”处理 第二点:采用补码运算后,结果也是补码,欲得运算结果的真值,还需转换 2.无符号整数的编码及运算规则 在某些情况下,计算机要处理的数据全是正数,此时机器数再保留符号位就没有意义了。 这时,我们将机器数最高有效位也作为数值位处理,也就是说,假设机器字长为n位: 则有符号整数的编码可表示为 符号位 数值位 无符号整数的编码可表示为 数值 直位 无符号整数的表数范围为:0≤N≤2 3.十进制数的编码及运算 (1)BCD码 表1-3BcD码表 十进制数码0 8421码 0l10011l 0001001 (2)BCD码的运算规则 (3)BCD码的修正规则 1.3.2非数值数据的二进制编码
┇ ┇ 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≤2 n-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 非数值数据的二进制编码 数值位 符号位 数值位