数据处理数的表示及数制.ppt

上传人:tian****1990 文档编号:11536397 上传时间:2020-04-27 格式:PPT 页数:81 大小:948.50KB
返回 下载 相关 举报
数据处理数的表示及数制.ppt_第1页
第1页 / 共81页
数据处理数的表示及数制.ppt_第2页
第2页 / 共81页
数据处理数的表示及数制.ppt_第3页
第3页 / 共81页
点击查看更多>>
资源描述
1,第3章数据处理,3.1数据表示3.2常量表达3.3变量应用3.4数据传送类指令,3.5算术运算类指令3.6位操作类指令3.7串操作类指令3.8IA-32指令系统,2,3.1计算机中数的表示,数据(Data):计算机处理的对象对应指令操作的对象:操作数(Oprand)在计算机中,只能存储、处理二进制信息数值信息:只能用二进制表示非数值信息:用二进制编码表示程序在计算机内部也是用二进制形式表示的。,3,3.1.1数制及其转换,我们人习惯于使用十进制数据,而计算机内部是用二进制数据,他们之间各自有什么特点,如何进行相互转换?,4,1.十进制数的表示方法,十进制计数法的特点是:使用10个数字符号(0,1,2,9)的不同组合来表示一个十进制数;采用“逢十进一”的进位规则;,5,任何一个十进制数可表示为:,式中:m表示小数位的位数,n表示整数位的位数,Kj为第j位上的数符(可以是09十个数字符号中的任一个)。,例如138.5(D)=,注意书写:以后缀D或d表示十进制数(Decimal)。对于十进制数,该后缀可以省略。,6,二进制计数法的特点是:使用2个数字符号(0,1)的不同组合来表示一个二进制数;逢二进一的进位规则;,任何一个二进制数可表示为:,式中:m为小数位的位数,n为整数位的位数,Bi为第i位上的数符(0或1)。,例如,后缀B或b表示二进制数(Binary),例如1011B,后缀不能省略,2.二进制数的表示方法,7,十六进制计数法的特点是:使用16个数字符号(0,1,2,3,9,A,B,C,D,E,F)的不同组合来表示一个十六进制数,其中AF依次表示1015;逢十六进一的进位规则;,3.十六进制数的表示法,8,任何一个十六进制数可表示为:,式中:m为小数位的位数,n为整数位的位数,Hi为第i位上的数符(可以是0,1,,9,A,B,C,D,E,F十六个数字符号中的任一个)。,例2.30E5AD.BFH=,9,注意在书写十六进制数据时,如果最高位是大于9的数符(AF),则需要在前面加一个0。例如:0B36H用后缀H或h表示十六进制数(Hexadecimal),后缀不能省略。例如12345H十六进制数据如果写成12345,没有“H”,则表示是一个十进制数据,10,一般来说,对于基数为X的任一数可用多项式表示为:,式中:X为基数,表示X进制;i为位序号;m为小数部分位数;n为整数部分的位数;ki为第i位上的数值,可以为0,1,2,X-1共X个数字符号中任一个;Xi为第i位的权。,4.任意进制数据,11,二进制、十六进制以至任意进制数转换为十进制数的方法很简单,只要按上面的展开公式各位按权展开(即该位的数值乘于该位的权)求和即可。例如:,5其它进制数转换为十进制数,12,1)整数部分的转换下面通过一个简单的例子对转换方法进行分析。例如,,可见,要确定13D对应的二进制数,只需从右到左分别确定B0,B1,B2,B3即可。,6.十进制数转换成二进制数,13,即:13D=1101B,14,由以上过程可以得出十进制整数部分转换为二进制数的方法:除以基数(2)取余数,先为低位(B0)后为高位显然,该方法也适用于将十进制整数转换为八进制整数(基数为8)、十六进制整数(基数为16)以至其它任何进制整数。这种方法叫做长除法。,15,例1.1:将十进制数1234转换成二进制数。,最先得到的是最低有效位,最后得到的是最高有效位,16,同样用一个简单例子说明十进制小数部分的转换方法。例如,,要将一个十进制小数转换为二进制小数,实际上就是求B-1,B-2,给上式右侧乘以基数2得:,2)小数部分的转换,17,整数部分为1,此即为B-1。小数部分为12-1。小数部分再乘以基数2得:整数部分为1,此即为B-2。此时小数部分已为0,停止往下计算(若不为0,继续求B-3,B-4,直到小数部分为0或小数部分的位数满足一定精度时为止),18,由以上分析可得到十进制小数部分转换为二进制小数的方法:小数部分乘以基数(2)取整数(0或1),先为高位(B-1)后为低位。显然,该方法也适用于将十进制小数转换为八进制小数(基数为8)、十六进制小数(基数为16)以至其它任何进制小数。小数部分的转化,有时可能总也不会到0,这时只要转换到所需要的为数就行了。,既有整数,又有小数,则分别转换,再合成。,19,例将13.75转换为二进制数。分别将整数和小数部分进行转换:整数部分:13=1101B小数部分:0.75=0.11B因此,13.75=1101.11B在例如:将13.34转换为二进制数,小数部分4位整数部分:1101,小数部分:010113.34=1101.0101B小数部分没有转换完,只需要到所规定的为数就行了(虽然它会造成误差)。,20,例将28.75转换为十六进制数整数部分除以16取余数,小数部分乘以16取整数。整数部分:28=1CH小数部分:0.75*16=12CH,,B-1=CH,小数部分已为0,停止计算。因此,28.75=1C.CH,21,用四位二进制数表示一位十六进制数,所以可得到如下所述的二进制数与十六进制数之间的转换方法。将二进制数转换为十六进制数的方法:以小数点为界,向左(整数部分)每四位为一组,高位不足4位时补0;向右(小数部分)每四位为一组,低位不足4位时补0。然后分别用一个16进制数表示每一组中的4位二进制数。将十六进制数转换为二进制数的方法:直接将每一位十六进制数写成其对应的四位二进制数。,7.二进制数与十六进制数之间的转换,22,例:将二进制数1101110.01011B转换成十六进制数。1101110.01011B=0110,1110.0101,1000B=6E.58H例1.5:将十六进制数0F3.1BH转换成二进制数。0F3.1BH=11110011.00011011B,由于最高位(最左边)大于9,所以在其左侧添加一个0,它不影响数值。,23,(1).二进制数的加减运算规则加:0+0=00+1=11+(1)0=11+1=0(进1)减:0-0=01-1=01-0=10-1=1(借位)(2)乘除法运算可以通过加减法运算实现。,二进制数据的运算规则简单,再加上容易存储,因此计算机中的数据都用二进制表示,非数值信息则用二进制编码表示。,8.二进制算术运算,二进制数的算术运算,9.逻辑运算,事件的假和真可用数码0和1表示事件之间的关系可以利用二进制表达数字电路的低高电平用数码0和1表示数字信号之间的关系可以利用二进制描述数码0和1仅仅代表两种状态它们的运算是逻辑运算,26,(1)与:“与”可用符号“”或“”表示。规则为:00=001=010=011=1可以看出,只有当两个变量均为“1”时,“与”的结果才为“1”。(2)或:“或”运算又称逻辑加,可用符号“”或“+”表示。规则为:00=001=110=111=1可以看出,两个变量只要有一个为“1”,“或”的结果就为“1”。,27,(3)非运算:逻辑“非”运算规则如下:,(4)“异或”运算(XOR)“异或”运算可用符号“”表示。运算规则如下:,28,例如,4位二进制数的逻辑运算:逻辑与AND:11010011=0001逻辑或OR:11010011=1111逻辑非NOT:1101=0010逻辑异或XOR:11010011=1110,29,3.1.2数值的编码,编码:用文字、符号或者数码来表示某种信息(数值、语言、操作指令、状态等)的过程二进制编码:组合0和1数码机器数:计算机中用0和1数码组合表达的数值真值:现实中真实的数值数值的两种编码方式定点格式浮点格式现只讨论定点格式数据小数点位置固定不变。,30,1机器数与真值,(1)真值日常生活中遇到的数,除了上述无符号数外,还有带符号数。对于带符号的二进制数,其正负符号如何表示呢?我们可以用“+”,“-”符号来表示数的符号。例如N1=+1101001B=+105;N2=-1101001B=-105这样用“+”,“-”符号表示的数,叫做数的真值。数的真值可以使用二进制形式,也可以使用十进制形式,或八进制数、十六进制数。,31,在计算机中,我们只存储0,1两个代码,数的符号没办法用“+”,“-”符号来表示。为了表示数的符号,我们通常约定:用二进制数的最高位表示数的符号。这时最高位叫做符号位。规定用“0”表示正,“1”表示负。一个数在机器中用最高位表示数的符号,其它位表示数值的大小的这种表示形式,叫做机器数。这样对于n位二进制数,如果它是一个带符号的数,则最高位Bn-1就表示数的符号,剩下的n-1位表示数的大小。,(2)机器数,32,例如对于一个字节型二进制数来说,n=8共有8位,D7位为符号位,D6D0位为数值位。简单的说,机器数就是数据在机器中的二进制表示形式。机器数所表示的值称为该机器数的“真值”。例如,一个带符号的数,最高位为符号位,其它位为数的值,它的真值为(机器数用原码表示)机器数11101001B真值-1101001B(-105)01101110B+1101110B(+110),33,2.带符号数与无符号数,用一位二进制位表示数的符号:0表示正数,1表示负数,这种表示数的方法,称为带符号数的表示方法。所表示的数,叫做带符号的数。带符号的数其最高位为符号位。如果将全部有效位都用来表示数的大小,这种数的表示方法,叫无符号数的表示方法,所表示的数,叫无符号数。数据在机器中的表示,还有不同的码制主要有:原码、反码、补码、移码。,34,3机器数的表示方法,(1)原码设数x的原码记作x原,如机器字长为n,则原码如下:,最高位为符号位(正数为0,负数为1),其余数字位表示数的绝对值。,35,例如,当机器字长n=8时,+0原=00000000B-0原=10000000B+8原=00001000B-8原=10001000B+127原=01111111B-127原=11111111B当机器字长n=16时,+0原=0000000000000000B-0原=1000000000000000B+8原=0000000000001000B-8原=1000000000001000B+32767原=0111111111111111B-32767原=1111111111111111B,36,可以看出8位二进制原码表示数的范围为-127+127,16位二进制原码表示数的范围为-32767+32767;n位原码的数据表示范围:-(2n-1-1)2n-1-1“0”的原码有两种表示法:00000000表示+0,10000000表示-0。,37,原码表示法简单直观,且与真值的转换很方便,但不便于在计算机中进行加减运算。如进行两数相加,必须先判断两个数的符号是否相同。如果相同,则进行加法运算,否则进行减法运算。如进行两数相减,必须比较两数的绝对值大小,再由大数减小数,结果的符号要和绝对值大的数的符号一致。按上述运算方法设计的算术运算电路很复杂。因此,计算机中通常使用补码进行加减运算,这样就引入了反码表示法和补码表示法。,38,设数x的反码记作x反,如机器字长为n,则反码的求法如下(已知数的原码):,正数的反码与其原码相同。例如,当机器字长n=8时:+0反=+0原=00000000B+127反=+127原=01111111B当机器字长n=16时:+8反=+8原=0000000000001000B+127反=+127原=0000000001111111B,(2)反码,39,负数的反码是在原码基础上,符号位不变(仍为1),数值位按位取反。例如,当机器字长n=8时:-0反=(28-1)-0=11111111B-127反=(28-1)-127=10000000B反码表示数的范围:,例如:8位二进制反码表示数的范围为:-127+127,16位二进制反码表示数的范围为:-32767+32767;“0”的反码有两种表示法:00000000表示+0,11111111表示-0。,40,设数x的补码记作x补,如机器字长为n,则补码求法如下(已知数的原码):,正数的补码与其原码、反码相同。例如,当机器字长n=8时:+8补=+8反=+8原=00001000B+127补=+127反=+127原=01111111B当机器字长n=16时:+8补=+8反=+8原=0000000000001000B+127补=+127反=+127原=0000000001111111B,(3)补码,41,负数的补码是在原码基础上,符号位不变(仍为1),数值部分按位取反,末位加1(也就是在反码基础上末位加1)。0的补码表示:00000000B只有一种,没有第二种编码,42,例如,当机器字长n=8时:-8原=10001000B-127原=11111111B负数,除符号位外,每位取反得到反码-8反=11110111B-127反=10000000B负数,除符号位外,每一位取反,然后在最低位+1,得到负数的补码-8补=11111000B-127补=10000001B,正数,补码就是原码,例如10,原码为00001010B,补码0001010B,43,补码的表示范围,例如:8位二进制补码表示数的范围为:-128+127,16位二进制补码表示数的范围为:-32768+327678位二进制数的原码、反码和补码如下表所示。,n位二进制补码的表示范围,44,位二进制数的原码、反码和补码示意表,45,原码转换为真值根据原码定义,它的最高位为符号位,剩下的n-1位为数值(绝对值),将符号位还原为用+,-符号表示,数值部分不变,就是机器数的真值。如果要用十进制数真值表示,则再将原码数值位各位按权展开求和。,(4)真值与机器数之间的转换,46,例:已知x原=00011111B,y原=10011101B,求x和y的真值。X=+0011111B=+(026+025+124+123+122+121+120)=31Y=-0011101B=-(026+025+124+123+122+021+120)=-29,真值可以用二进制表示,也可以用十进制表示。我们习惯用十进制表示。,47,要求反码的真值,只要先求出反码对应的原码,再按上述原码转换为真值的方法即可求出其真值。正数的原码是反码本身。负数的原码可在反码基础上,符号位仍为1不变,数值位按位取反。例:已知x反=00001111B,y反=11100101B,求x和y。解x原=x反=00001111B,x=+0001111B=+(026+025+024+123+122+121+120)=15y原=10011010B,y=-0011010B=-(026+025+124+123+022+121+020)=-26,.反码转换为真值,48,同理,要求补码的真值,也要先求出补码对应的原码。正数的原码与补码相同。负数的原码可在补码基础上再次求补,即:,除符号位外,每位都取反,在最低为加1,补码转换为真值,49,例:已知x补=00001111B,y补=11100101B,求x和y解x原=x补=00001111B,(正数)x=+0001111B=+(026+025+024+123+122+121+120)=15y原=y补补=10011011B,(负数)y=-0011011B=-(026+025+124+123+022+121+120)=-27,50,3.1.3字符的编码,在计算机中,各种字符需要用若干位的二进制码的组合表示,即字符的二进制编码由于字节为计算机的基本存储单位,所以常以8个二进制位为单位表达字符,0123456789,English,汉字,51,1.BCD,十进制数的二进制编码表示。一个十进制数位用4位二进制编码来表示常用的编码:8421编码(1)编码方法:8421BCD码:低10个4位二进制编码表示十进制09,BCD码便于输入输出,表达数值准确,52,(2)压缩BCD码:一个字节表达两位BCD码例如45用压缩的BCD码存放,(3)非压缩BCD码:一个字节表达一位BCD码(低4位表达数值,高4位常设置为0),D0,低位在前高位在后存放,53,BCD码很直观BCD码:0100100101111000.0001010010014979.149十进制真值:4978.149在机器内部,每一个十进制数码符号用4位二进制表示。在内存中的存放方式有2种:压缩BCD吗非压缩BCD码,54,2.ASCII(美国标准信息交换码),标准ASCII码用7位二进制编码,有128个不可显示的控制字符:前32个和最后一个回车CR:0DH换行LF:0AH响铃BEL:07H可显示和打印的字符:20H后的94个编码数码09:30H39H大写字母AZ:41H5AH小写字母az:61H7AH空格:20H扩展ASCII码:最高D7位为1,表达制表符号,55,表2.3美国标准信息交换码ASCII(7位代码),56,3.Unicode(统一码),8位ASCII码表达英文字符16位国标码表达汉字字符汉字机内码:国标码在计算机中使用的编码国际信息交换码Unicode16位编码对世界上所有语言的大多数字符进行编码提供扩展能力Unicode兼容ASCII,Unicode给每个字符提供了一个唯一的数字,不论是什么平台,不论是什么程序,不论是什么语言,57,什么是统一码?,Unicode给每个字符提供了一个唯一的数字,不论是什么平台,不论是什么程序,不论是什么语言,58,3.2常量表达,常数十、十六和二进制形式表达的数值以后缀字母区分,十进制数可以不加以字母AF开头的十六进制常数,要加前导0字符和字符串英文缩略号括起来的单个字符或多个字符数值是每个字符对应的ASCII码值符号常量使用标识符表达一个数值符号定义伪指令:等价EQU,等号数值表达式用运算符连接各种常量构成的算式算术运算符:(加)(减)*(乘)/(除),常量具有确定数值,59,例数据表达程序1,000000006464646441const1BYTE100,100d,01100100b,64h,A00000005017F8080FFFFconst2BYTE1,+127,128,-128,255,-10000000B699720E032CEconst3BYTE105,-105,32,-32,32h,-32h000000113031323334353637383961626378797A41424358595Aconst4BYTE0123456789,abcxyz,ABCXYZ,60,例数据表达程序2,000000270D0A0crlfbyte0dh,0ah,0=0000000Aminint=10=000000FFmaxintequ0ffh0000002A0A0FFAF5const5byteminint,minint+5bytemaxint-5,maxint-minint0000002E105615EBconst6byte4*4,34h+34,67h-52h,52h-67h,61,3.3变量应用,变量(Variable)程序运行中随之发生变化的结果保存在可读可写的主存空间实质是主存单元的数据,因而可以改变变量需要事先定义才能使用变量具有属性方便应用,变量表达主存数据,即存储器操作数,62,3.3.1变量定义,申请存储空间,还可以进行存储单元初始化变量名变量定义伪指令初值表变量名是用户标识符,表示首元素逻辑地址变量定义伪指令有BYTE、WORD、DWORD、FWORD、QWORD、TBYTE初值表是用逗号分隔的参数各种形式的常量“?”表示初值不确定,即未赋初值复制操作符DUP重复次数DUP(重复参数),63,1.变量定义伪指令,64,2.字节量数据,BYTE定义8位、字节量变量数据可以表达无符号整数0255补码表示的有符号整数:-128+127一个字符(ASCII码值)压缩BCD码:099非压缩BCD码:09,字符串定义使用字节变量定义BYTE,65,例3-2字节变量程序,=0000000Aminint=10000000000080FF80007Fbvar1byte0,128,255,-128,0,+1270000000601FF26DA38C8bvar2byte1,-1,38,-38,38h,-38h0000000C00bvar3byte?,66,3.字量数据,WORD定义16位、字量变量数据可以表达16位无符号和有符号整数16位段选择器,16位偏移地址16位数据包含高低两个字节,占用2个连续的字节存储单元小端方式(LittleEndian)低字节数据存放在低地址存储单元高字节数据存放在高地址存储单元,67,例3-3字变量程序,=0000000Aminint=100000000000008000FFFF800000007FFFwvar1word0,32768,65535,-32768,0,+327670000000C0001FFFF0026FFDA0038FFC8wvar2word1,-1,38,-38,38h,-38h000000180000wvar3word?0000001A20101020wvar4word2010h,1020h0000001E00000005000A0000word5dup(minint,?)0000003231393832wvar6word3139h,3832h,68,4.双字量数据,DWORD定义32位、双字量变量数据可以表达32位无符号和有符号整数32位偏移地址、线性地址或段基地址32位数据包含4个字节,以“高对高、低对低”原则占用4个连续字节空间,69,小端存储方式,返回,70,例双字变量程序1,=0000000Aminint=10000000000000000080000000FFFFFFFF80000000000000007FFFFFFFdvar1dword0,80000000h,0ffffffffh,-80000000h,0,7fffffffh0000001800000001FFFFFFFF00000026FFFFFFDA00000038FFFFFFC8dvar2dword1,-1,38,-38,38h,-38h0000003000000000dvar3dword?000000340000201000001020dword2010h,1020h,71,例双字变量程序2,0000003C0000000A0000000A00000000dvar5dwordminintdup(minint,?)0000008C38323139dvar6dword38323139h0000009039313238,72,5.变量定位,变量定义的存储空间按照书写的先后顺序一个接着一个分配“ORG参数”控制存放的偏移地址org100h;从偏移地址100H处安排指令代码也由汇编程序按照语句的书写顺序安排存储空间定位伪指令也可以用于控制代码的偏移地址,73,3.3.2变量属性,变量定义分配存储空间赋初值创建变量名变量名具有两类属性:地址属性:首个变量所在存储单元的逻辑地址,含有段基地址和偏移地址类型属性:变量定义的数据单位字节量BYTE、字量WORD、双字量DWORD3字量FWORD、4字量QWORD、10字节量TBYTE,74,地址操作符,地址操作符用于获取变量名的地址属性,75,例变量地址属性程序1,;数据段000000001234bvarbyte12h,34horg$+100000000C000100020003000400050006000700080009000Aarrayword1,2,3,4,5,6,7,8,9,10000000205678wvarword5678h=00000016arr_size=$-array=0000000Barr_len=arr_size/2000000229ABCDEF0dvardword9abcdef0h,76,例变量地址属性程序2,;代码段00000000A000000000Rmoval,bvar000000058A2500000001Rmovah,bvar+10000000B66|8B1D00000022Rmovbx,wvar200000012B90000000Bmovecx,arr_len00000017BA00000017Rmovedx,$0000001CBE00000022Rmovesi,offsetdvar,直接寻址,立即数寻址,77,例变量地址属性程序3,000000218B3Emovedi,esi000000238B2D00000022Rmovebp,dvar00000029E800000000Ecalldisprd,EAX=00003412,EBX=7FFDDEF0,ECX=0000000B,EDX=00401017ESI=00404022,EDI=9ABCDEF0,EBP=9ABCDEF0,ESP=0012FFC4,运行结果,78,类型操作符,类型操作符使用变量名的类型属性,变量需要先定义,并给定一种类型。类型的转换适用类型转换操作符PTR,79,L,80,例变量类型属性程序1,;代码段00000000A10000000CRmoveax,dwordptrarray;获得数据00000005BB00000001movebx,typebvar;获得字节类型值0000000AB900000002movecx,typewvar;获得字类型值0000000FBA00000004movedx,typedvar;获得双字类型值,81,例变量类型属性程序2,00000014BE0000000Amovesi,lengthofarray;获得数据个数00000019BF00000014movedi,sizeofarray;获得字节长度0000001EBD00000016movebp,arr_size;获得字节长度00000023E800000000Ecalldisprd,EAX=00020001,EBX=00000001,ECX=00000002,EDX=00000004ESI=0000000A,EDI=00000014,EBP=00000016,ESP=0012FFC4,运行结果,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!