《汇编语言程序设计第02章运算基础.ppt》由会员分享,可在线阅读,更多相关《汇编语言程序设计第02章运算基础.ppt(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、汇编语言程序设计齐志儒 高福祥 主编东北大学出版社第二章第二章 运算基础运算基础2.1 进位计数制2.2 数制之间的转换2.3 二进制编码2.4 带符号数的机内表示2.5 二进制运算2.1 进位计数制进位计数制l按 进 位的方法进行计数,称为进位计数制.l(细节,略)2.2 数制之间的转换数制之间的转换l二进制与十进制之间的转换l二进制与十六进制之间的转换l十六进制与十进制之间的转换2.3 二进制编码二进制编码l二进制编码的十进制数(BCD,Binary Coded Decimal)l字符编码BCD码字符编码字符编码lASCII码l国标码(区位码、异形国标码)lUnicode 编码(UCS2)
2、ASCII码表码表01632486480960123456789ABCDEF00空0Pp a 11!1AQaq 22“2BRbr 33#3CScs 44$4DTdt 55%5EUeua N 66&6FVfv a 777GWgw o 88(8HXhx 99)9IYiy 10A*:JZjz 11B+;Kk 1/2 12C,Nn 112128 144 160176 192208 224 240十进制十六进制空格空格n2BLANK中华人民共和国国家标准中华人民共和国国家标准信息交换用汉字编码字符集(基本集)信息交换用汉字编码字符集(基本集)GB 2312-80l双字节表示,分为区码和位码l包括202个
3、一般符号,60个序号,22个数字,52个拉丁字母,169个日文假名,48个希腊字母,56个俄文字母,26个汉语拼音符号;37个汉语注音字母,6763个汉字l6763个汉字分为两级。第一级汉字3755个按汉语拼音顺序排列;第二级汉字3008个按笔画顺序排列GB 2312-80(一般符号)(一般符号)GB 2312-80(汉字)(汉字)区位码、国标码与机内码区位码、国标码与机内码以汉字“爱”为例:区位码:1614国标码:100E异形国标码:B0AE(=国标码+A0A0)UnicodelUnicode 是一个16位的字符集,它包括了几乎所有常见的信息交换用的字符(英、法、德、中(简、繁)、朝鲜、日等
4、),其64K的编码空间有大约1/3尚未分配。l“A”的 Unicode 是4100 l“爱”的 Unicode 是3172l“愛”的 Unicode 是1B612.4 带符号数的机内表示带符号数的机内表示l机器数与真值l原码表示法l反码表示法l补码表示法l过余码表示法机器数与真值机器数与真值l 计算机在处理实际问题时遇到的带符数,数据的“+”号和“-”号在计算机内也是用二进制位表示,“0”表示正,“1”表示负。l例如:N1=+1011011 N2=-1011011l机内表示:N1=01011011 N2=11011011l定义:将已经数值化了的带符号数称为机器数,而把原来的数称为机器数的真值。
5、原码表示法原码表示法 数据的最高位用来表示符号,称为符号位,符号位为0表示正数,符号位为1表示负数,其余位为数值位,用数据的绝对值表示。举例:(1)X=+85,X原=01010101 (2)X=-85,X原=11010101 (3)对于零:0有两种表示形式 +0原=00000000 -0原=10000000反码表示法反码表示法 在反码表示中,仍用0表示正数,1表示负数。对于正数,其反码表示与其原码表示完全相同;对于负数,符号位为1,其余用数值的反码表示。举例:(1)X=+85,X反=01010101 (2)X=-85,X反=10101010 (3)对于零:0有两种表示形式 +0反=000000
6、00 -0反=11111111补码表示法补码表示法 在补码表示中,仍用0表示正数,1表示负数。对于正数,其补码表示与其原码表示完全相同;对于负数,符号位为1,其余各位按位取反加1。举例:(1)X=+85,X补=01010101 (2)X=-85,X补=10101011 (3)对于零:0只有一种表示形式 0补=00000000 过余码表示法过余码表示法 在过余码表示中,是将数据的真值直接 与一个过余量相加,结果就是其过余码表示。过余量通常为64、128、1024等。举例:(1)X=+85,X过余128=128+85=11010101(2)X=-85,X过余128=128-85=00101011(
7、3)对于零:只有一种表示形式 0过余128=128+0=100000002.5 二进制运算二进制运算l补码加减运算l逻辑运算两个正数相加:45 00101101(45的补码)+22 +00010110(22的补码)67 01000011(67的补码)2.5 二进制运算(补码加减)二进制运算(补码加减)正数加负数(负数绝对值小):45 00101101(45的补码)+(-22)+11101010(-22的补码)23 00010111(23的补码)负数加正数(负数绝对值大):(-45)11010011(-45的补码)+22 +00010110(22的补码)-23 11101001(-23的补码)两
8、个负数相加:(-45)11010011(-45的补码)(-22)+11101010(-22的补码)(-67)10111101(-67的补码)结论:结论:用补码表示的数据进行加减运算时可以不考虑符号位,直接运算,即与不带符号的数据的运算完全相同。该结论是否完全正确呢?请看下面的例子:2.5 二进制运算(补码加减)两个正数相加:126 01111110(126的补码)+4 +00000100(4的补码)130 10000010(-126的补码)为什么会出现错误的结果呢?溢出2.5 二进制运算二进制运算(溢出溢出)l运算结果超出了目标所能容纳的范围,称发生了溢出。l例如:8位所能表示的补码数据的范围是:-128+127。l同号相加,异号相减时才可能发生溢出。2.5 二进制运算二进制运算(逻辑运算逻辑运算)l与运算l或运算l异或运算l非运算