汇编语言第2章基础知识.ppt
,汇编语言程序设计,2.1 常用数制及其转换2.2 数与字符的表示方法2.3 几种基本逻辑运算,第2章 基础知识,汇编语言程序设计 第2章 基础知识,一、数制二、数制的转换,2.1 常用数制及其转换,汇编语言程序设计 第2章 基础知识,十进制是人最熟悉、最常用的数制,它的基数为10,数码为09,逢十进一。二进制是计算机中采用的计数法,它的基数为2,数码个数为0、1,逢二进一。十六进制是为了书写的方便而采用的计数法,它的基数为16,数码为09和af(或A F),逢十六进一。基数为r的r进制数的值可以表示为anrn+an-1rn-1+a0r0+b1r-1+b2r-2+bmr-m,2.1 常用数制及其转换,一、数制,汇编语言程序设计 第2章 基础知识,例2.1(1234.56)10=1103+2102+3101+4100+510-1+610-2(101101.11)2=125+123+122+120+12-1+12-2=(45.75)10(3BF)16=3162+11161+15=(959)10,2.1 常用数制及其转换一、数制,汇编语言程序设计 第2章 基础知识,1.二、十六进制数转化为十进制数按位(权)展开 例2.2(10101)2=24+22+1=21101.01B=22+1+2-2=5.25(71)H=716+1=113101AH=163+16+10=4122,2.1 常用数制及其转换,注意:数制的下标和后缀表示。,二、数制的转换,汇编语言程序设计 第2章 基础知识,D(十进制数)B(二进制数)H(十六进制数)缺省为十进制数,2.1 常用数制及其转换二、数制的转换,在汇编语言中的后缀表示:,234D(十进制数)10110B(二进制数)4D9H(十六进制数)47(十进制数),例如,说明:前导0可以忽略,不影响取值。,汇编语言程序设计 第2章 基础知识,十进制(D)二进制(B)十六进制(H)000000100011200102300113401004501015601106701117810008910019101010A111011B121100C131101D141110E151111F,2.1 常用数制及其转换二、数制的转换,基本十六进数与二进制、十进制的关系:,汇编语言程序设计 第2章 基础知识,2.十进制数转化为二进制、十六进制数整数部分:除以2或16取余数,直到商为0,余数从右到左排列。小数部分:乘以2或16取整数,直到指定精度,整数从左到右排列。例2.3215D=0D7H=11010111B,215.3511010111.01011B。,2.1 常用数制及其转换二、数制的转换,注意:排列方向,下页演算,汇编语言程序设计 第2章 基础知识,2.1 常用数制及其转换二、数制的转换,汇编语言程序设计 第2章 基础知识,另一种转换方法:降幂法例2.4 N=73D=1001001B。小于N的二进制权为:64 32 16 8 4 2 1对应的二进制数为:1 0 0 1 0 0 1又如:N=67D=01000011BN=20D=00010100B,2.1 常用数制及其转换二、数制的转换,汇编语言程序设计 第2章 基础知识,3.十六进制数转化为二进制数 十六进制数中的一位对应二进制数的四位。例2.52C1DH=0010 1100 0001 1101B64H=0110 0100B,2.1 常用数制及其转换二、数制的转换,汇编语言程序设计 第2章 基础知识,4.二进制数转化为十六进制数四位二进制数对应一位十六进制数。整数部分:从右向左进行分组。小数部分:从左向右进行分组,不足补0。例2.611 0110 1100.1101 01B=36C.D4H36CD4,2.1 常用数制及其转换二、数制的转换,汇编语言程序设计 第2章 基础知识,一、二进制数运算二、十六进制数的运算,(补)二进制数和十六进制数运算,汇编语言程序设计 第2章 基础知识,加法规则:乘法规则:0+0=000=00+1=101=01+0=110=01+1=0(进位1)11=1,二进制数和十六进制数运算,例2.7110110011101+011010100101 1010000111101+1101 1000001,一、二进制数的运算,汇编语言程序设计 第2章 基础知识,(1)先转换为十进制,经过运算后再把结果转换为十六进制。(2)按照逢十六进一的规则,直接用十六进制数来计算。(3)先转换为二进制,经过运算后再把结果转换为十六进制。尤其适用于十六进制乘除。,二进制数和十六进制数运算,二、十六进制数的运算,汇编语言程序设计 第2章 基础知识,例2.805C3H3D28H05C3H+3D28H-05C3H 00ABH42EBH3765H3F61+399E 3D941,二进制数和十六进制数运算二、十六进制数的运算,十六进制数乘除不作要求,汇编语言程序设计 第2章 基础知识,一、数的补码表示二、补码的加法和减法三、无符号整数四、字符表示法,2.2 数与字符的表示方法,汇编语言程序设计 第2章 基础知识,机器数:一个数及其符号在机器中的二进制表示。真值:机器数所代表的数值。数值数据分为有符号数和无符号数。无符号数最高位表示数值,而有符号数最高位表示符号。有符号数有不同的编码方式,常用的是补码。IBM-PC的整数采用补码表示法。,2.2 数与字符的表示方法,一、数的补码表示,汇编语言程序设计 第2章 基础知识,假定一个数在机器中占用8位,即机器字长为8位。,2.2 数与字符的表示方法 一、数的补码表示,(1)原码正数的符号位用0表示,负数的符号位用1表示。0 x,0 x+7:0000 0111+0:0000 0000 x原=1|x|,x0-7:1000 0111-0:1000 0000,(2)反码 0 x,0 x+7:0000 0111+0:0000 0000 x反=1|x|,x0-7:1111 1000-0:1111 1111,汇编语言程序设计 第2章 基础知识,2.2 数与字符的表示方法 一、数的补码表示,(3)补码 0 x,0 x+7:00000111+0:00000000 x补=1|x|+1,x0-7:11111001-0:00000000,补码的表示规则:以最高位作为符号位(0表示正数,1表示负数)。正数的补码是其本身。负数的补码是对其正数“各位求反、末位加1”后形成的。(求补运算),汇编语言程序设计 第2章 基础知识,2.2 数与字符的表示方法 一、数的补码表示,+0补=-0补=00000000。N位二进制补码数可以表示的带符号数范围为-2N-12N-1-1。例如,8位二进制补码的数的表示范围为-128+127,16位二进制补码的数的表示范围为-32768+32767。1000 00000111 11111000 0000 0000 00000111 1111 1111 1111 一个带符号的数由补码表示时,当最高位为0时,后七位是数值位;当最高位为1时,后七位取反加1是数值位。例如:00010101+2110010101-107,补码的特点:,汇编语言程序设计 第2章 基础知识,2.2 数与字符的表示方法 一、数的补码表示,以8位二进制数为例,其表示范围为0255,即256=0。若将其想象为一个环,以0为基点,向顺时针方向移249个单位,则得249。然而,若按逆时针方向移动,则该位置就是-7。即-7=0F9H=249 因此,在8位二进制表示下,对于负数x(-128-1)来说,存在下列等式:-x=256-x或-x=0-x,补码的物理意义:,汇编语言程序设计 第2章 基础知识,2.2 数与字符的表示方法 一、数的补码表示,在计算机内部,补码减法是通过对减数求补后将减法转换为加法进行的。一个带符号数在不同位数下,其二进制补码表示可能是不同的。例如,8位数-1的补码表示是0FFH,16位数-1的补码表示是0FFFFH。,说明:,符号扩展与零扩展 符号扩展是将原符号位填入扩展的每一位,使得在带符号数意义下取值不变。零扩展是将0填入扩展的每一位,使得在无符号数意义下取值不变。,汇编语言程序设计 第2章 基础知识,求补运算:一个二进制数按位求反后在末位加1的运算。求补就是求相反数。可以证明补码表示的数具有以下特性:求补 求补x补-x补 x补利用这一特性,计算机中用对减数求补的方法把减法转化为加法。补码的加法规则:x+y补=x补+y补补码的减法规则:x-y补=x补+-y补,2.2 数与字符的表示方法,二、补码的加法和减法,汇编语言程序设计 第2章 基础知识,例2.9 补码的加法十进制二进制 3200100000+(-25)+11100111 7 100000111自动丢失 2500011001+(-32)+11100000-7 11111001,2.2 数与字符的表示方法 二、补码的加法和减法,汇编语言程序设计 第2章 基础知识,例2.10 补码的减法转化为加法十进制二进制 2500011001-32+11100000-7 11111001-2511100111-(-32)+00100000 7 100000111自动丢失注意:例中由最高位向前的进位自动丢失而不影响运行的结果。,2.2 数与字符的表示方法 二、补码的加法和减法,汇编语言程序设计 第2章 基础知识,溢出当运算结果超出数的表达范围时,称为溢出。溢出并不取决于最高有效位向高位的进位。例如:2500011001-(-115)+01110011 140 10001100(-116)没有进位,但溢出又如:-2511100111+115+01110011 90 101011010有进位,但没有溢出,2.2 数与字符的表示方法 二、补码的加法和减法,汇编语言程序设计 第2章 基础知识,计算机自身用“双进位法”判断是否产生“溢出”:补码最左边2个位上的进位相等,没有溢出,反之有溢出例如:2500 0011001-(-115)+00 1110011 140 01 0001100 两2进位不同,溢出又如:-2511 1100111+115+00 1110011 90 100 1011010 两相同进位,没有溢出,2.2 数与字符的表示方法 二、补码的加法和减法,汇编语言程序设计 第2章 基础知识,同号数和异号数相加使用相同的规则;有符号数和无符号数加法使用相同的规则减法可以用加法实现(对于电子计算机内的开关电路,求补是十分容易实现的),2.2 数与字符的表示方法,补码运算规则的优点:,上述特性可以用来简化运算器电路,简化指令系统。计算机内的有符号数一般都用补码表示,除非特别说明。,汇编语言程序设计 第2章 基础知识,把最高有效位也作为数值处理的数,称为无符号整数。无符号数的数值表达范围与带符号数不同,N位二进制数可以表示的无符号数范围为02N-1。例如,8位二进制数00H0FFH表示0255,16位二进制数0000H0FFFFH表示065535。在计算机中常用无符号整数表示地址,应注意无符号数与带符号数在处理时的差别。,2.2 数与字符的表示方法,三、无符号整数,汇编语言程序设计 第2章 基础知识,PC机采用ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)来表示西文字符。常用字符的ASCII有128个,编码从0到127。P11表1.3采用7位ASCII值。其中:控制字符032,127;普通字符94个。,2.2 数与字符的表示方法,四、字符表示法,汇编语言程序设计 第2章 基础知识,0930H39H4857AZ41H5AH6590az61H7AH97122空格20H32CR(回车)0DH13LF(换行)0AH0,2.2 数与字符的表示方法,注意回车与换行的差别:CR用来控制光标回到当前行的最左端;LF用来移动光标到下一行,而所在列不变。,常用字符的ASCII码:,汇编语言程序设计 第2章 基础知识,压缩BCD码 以4个二进制位表示1个十进制位,用0000B1001B表示09。例如,十进制数6429的压缩BCD码表示为0110 0100 0010 1001 B(即6429H),2.2 数与字符的表示方法,BCD码,BCD(Binary Code Decinal),又称8421码。有压缩型BCD码和非压缩型BCD码之分。,汇编语言程序设计 第2章 基础知识,非压缩BCD码以8个二进制位表示1个十进制位,低4位与压缩BCD码相同,高4位无意义。例如,十进制数6429的非压缩BCD码表示为 xxxx0110 xxxx0100 xxxx0010 xxxx1001 B 有时,要求非压缩BCD码的高4位为0,这时,6429的非压缩BCD码为06040209H。可以看出,数字字符 09 的ASCII码恰好是09的非压缩BCD码。,2.2 数与字符的表示方法,汇编语言程序设计 第2章 基础知识,2.2 数与字符的表示方法,浮点数表示,浮点表示法:小数点的位置不固定,一个浮点数分为阶码和尾数两部分。设字长为32位,可供选择的一种位数分配形式:1位 8位23位 规格化的浮点数:为了提高浮点数表示的精度通常规定其尾数的最高位必须 是非零的有效位,称为浮点数的规格化形式。,汇编语言程序设计 第2章 基础知识,2.2 数与字符的表示方法,IEEE754标准浮点数,单精度:32位,1+8+23单精度:64位,1+11+52规格化后尾数隐藏一位1阶码采用移码形式127或1023例:-12:C1400000 0.25:3E800000 1.5:3FC00000 1.5:3FF8000000000000(双精度),汇编语言程序设计 第2章 基础知识,一、“与”运算(AND)二、“或”运算(OR)三、“非”运算(NOT)四、“异或”运算(XOR),2.3 几种基本的逻辑运算,汇编语言程序设计 第2章 基础知识,“与”运算又称逻辑乘,其运算规则如下表所示,可以概括为“全1出1”。aba AND b00 001 010 011 1,2.3 几种基本的逻辑运算,一、“与”运算(AND),主要用于对二进制数的某些位清0。,汇编语言程序设计 第2章 基础知识,“或”运算又称逻辑加,其运算规则如下表所示,可以概括为“有1出1”。aba OR b00 001 110 111 1,2.3 几种基本的逻辑运算,二、“或”运算(OR),主要用于对二进制数的某些位置1。,汇编语言程序设计 第2章 基础知识,“非”运算的运算规则如下表所示,实际上就是“取反”。aNOT a0 11 0,2.3 几种基本的逻辑运算,三、“非”运算(NOT),汇编语言程序设计 第2章 基础知识,“异或”运算的运算规则如下表所示,可以概括为“相反出1”。aba OR b00 001 110 111 0,2.3 几种基本的逻辑运算,四、“异或”运算(XOR),主要用于对二进制数的某些位取反。,汇编语言程序设计 第2章 基础知识,例2.11 已知x=00FFH,y=5555H,求z1=x AND y,z2=x OR y,z3=x XOR y,z4=NOT x。解:x=0000 0000 1111 1111y=0101 0101 0101 0101z1=0000 0000 0101 0101=0055Hz2=0101 0101 1111 1111=55FFHz3=0101 0101 1010 1010=55AAHz4=1111 1111 0000 0000=FF00H,2.3 几种基本的逻辑运算,汇编语言程序设计 第2章 基础知识,计算机系统使用二进制表示数据。为了书写方便常采用十六进制形式。用补码表示带符号数时,不同位数的二进制形式可能完全不同。在计算机内部的一个二进制数表示,其具体含义由使用者解释。逻辑操作AND、OR、NOT和XOR可用于有选择地对某些位进行处理。,第2章小结,汇编语言程序设计 第2章 基础知识,P21 2.6,2.8,2.9,2.10,2.16思考题:二进制数00110010B,即32H,可以表示哪几种含义?,习题,注意:不能使用计算器,汇编语言程序设计,谢 谢!,汇编语言程序设计 第2章 基础知识,十进制(D)二进制(B)十六进制(H)000000100011200102300113401004501015601106701117810008910019101010A111011B121100C131101D141110E151111F,2.1 数制及其转换一、数制,