《微机原理与汇编语言-1-数据表示》由会员分享,可在线阅读,更多相关《微机原理与汇编语言-1-数据表示(40页珍藏版)》请在金锄头文库上搜索。
1、微机原理与汇编语言程序设计计算机中数和字符的表示1. 1. 概述概述2. 2. 无符号数的表示无符号数的表示3. 3. 有符号数的表示有符号数的表示4. 4. 计算机中的二进制编码计算机中的二进制编码1微机原理与汇编语言程序设计一、计算机中数和字符的存放 数据存放于存储器或寄存器中。 数据按字长一般分为:8位(字节BYTE,简写为B)16位(字WORD)32位(双字DWORD)64位、128位、256位概述2微机原理与汇编语言程序设计二、数制及其转换1、数制十进制(Decimal)后缀加“D”例如:25D或25(后缀可略)二进制(Binary)后缀加“B”例如:11010001B八进制(Oct
2、onary)后缀加“O”或“Q”例如:76Q十六进制(Hexadecimal)后缀加“H”例如:0F6H(字符开头的数前需加“0”) 3微机原理与汇编语言程序设计2、数制之间的转换R进制转换为十进制例如:10101101B=27+25+23+22+20=1794F.8H=4*161+15*160+8*16-1=79.5 十进制转换为十进制转换为R R进制进制整数部分:连续除以整数部分:连续除以R R取余法取余法小数部分:连续乘以小数部分:连续乘以R R取整法取整法 二二进进制与十六制与十六进进制制间间的的转换转换一个十六一个十六进进制数制数对应对应 四位二四位二进进制数制数例如:6E3.C2H
3、=0110 1110 0011.1100 0010B110 0111.1110 10B=67.E8H4微机原理与汇编语言程序设计加法运算:11010011 + 10001100 1 01011111 进位 减法运算 :01110011 -110100101 10100001借位三、二进制数的运算1、二进制数的算术运算特点:按一定字长进行,运算结果超过字长 则产生进位、借位或自动丢失。5微机原理与汇编语言程序设计1)逻辑乘(与)AND 11010001 AND 11100011110000012)逻辑加(或)OR 11010001OR 1110001111110011 2、二进制数的逻辑运算 特
4、点:按位进行,无进位或借位 6微机原理与汇编语言程序设计4)逻辑异或XOR 11010001XOR 11100101001101003)逻辑反(非)NOT NOT 11010011=001011007微机原理与汇编语言程序设计四、关于模(MOD)的概念简单地说,模是能表示的最大数再加1。例如,8位寄存器能表示的最大数是 11111111B=255其模为28=256(MOD 28)计算机中的运算都是在一定模值下进行的,例:200+85=29(MOD 28) 9+4=1(MOD 12)8微机原理与汇编语言程序设计计算机中数和字符的表示1. 1. 概述概述2. 2. 无符号数的表示无符号数的表示3.
5、 3. 有符号数的表示有符号数的表示4. 4. 计算机中的二进制编码计算机中的二进制编码9微机原理与汇编语言程序设计当n=8时,可表示的无符号数的范围为0255,当 n=16时,可表示的无符号数的范围为 065535。 在计算机中最常用的无符号整数是表示地址的数 无符号数的表示机器字长的所有位都参与表示数值 。若计算机的字长为n位,则n位无符 号数可表示的数X的范围是0X2n110微机原理与汇编语言程序设计计算机中数和字符的表示1. 1. 概述概述2. 2. 无符号数的表示无符号数的表示3. 3. 有符号数的表示有符号数的表示4. 4. 计算机中的二进制编码计算机中的二进制编码11微机原理与汇
6、编语言程序设计1机器数与真值计算机中的数是用二进制表示的,数的符号也 是用二进制表示的。通常一个数的最高位为符号位 ,为0表示正数,为1表示负数。若字长为8位的计 算机,则D7为符号位,D6D0为数值位。 D7 D6 D5 D4 D3 D2 D1 D0符号位 数值位 有符号数的表示12微机原理与汇编语言程序设计例:X=65在机器中表示为:X=01000001B 这种符号数码化的数称为机器数。机器数所代表的实 际数值称为真值。若计算机的字长为n位,则n位有符号数可表示的数X的范 围是-2n-1n-1 X +(2n-1n-11)当n=8时,可表示的有符号数的范围为-128127,当 n=16时,可
7、表示的有符号数的范围为-3276832767。 机器数可以用不同的码制来表示,常用的有原码和补 码表示法。65+13微机原理与汇编语言程序设计2原码表示法最高位为符号位, 0表示正数,1表示负数, 其余各位为数值位,这种表示法称为原码表示法。例: 若X= 97 则X原 =01100001B若X= 97 则X原 =11100001B原码表示数0有两种表示形式:0原 =00000000B0原 =10000000B注意:n位原码可表示 的数X的范围是:2n-1+1X2n-1-114微机原理与汇编语言程序设计3反码表示法反码表示法中,正数的反码和原码相同;负数的反 码可由其原码除符号位,保持不变外,其
8、余各位按位取反,即0变1、1变0 。例:若X= 45, X反=00101101BX=-45, X反=11010010B15微机原理与汇编语言程序设计4. 补码表示法补码表示法中,正数的补码和原码相同;负数的补码可由其原码除符号位,保持不变外,其余各位按位取反,再在最末位加1而形成。例:假设机器字长为8位,则X原=01100001B 则 97补=01100001B X原=11100001B 则 97补=10011111B 10011110B+116微机原理与汇编语言程序设计补码具有以下特点: 0补=0补=00000000B n位二进制补码所能表示的数值范围为:2n-1X2n-11若n=8,则8位
9、二进制补码所能表示的数值范围为128127。对于一个用补码表示的负数,如果将X补再求一次补,即将X补除符号位外取反并在最末位加1就可得到 X原。用下式表示为:X补补=X原 -15 补补= 10001111 B补补= 11110001B补 = 10001111 B = -15原注意:10000000补=-128原= 10000000 B17微机原理与汇编语言程序设计二进制数码 无符号数 原 码 反 码 补 码00000000 0 +0 +0 +0 00000001 1 +1 +1 +1 00000010 2 +2 +2 +2 : 01111110 126 +126 +126 +126 01111
10、111 127 +127 +127 +127 10000000 128 -0 -127 -128 10000001 129 -1 -126 -127 10000010 130 -2 -125 -126 : 11111110 254 -126 -1 -2 11111111 255 -127 -0 -1 18微机原理与汇编语言程序设计5. 补码的加减运算(1)补码的加法运算规则是:XY补= X 补Y补该式表明,当有符号的两个数采用补码形式 表示时,进行加法运算可以把符号位和数值位一 起进行运算(若符号位有进位,则丢掉),结果 为两数之和的补码形式。19微机原理与汇编语言程序设计例:用补码进行下列运
11、算:(33)(15);(33)(15)解:20微机原理与汇编语言程序设计(2)补码的减法运算规则是:XY补=X补Y补该式表明,求XY补可以用X补与 Y补相 加来实现Y补是对减数进行求补操作。一般称已知 Y补求得 Y补的过程叫求补。21微机原理与汇编语言程序设计求补运算(NEG)已知+X补求-X补 规则:全部位(含符号位)按位取反后再加1例: 已知+15补=00001111B 则 -15补=11110000B+1=11110001B 或:0- +15补=0-00001111B=11110001B22微机原理与汇编语言程序设计解: 若X=33,Y=15X补=00100001B Y补=0000111
12、1B Y补=11110001B 00100001B X 补 + 11110001B Y补 自然丢失 1 00010010B 18 补 例:用补码进行XY运算23微机原理与汇编语言程序设计若 X=33 Y=15则 33补=11011111B 15补=11110001B15补=00001111B 11011111B 33 补 + 00001111B 15补 11101110 18补 24微机原理与汇编语言程序设计补码的作用:1、引入补码后,将减法运算转化为易于实现的加法运算 ,且符号位也当作数据相加,从而可简化运算器的结 构,提高运算速度。因此,在微型计算机中,有符号 数通常都用补码表示,得到的是补码表示的结果。2、当字长由8位扩展到16位时,对补码,正数的符号扩展 应该在前面补0,而负数的符号扩展应该在前面补1。例:机器字长为8位, 46补=00101110B, 46=11010010B,扩展到16位46补=0000 0000 0010 1110B=002EH 46补=1111 1111 1101 0010B=FFD2H25微机原理与汇编语言程序设计6. 有符号数运算时的溢出问题当两个有符号数进行加减运算时,如果运算 结果超出可表示的有符号数的范围时,就会发生 溢出,使计算结果出错。显然,只有两个同符号 数相加或两个异号数相减时,才会产生溢出