ImageVerifierCode 换一换
格式:PPT , 页数:111 ,大小:444KB ,
资源ID:14026888      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/14026888.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(汇编语言基础知识.ppt)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

汇编语言基础知识.ppt

1、第二级,第三级,第四级,第五级,第,1,章,汇编语言基础知识,第1章 汇编语言基础知识,1.1 汇编语言概述,1.2 进位计数制及其转换,1.3 计算机中数与字符的表示方法,习题1,1.1,汇编语言概述,1.1.1 汇编语言的基本概念,汇编语言是机器语言的符号表示形式。在汇编语言出现之前,计算机使用机器语言来控制计算机的各种动作。所谓机器语言,就是用“0”和“1”所组成的一串二进制数所表示的命令或数据,机器的硬件可以直接识别和执行,不需要进行翻译。机器语言的特点是命令代码效率高,但不容易记忆,不利于推广和使用;,程序员借助机器语言编程时,要用数值表示指令和地址,不但费时费力,而且容易出错。汇

2、编语言将机器语言指令和地址符号化,程序员只需要记住符号名并用其编程,汇编器负责把汇编程序翻译成机器指令和正确的地址数值。,大多数程序应该也可以用高级语言编写,但是在某些情况下汇编语言也是必不可少的。汇编语言可以访问计算机的所有指令,可以利用计算机的所有特性,而高级语言就没有这样的能力,高级语言能做的事情汇编语言都能做,而汇编语言能做的高级语言不一定能做到。例如,如果计算机有一个溢出位,汇编程序可以测试它,而一个,JAVA,程序就不能直接测试溢出位。汇编语言可以直接访问寄存器,而高级语言则不一定能访问。,1.1.2 汇编语言的特点,汇编语言相对机器语言而言好记好用,但远不如高级语言方便、实用,而

3、且编写同样的程序,使用汇编语言比使用高级语言花费的时间更多,调试和维护更困难。既然如此,为什么还要使用汇编语言呢?主要有两个原因:性能和对计算机的完全控制。一般而言,汇编语言具有如下特点:,1),执行速度快,一个汇编语言程序,要比高级语言程序执行得更快。程序的执行速度对于某些应用来说是至关重要的。对于这些应用,单纯使用高级语言往往达不到要求,单纯使用汇编语言编写程序也并不是最好的方案,许多成功的大型应用程序往往使用的是混合编程。首先使用高级语言编写整个程序,然后测试程序的执行时间,再使用汇编语言重写其中最费时间的部分。这样做的依据是在实际使用中,通常程序的大部分执行时间都花费在一小部分代码上。

4、2)程序短小,一个汇编语言程序,要比高级语言程序更小。在某些情况下,设备中的嵌入式处理器往往只有很少的内存,使用汇编语言可能是惟一的方法。如智能卡中有,CPU,,但是智能卡中很难有1,MB,以上的内存,也不可能有带分页的硬盘,但智能卡又必须执行复杂的加密解密计算。个人数字助理(,PDA),和其他使用电池作为能源的无线电子设备,为了节省电池的电力,往往也只有很少的内存,它们也需要使用短小精悍而且具有高效率的机器代码。,3)可以直接控制硬件,某些应用程序要求能够完全控制计算机硬件,这也必须使用汇编语言。如操作系统中的低级中断和陷阱处理程序,以及许多嵌入式实时系统中的设备控制程序都属于这一类应用。

5、4)可以方便地编译,编译器可以产生供编程者使用的汇编程序或者自己执行汇编过程。因此,为了理解编译器的工作原理,必须首先理解汇编语言。,5)辅助计算机工作者掌握计算机体系结构,研究汇编语言可以使人们清楚实际计算机结构。特别是对于学习计算机体系结构的学生,编写汇编语言是在结构层理解计算机的惟一途径。,1.2 进位计数制及其转换,计算机内部的信息分为两大类:控制信息和数据信息。控制信息是一系列的控制命令,用于指挥计算机如何操作;数据信息是计算机操作的对象,一般又可分为数值数据和非数值数据。数值数据用于表示数量的大小,它有确定的数值;非数值数据没有确定的数值,它主要包括字符、汉字和逻辑数据等等。,对

6、计算机而言,不论是控制命令还是数据,它们都要用“0”和“1”两个基本符号即基2码来编码表示,这是由于以下三个原因:,(1)基2码在物理上最容易实现。例如,用高、低两个电位表示“1”和“0”,或用脉冲的有、无表示“1”和“0”,用脉冲的正、负极性表示“1”和“0”等等,可靠性都较高。,(2)基2码用来表示二进制数,其编码及加减运算规则简单。,(3)基2码的两个符号“1”和“0”正好与逻辑数据“真”与“假”相对应,为计算机实现逻辑运算带来了方便。,因此,不论是什么信息,在输入计算机内部时,都必须用基2码编码表示,以方便存储、传送和处理。,1.2.1 数与数制,进位计数制是一种计数的方法。在日常生活

7、中,人们使用各种进位计数制,如六十进制(1小时=60分,1分=60秒),十二进制(1英尺=12英寸,1年=12月)等。但人们最熟悉和最常用的是十进制计数。,如前所述,在计算机中要用到二进制计数,另外,为便于人们阅读及书写,常常还用到八进制计数及十六进制计数。,十进制数的特点是“逢十进一,借一当十”,需要用到的数字符号为10个,分别是09。,二进制数的特点是“逢二进一,借一当二”,需要用到的数字符号为2个,分别是01。,八进制数的特点是“逢八进一,借一当八”,需要用到的数字符号为8个,分别是07。,十六进制数的特点是“逢十六进一,借一当十六”,需要用到的数字符号为16个,分别是09、,AF。,任

8、意一个十进制数可以用位权表示。位权就是某个固定位置上的计数单位。在十进制数中,个位的位权为10,0,,十位的位权为10,1,,百位的位权为10,2,,千位的位权为10,3,,而在小数点后第一位上的位权为10,1,,小数点后第二位的位权为10,2,等等。因此,如果有十进制数234.13,则百位上的2表示2个100,十位上的3表示3个10,个位上的4表示4个1,小数点后第一位上的1表示1个0.1,小数点后第二位上的3表示3个0.01,用位权表示成:,(234.13),10,=210,2,+310,1,+410,0,+110,1,+310,2,同理,任意一个二进制数、八进制数和十六进制数也可用位权表

9、示。例如:,(101.11),2,=12,2,+02,1,+12,0,+12,1,+12,2,(124.36),8,=18,2,+28,1,+48,0,+38,1,+68,2,(,AC.B5),16,=A16,1,+C16,0,+B16,1,+516,2,据上述概念,可推广出表示任意进制数的通式:,其中,为整数部分,为小数部分。,r,为基数,每一项的数字可用0,r,1,数字中的一个数字来表示。,1.2.2 不同数制之间的转换,1.十进制数与二进制数之间的转换,1)十进制整数转换成二进制整数,方法:除2取余法。,具体做法为:将十进制数除以2,得到一个商和一个余数;再将商除以2,又得到一个商和一个

10、余数;继续这一过程,直到商等于0为止。每次得到的余数(必定是0或1)就是对应二进制数的各位数字。,【,例1-1,】将十进制数97转换成二进制数。其过程如下:,2,97,余数为1,,即A,0,=1,2,48,余数为0,,即A,1,=0,2,24,余数为0,,即A,2,=0,2,12,余数为0,,即A,3,=0,2,6,余数为0,,即A,4,=0,2,3,余数为1,,即A,5,=1,2,1,余数为1,,即A,6,=1;,商为,0,余数为0,结束,最后结果为,(97),10,=(,A,6,A,5,A,4,A,3,A,2,A,1,A,0,),2,=(1100001),2,2),十进制小数转换成二进制小

11、数,方法:乘2取整法。,具体做法为:用2乘以十进制小数,得到整数和小数部分;再用2乘以小数部分,又得到一个整数和一个小数部分;继续这一过程,直到余下的小数部分为0或满足精度要求为止。最后将每次得到的整数部分(必定是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.

12、0000整数部分为1,即,A,4,=1,0.0000,余下的小数部分为0,结束,最后结果为,(0.6875),10,=(0.,A,1,A,2,A,3,A,4,),2,=(0.1011),2,为了将一个既有整数部分又有小数部分的十进制数转换成二进制数,可以将其整数部分和小数部分分别进行转换,然后再组合起来。,【,例1-3,】将(97.6875),10,转换成二进制数。其过程如下:,(97),10,=(1100001),2,(0.6875),10,=(0.1011),2,由此可得:,(97.6875),10,=(1100001.1011),2,3)二进制数转换成十进制数,方法:按位权展开后相加。,

13、例1-4,】将(111.11),2,转换成十进制数。其过程如下:,(111.11),2,=12,2,+12,1,+12,0,+12,1,+12,2,=4+2+1+0.5+0.25,=(7.75),10,2.,十进制数与八进制数之间的转换,1)十进制整数转换成八进制整数,方法:除8取余法。,具体做法为:将十进制数除以8,得到一个商和一个余数;再将商除以8,又得到一个商和一个余数;继续这一过程,直到商等于0为止。每次得到的余数(必定是小于8的数)就是对应八进制数的各位数字。第一次得到的余数为八进制数的最低位,最后一次得到的余数为八进制数的最高位。,【,例1-5,】将十进制数97转换成八进制数。

14、其过程如下:,8,97,余数为1,,8,12,余数为4,,8,1,余数为1,,商为 0,余数为0,,即,A,0,=1,即,A,1,=4,即,A,2,=1,结束,最后结果为,(97),10,=(,A,2,A,1,A,0,),8,=(141),8,2)十进制小数转换成八进制小数,方法:乘8取整法。,具体做法为:用8乘以十进制小数,得到一个整数和一个小数部分;再用8乘以小数部分,又得到一个整数和一个小数部分;继续这一过程,直到余下的小数部分为0或满足精度要求为止。最后将每次得到的整数部分(必定是小于8的数)按先后顺序从左到右排列即得到所对应的八二进制小数。,【,例1-6,】将十进制小数0.6875转

15、换成八进制小数。其过程如下:,0.6875,8,5.5000整数部分为5,即,A,1,=5,0.5000,余下的小数部分,8,4.0000整数部分为4,即,A,2,=4,0.0000,余下的小数部分为0,结束,最后结果为,(0.6875),10,=(0.,A,-1,A,-2,),8,=(0.54),8,3)八进制数转换成十进制数,方法:按位权展开后相加。,【,例1-7,】将(141.54),8,转换为十进制数。其过程如下:,(141.54),8,=18,2,+48,1,+18,0,+58,1,+48,2,=64+32+1+0.625+0.0625,=97.6875,最后结果为,(141.54)

16、8,=(97.6875),10,3.,十进制数与十六进制数之间的转换,1)十进制整数转换成十六进制整数,方法:除16取余法。,具体做法为:将十进制数除以16,得到一个商和一个余数;再将商除以16,又得到一个商和一个余数;继续这一过程,直到商等于0为止。每次得到的余数(必定是小于,F,的数)就是对应十六进制数的各位数字。第一次得到的余数为十六进制数的最低位,最后一次得到的余数为十六进制数的最高位。,【,例1-8,】将十进制数97转换成十六进制数。其过程如下:,16,97,余数为1,余数为6,,余数为0,16,6,商为0,即,A,0,=1,即,A,1,=6,结束,最后结果为,(97),10,=(

17、A,1,A,0,),16,=(61),16,2)十进制小数转换成十六进制小数,方法:乘16取整法。,具体做法为:用16乘以十进制小数,得到一个整数和一个小数部分;再用16乘以小数部分,又得到一个整数和一个小数部分;继续这一过程,直到余下的小数部分为0或满足精度要求为止。最后将每次得到的整数部分(必定是小于,F,的数)按先后顺序从左到右排列即得到所对应的十六进制小数。,【,例1-9,】将十进制小数0.6875转换成十六进制小数。其过程如下:,0.6875,16,11.0000 整数部分为11,即,A,1,=B,0.0000,余下的小数部分为0,结束,最后结果为,(0.6875),10,=(0.

18、A,-1,),16,=(0.B),16,3)十六进制数转换成十进制数,方法:按位权展开后相加。,【,例1-10,】将(61.,B),16,转换成十进制数。其过程如下:,(61.,B),16,=616,1,+116,0,+B16,1,=96+1+1116,1,=97+0.6875,=97.6875,最后结果为,(61.,B),16,=(97.6875),10,4.,二进制数与八进制数、十六进制数之间的转换,因为2,3,=8,所以每三位二进制数对应一位八进制数;同理,2,4,=16,所以每四位二进制数对应一位十六进制数。,表1-1列出了十进制、二进制、八进制和十六进制最基本的数字对应关系。这些对

19、应关系在后面的二进制、八进制和十六进制的相互转换中要经常用到。,表,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)二进制数转换成八进制数,从小数点所在位置分别向左向右每三位一组进行划分

20、若小数点左侧的位数不是3的整数倍,在数的最左侧补零;若小数点右侧的位数不是3的整数倍,在数的最右侧补零。然后参照表1-1,将每三位二进制数转换成对应的一位八进制数,即为二进制数对应的八进制数。,【,例1-11,】将(11110.11),2,转换为八进制数。其过程如下:,011110.110,3 6.6,所以 (11110.11),2,=(36.6),8,2)八进制数转换成二进制数,方法:参照表1-1,将每一位八进制数转换成对应的三位二进制数,即为八进制数对应的二进制数。,【,例1-12,】将(35.6),8,转换为二进制数。其过程如下:,35.6,011101.110,所以 (35.6),8

21、11101.11),2,3)二进制数转换成十六进制数,从小数点所在位置分别向左向右每四位一组进行划分。若小数点左侧的位数不是4的整数倍,在数的最左侧补零;若小数点右侧的位数不是4的整数倍,在数的最右侧补零。然后参照表1-1,将每四位二进制数转换成对应的一位十六进制数,即为二进制数对应的十六进制数。,【,例1-13,】将(11110.11),2,转换为十六进制数。其过程如下:,00011110.1100,1,E.C,所以 (11110.11),2,=(1,E.C),16,4)十六进制数转换成二进制数,方法:参照表1-1,将每一位十六进制数转换成对应的四位二进制数,即为十六进制数对应的二进制

22、数。,【,例1-14,】将(,EF.C),16,转换为二进制数。其过程如下:,E F .C,1110 1111 .1100,所以 (,EF.C),16,=(11101111.11),2,由以上方法可以看出,(25),10,=(11001),2,=(19),16,=(31),8,,(0.5),10,=(0.1),2,=(0.8),16,=(0.4),8,。在计算机里,通常用数字后面跟一个英文字母来表示该数的数制。十进制数一般用,D(Decimal)、,二进制数用,B(Binary)、,八进制数用,O(Octal)、,十六进制数用,H(Hexadecimal),来表示。由于英文字母,O,容易和零误

23、会,所以也可以用,Q,来表示八进制。另外,计算机操作中一般默认使用十进制,所以十进制数可以不标进制。,例如,25,D=11001B=19H=31Q,0.5D=0.1B=0.8H=0.4Q。,当然,也可以用这些字母的小写形式来表示数制。例如,25,d=11001b=19h=31q,0.5d=0.1b=0.8h=0.4q。,本书约定采用大写字母形式。,八进制数和十六进制数主要用来简化二进制数的书写,因为具有2,3,=8,2,4,=16的关系,故使用八进制数和十六进制数表示的二进制数较短,便于记忆。,IBMPC,机中主要使用十六进制数表示二进制数和编码,所以必须十分熟悉二进制数与十六进制数的对应关系

24、1.3,计算机中数与字符的表示方法,1.3.1,数值数据的编码及其运算,1.,二进制数的编码及运算,我们很容易想到,数据的正负号可用一位二进制的0和1两个状态来表示,这样,二进制数值数据在计算机中就能方便表示了。为了尽可能地简化对二进制数值数据进行算术运算用到的规则,机器将二进制数值数据进行编码表示。,常用的编码有原码、反码和补码。由于补码编码有许多优点,大多数微机采用了补码编码,所以我们只介绍补码编码表示法。,为了讨论方便,有必要引入两个概念:机器数和机器数的真值。,机器数:带符号的二进制数值数据在计算机内部的编码。,真值:机器数所代表的实际值。,一般机器数的最高有效位用来表示数的正负符

25、号,0表示正数,1表示负数。,1)二进制数补码编码,补码编码的方法如下:,设真值为,X,,机器字长为,n,位,则当,X0,时,,X,补,的最高位填0,其余,n-1,位填,X,的各数值位的位值,即采用符号绝对值表示。例如,,n=8,时,,+0,补,=0 0000000,+1,补,=0 0000001,+127,补,=0 1111111,结论:二进制正数的补码就是机器数本身。,当,X0,时,,X,补,=2,n,-|X|(MOD 2,n,)。,例如,,n=8,时,,0,补,=1000000000,=100000000,=00000000(,MOD 2,8,),1,补,=1 1111111,127,补

26、1 0000001,结论:二进制负数的补码就是机器数符号位保持不变,其余位取反码后末位加1。,求负数的补码有一种更简便的方法:当,X0,时,,X,补,的最高位填1,其余,n1,位填,X,的各数值位按位取反(0变1,1变0)后的数值,再在末位加1。,注意:,(1),在补码表示法中,0只有一种表示,即000000。,(2)对于10000000这个补码编码,其真值被定义为128。,【,例1-15,】机器字长,n=8,位,,X=+48D,,求,X,补,。,将+48,D,转换为二进制:+110000,B。,因为机器字长是8位,其中符号占了1位,所以数值只占7位。将+110000,B,写成+01100

27、00,B,+48,补,=0 0110000,B,,写成十六进制为30,H,,即+48,补,=30,H。,【,例1-16,】机器字长,n=8,位,,X=48D,,求,X,补,。,将48,D,转换为二进制:110000,B。,因为机器字长是8位,其中符号占了1位,所以数,值只占7位。将110000,B,写成0110000,B。,再将数值位0110000,B,按位求反后为1001111,B,,末位加1后为1010000,B。,所以,48,补,=1 1010000,B,,写成十六进制为0,D0H,,即,48,补,=0,D0H。,【,例1-17,】机器字长,n=16,位,,X=+48D,,求,X,补,。

28、将+48,D,转换为二进制:+110000,B。,因为机器字长是16位,其中符号占了1位,所以数值只占15位。将+110000,B,写成+000000000110000,B,+48,补,=0000000000110000,B,,写成十六进制为0030,H,,即+48,=0030,H。,【,例1-18,】机器字长,n=16,位,,X=48D,,求,X,补,。,将48,D,转换为二进制:110000,B。,因为机器字长是16位,其中符号占了1位,所以数值只占15位。将110000,B,写成000000000110000,B。1000000000110000B,按位求反后为1 111 1111 1

29、100 1111,B,,末位加1后为1 111 1111 1101 0000,B。,所以,48,补,=111111111101 0000,B,,写成十六进制为0,FFD0H,,即48,补,=0,FFD0H。,注意:汇编语言中,为了区别指令码和名称,规定,AF,开始的数据前面加零。,由此可看出,补码数要扩展时,正数是在符号的前面补0,负数是在符号的前面补1。也就是说,补码数扩展实际上是符号扩展。,已知补码求真值的方法是:当机器数的最高位(符号位)为0时,表示真值是正数,其值等于其余,n1,位的值;当机器数的最高位(符号位)为1时,表示真值是负数,其值等于其余,n1,位按位取反末位加1的值。,例如

30、若,X,补,=0 1111111,则,X=(+1111111),2,=(+127),10,;,若,X,补,=1 1111111,则,X=(0000001),2,=(1),10,。,下面,我们来讨论一下补码表示数的范围。,一般来说,如果机器字长为,n,位,则补码能表示的整数范围是:,2,n1,N2,n1,1,例如,当,n=8,时,128,N+127,,其二进制补码数范围如表1-2所示。,表,1-2,8,位二进制补码数范围,补码编码(机器数),十进制数(真值),0 1111111,+127,0 1111110,+126,0 0000010,+2,0 0000001,+1,0 0000000,0,

31、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,补,XY,补,=,X,补,+,Y,补,已知,Y,补,求,Y,补,的方法:将,Y,补,各位按位取反(包括符号位),末位加1。,【,例1-19,】二进制数补码的运算规则证明举例。,设,X1=+0001100X2=0001100,Y1=+0000101Y2=0000101,则,X1,补,=00001100,X2,补,=111

32、10100,Y1,补,=00000101 ,Y2,补,=11111011,计算,X1+Y1。,+0001100X1,+)+0000101Y1,+0010001X1+Y1,0 0001100X1,补,+)0 0000101,Y1,补,0 0010001,X1,补,+,Y1,补,因为,X1+Y1,补,=0 0010001,补,=,X1,补,+,Y1,补,所以,X1+Y1,补,=,X1,补,+,Y1,补,计算,X1Y1。,+0001100X1,1,-)+0000101Y1,+0000111X1Y1,0 0001100,X1,补,+)1 1111011,Y1,补,1 0 0000111,X1,补,+,

33、Y1,补,因为,X1Y1,补,=0 0000111,补,=,X1,补,+,Y1,补,所以,X1Y1,补,=,X1,补,+,Y1,补,计算,X2+Y2。,0001100X2,1,+)0000101Y2,0010001X2+Y2,1 1110100X2,补,+)1 1111011,Y2,补,11 1101111,X2,补,+,Y2,补,因为,X2+Y2,补,=11101111,补,=,X2,补,+,Y2,补,所以,X2+Y2,补,=,X2,补,+,Y2,补,计算,X2 Y2。,0001100X2,)0000101Y2,0000111X2Y2,1 1110100X2,补,+)0 0000101,Y2

34、补,1 1111001,X2,补,+,Y2,补,因为,X2Y2,补,=1 1111001,补,=,X2,补,+,Y2,补,所以,X2Y2,补,=,X2,补,+,Y2,补,由此可看出,计算机引入了补码编码后,带来了以下几个优点:,减法转化成了加法:这样大大简化了运算器硬件电路的设计,加减法可用同一硬件电路进行处理。,运算时,符号位与数值位同等对待,都按二进制数参加运算;符号位产生的进位丢掉不管,其结果是正确的。这大大简化了运算规则。,运用以上两个规则时,要注意两点:,(1)公式成立有个前提条件,就是运算结果不能超出机器数所能表示的范围,否则运算结果不正确,按“溢出”处理。例如,如果机器字长为8

35、位,则128,N+127,,通过计算(+64)+(+65)来说明这个问题。,+64,+)+65,+129,0 1000000,+)0 1000001,1 0000001127,为什么(+64)+(+65)其结果值会是127?这个结果显然是错误的。究其原因是(+64)+(+65)=+129+127,超出了字长为8位所能表示的最大值,产生了“溢出”,所以结果值出错。,再看(125)+(10)。,125,1,+)10,135,1 0000011,+)1 1110110,10 1111001+121,显然,计算结果是错误的。其原因是:(125)+(10)=135128,超出了字长为8位所能表示的最小值

36、产生了“溢出”,所以结果出错。,(2)采用补码运算后,结果也是补码,欲得运算结果的真值,还需进行转换。,2.,无符号整数的编码及运算规则,在某些情况下,计算机要处理的数据全是正数,此时机器数再保留符号位就没有意义了。这时,我们将机器数最高有效位也作为数值位处理,也就是说,假设机器字长为,n,位,则有符号整数的编码格式如图1.1所示。,图1.1 有符号整数编码格式,无符号整数的编码格式如图1.2所示。,图1.2 无符号整数编码格式,无符号整数的表示范围为:0,N2,n-1,例如,当,n=8,位时,表示范围为:0,N255;,当,n=16,位时,表示范围为:0,N65535。,在计算机中最常见的

37、无符号整数是地址。另外,双字长数据的低位字也是无符号整数。,要注意的是,计算机本身不论是对有符号数还是无符号数,总是按照补码的运算规则做运算。,例如,机器做这样一个运算:,1 0 0 0 1 0 1 0,+)0 0 0 0 0 1 1 1,1 0 0 1 0 0 0 1,可以把它看作是两个无符号整数相加:,1 3 8,+)7,1 4 5,也可以把它看作是两个有符号整数相加:,1 1 8,+)7,1 1 1,也就是说,不论我们把二进制数据解释成有符号数还是无符号数,其结果都是正确的。因此,机器采用补码编码以后,不必针对无符号数和有符号数设计两套不同的电路,无符号数和有符号数的运算是兼容的。这也是

38、采用补码后带来的一大优点。,3.,十进制数的编码及运算,人们在日常生活中习惯使用十进制数,而在计算机内,采用二进制数表示和处理数据更方便。因此,在往计算机里输入和输出数据时,要进行十二和二十的进制转换。但是,在某些特定的应用领域中,如商业统计,数据的运算很简单,但数据的输入、输出量很大,这样,数制转换所占的时间比例很大。从提高计算机的运行效率考虑,可以在计算机内部直接用十进制数表示和处理数据。以下介绍在计算机内部十进制数的编码方法及运算方法。,十进制数每一个数位的基为10,但到了计算机内部,必须用基2码对每个十进制数位进行编码,所需要的最少的基码的位数为,lb10(log,2,10),,取整数

39、为4。4位基2码有16种不同的组合,怎样从中选择出10个组合来表示十进制数位的09,有非常多的方案。最常见的是8421,BCD,码。8421,BCD,码是指4个基2码的位权从高到低分别为8、4、2、1,选择的是0000,0001,0010,1001这10种组合,用来表示09这10个数位,见表1-3所示。,表,1-3 8421,BCD,码表,十进制数码,0,1,2,3,4,5,6,7,8,9,8421码,0000,0001,0010,0011,0100,0101,0110,0111,1000,1001,这种编码的特点是:4个基2码之间满足二进制计数规则。而十进制数位之间是十进制计数规则,因此,这

40、种编码实质上是以二进制编码的十进制数(,Binary Coded Decimal),,因此也简称,BCD,码或二十进制码。,【,例1-20,】将(67.9),10,转换成,BCD,码。其过程如下:,67.9,01100111.1001,所以,(67.9),10,=(01100111.1001),BCD,【,例1-21,】将(10010110.0110),BCD,转换成十进制数。其过程如下:,10010110.0110,96.6,所以,(10010110.0110),BCD,=(96.6),10,BCD,码的运算规则:,BCD,码是十进制数,而运算器对数据做加减运算时,都是按二进制运算规则进行处

41、理的。这样,当将,BCD,码传送给运算器进行运算时,其结果需要修正。,修正规则如下:,当两个,BCD,码相加,如果和等于或小于1001,即9,H,,则不需要修正;如果相加之和在1010到1111即0,AH0FH,之间,则需加6,H,进行修正;如果相加时本位产生了进位,则需加6,H,加以修正。这样做的原因是:机器按二进制相加,所以四位二进制相加时,是按“逢十六进一”的原则进行运算的,而实质上是两个十进制数相加,应该按“逢十进一”的原则相加,16与10相差6,所以当和超过9或有进位时,都要加6进行修正。下面举3个例子来说明。,【,例1-22,】计算1+8。,如果将1和8送给机器进行加法运算,运算过

42、程为,0 0 0 1,+)1 0 0 0,1 0 0 1,结果是1001,即十进制的9,1+8=9正确。,【,例1-23,】计算5+7。,0 1 0 1,+)0 1 1 1,1 1 0 0 结果大于9,+)0 1 1 0 加6修正,进位 1 0 0 1 0,结果是0010,即十进制的2,还产生了进位。即5+7=12,结论正确。,【,例1-24,】计算9+9。,1 0 0 1,+)1 0 0 1,1 0 0 1 0,+0 1 1 0,进位 1 1 0 0 0,结果是1000,即十进制的8,还产生进位,故加6修正。即9+9=18,结论正确。,当两个,BCD,码相减,如果差等于或小于1001,不需要

43、修正;如果相减时本位产生了借位,则应减6,H,加以修正。原因是:如果有借位,机器将这个借位当十六看待,而实际上应该当十看待,因此,应该将差值再减6,H,才是,BCD,码的正确结果值。下面举两个例子说明。,【,例1-25,】计算97。,1 0 0 1,)0 1 1 1,0 0 1 0,结果值是0010,即十进制的2。97=2,结论正确。,【,例1-26,】计算79。,发生借位,1 0 1 1 1,)1 0 0 1,1 1 1 0,)0 1 1 0 减6修正,1 0 0 0,结果值是1000,即十进制的8,有借位。,即79=2,结论正确。(8是2以10为模的补码。在机器中,负数都以补码形式表示。)

44、在计算机中,BCD,码有两种格式:压缩,BCD,码和非压缩,BCD,码。,(1)非压缩,BCD,码:1个字节(8位二进制)中仅表示一位,BCD,数,例如,(00000110),BCD,=6。,(2),压缩,BCD,码:1个字节中仅表示两位,BCD,数,例如,(01100110),BCD,=66。,1.3.2,非数值数据的二进制编码,现代计算机不仅处理数值数据,而且还要处理大量的非数值数据,像英文字母、标点符号、专用符号、汉字等等。前面已说过,不论什么数据,都必须用基2码编码后才能存储、传送及处理,非数值数据也不例外。下面我们分别介绍常见的非数值数据的二进制编码方法。,1.,字符编码,使用最多

45、最普遍的是,ASCII,字符编码,即美国标准信息交换代码(,American Standard Code for Information,Interchance,),,具体见表1-4。,表,1-4,ASCII,字符编码,B,6,B,5,B,4,B,3,B,2,B,1,B,0,0 0 0,(0),0 0 1,(1),0 1 0,(2),0 1 1,(3),1 0 0,(4),1 0 1,(5),1 1 0,(6),1 1 1,(7),0 0 0 0(0),NUL,DLE,SP,0,P,p,0 0 0 1(1),SOH,DC1,!,1,A,Q,a,q,0 0 1 0(2),STX,DC2,2,B

46、R,b,r,0 0 1 1(3),ETX,DC3,#,3,C,S,c,s,0 1 0 0(4),EOT,DC4,$,4,D,T,d,t,0 1 0 1(5),ENQ,NAK,%,5,E,U,e,u,0 1 1 0(6),ACK,SYN,&,6,F,V,f,v,0 1 1 1(7),BEL,ETB,7,G,W,g,w,1 0 0 0(8),BS,CAN,(,8,H,X,h,x,1 0 0 1(9),HT,EM,),9,I,Y,i,y,1 0 1 0(,A),LF,SUB,*,:,J,Z,j,z,1 0 1 1(,B),VT,ESC,+,;,K,k,1 1 0 0(,C),FF,FS,N,n,1

47、 1 1 1(,F),SI,US,/,?,O,o,DEL,ASCII,码表有以下几个特点:,(1)每个字符用7位基2码表示,其排列次序为,B,6,B,5,B,4,B,3,B,2,B,1,B,0,。,实际上,在计算机内部,每个字符是用8位(即一个字节)表示的。一般情况下,将最高位置为“0”,即,B,7,为“0”。需要奇偶校验时,最高位用做校验位。,(2),ASCII,码共编码了128个字符,它们分别是:,32,个控制字符,主要用于通信中的通信控制或对计算机设备的功能控制,编码值为031(十进制)。,间隔字符(也称空格字符),SP,,编码值为20,H。,删除控制码,DEL,,编码值为7,FH。,9

48、4,个可印刷字符(或称有形字符)。这94个可印刷字符编码有如下规律:,字符09这10个数字符的高3位编码都为011,低4位为00001001,屏蔽掉高3位的值,低4位正好是数据09的二进制形式。这样编码的好处是既满足正常的数值排序,关系,又有利于,ASCII,码与二进制码之间的转换。英文字母的编码值满足,AZ,或,az,正常的字母排序关系。另外,大小写英文字母编码仅是,B,5,位值不相同,,B,5,为1是小写字母,这样编码有利于大小写字母之间的编码转换。,2,汉字的编码,计算机在处理汉字时,汉字字符也必须用基2码编码表示,一般汉字编码采用两个字节即16位二进制数。但由于汉字的特殊性,在汉字的输

49、入、存储、输出过程中所使用的汉字编码是不一样的,输入时有输入编码,存储时有汉字机内码,输出时有汉字字形码。,1)汉字输入编码,为了能把汉字这种象形文字通过西文标准键盘输入到计算机内,就必须对汉字用键盘已有的字符设计编码,这种编码称为汉字的输入编码。,同一汉字有不同的输入编码,这取决于用户采用哪种输入法。不同的输入法对同一汉字有不同的编码方案。常见的有数字码、音码、形码及混合码。,2)汉字机内码,汉字机内码也称汉字内部码,简称内码。它是机器存储和处理汉字时采用的统一编码。每个汉字的机内码是惟一的,用两个字节表示。为了避免与西文字符的,ASCII,码之间产生二义性,汉字机内码中两个字节的最高位均规

50、定为“1”。,3)汉字字形码,汉字字形码也叫汉字字模点阵码,是汉字输出时的字形点阵代码,是一串基2码编码。,3.,逻辑数据的编码,逻辑数据是用来表示“是”与“否”,或称“真”与“假”两个状态的数据。在计算机中,用“1”表示“真”或“是”,用“0”表示“假”或“否”。需要注意的是,这里的1和0没有数值和大小概念,只有逻辑意义。,对逻辑数据只能进行逻辑运算,例如逻辑非、逻辑加、逻辑乘等基本逻辑运算和由基本逻辑运算构成的各种组合逻辑运算,运算结果仍是逻辑数据。下面介绍一下基本逻辑运算的运算规则。,1),“,与,”,运算(,AND),“,与”运算又称逻辑乘,用符号或表示。其运算规则为,00=0,01=

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服