进制转换及数据类型
数据的表示方法:
1. 二进制数:01                        逢二进一:0+0=0,0+1=1,1+0=1,1+1=(1)0
2. 八进制数:01234567                逢八进一:1+5=6,5+6=13
3. 十进制数:0123456789                逢十进一:1+5=6,5+6=11
4. 十六进制数:0123456789ABCDEF    逢十六进一:5+6=B,A+B=15
1.0各种进制及其字符表示
进制
字符
例子
备注
二进制
B/Y
1010B1011B
字符YOT是宏汇编MASM系统所增加的进制表示符。
八进制
Q/O
1234O311O
十进制
D/T
1234D512D
十六进制
H
1234H1011H
1.1  4位二进制数对应的十进制和十六进制数
二进制
十进制
十六进制
0000
0
0
0001
1
1
0010
2
2
0011
3
3
0100
4
4
0101
5
5
0110
6
6
0111
7
7
二进制
十进制
十六进制
1000
8
8
1001
9
9
1010
10
A
1011
11
B
1100
12
C
1101
13
D
1110
14
E
1111
15
F

进制的转换
非十进制数转换成十进制数:
方法:首先把非十进制数写成按权展开的多项式,然后按十进制数的计数规则求和。
例:2A.8H=(?)D
解:2A.8H=2*161+A*160+8*16-1
    =32+10+0.5
    =42.5D
例:165.2O=(?)D
解:165.2O=1*82+6*81+5*80+2*8-1
    =64+48+5*0.25
    =117.25D
例:10101.11B=(?)D
解:10101.11B=1*24+0*23+1*22+0*21+1*20+1*2-1+1*2-2
              =16+0+4+0+1+0.5+0.25
              =21.75D
十进制数转换其它进制数:
1.整数转换
方法:整数转换,采用基数连除法。把十进制整数N转换成R进制数的步骤:
1) 将N除以R,记下所得的商和余数
2) 将上一步所得的商再除以R,记下所得商和余数
3) 重复做第2步直到商为0
4) 将各个余数转换成R进制的数码,并按照和运算过程相反的顺序把各个余数排列起来,即为R进制数。
例:427D=(?)H
解:
    427D=1ABH
例:427D=(?)O
解:
    427D=653O
例:11D=(?)B
解:
11D=1011B
2.纯小数转换
纯小数转换,采用基数连乘法。把十进制的纯小数M转换成R进制数的步骤:
1) 将M乘以R,记下整数部分
2) 将上一步乘积中的小数部分再乘以R,记下整数部分
3) 重复做第2步,直到小数部分为0或者满足精度要求为止
4) 将各步求得的整数转换成R进制的数码,并按照和运算过程相同的顺序排列起来,即为所求的R进制数。
例:0.85D=(?)H
解:0.85*16=13.6    ……13=D
    0.6*16=9.6    ……9=9
    0.6*16=9.6    ……9=9
       
    0.85D=(0.D99)D
例:0.35D=(?)O
    0.35*8=2.8    ……2
    0.8*8=6.4    ……6
    0.4*8=3.2    ……3
    0.2*8=1.6    ……1
       
    0.35D=0.2631)D
3.即有整数又有小数
若十进制数有整数也有小数,则整数和小数分别转换,再求其和即可。
例:11.375D=(?)B
解:
    11D=1011B
0.375*2=0.75    ……0
0.75*2=1.5    ……1
0.5*2=1.0    ……1
0.375D=0.011B
故:11.375D=1011.011B
二进制数转换成八进制数或十六进制数
方法:以二进制数的小数点为起点,分别向左、向右每三位(或四位)分一组。对于小数部分,最低位一组不足三位(或四位)时,必须在有效位右边补0,使其足位。然后把每一组二进制数转换成八进制(或十六进制)数,并保持原排序。对于整数部分,最高位一组不足位时,可在有效位的左边补0,也可不补。
1011011111.10011B=(?)O=(?)H
解:1  011  011  111 . 100  110
    1  3    3    7  4    6
=1337.46O
10  1101  1111 . 1001  1000
    2    D    F    9    8
  =2DF.98H
八进制数或十六进制数转换成二进制数
八进制(或十六进制)数转换成二进制数时,只要把八进制(或十六进制)数的每一位数码分别转换成三位(或四位)的二进制数,并保持原排序即可。整数最高位一组左边的0,及小数最低位一组右边的0可以省略。
例:36.24O=(?)B
    3    6    .    2    4
011    110  .  010  100
  =11110.0101B
例:3DB.46H=(?)B
3    D      B    .    4      6
0011 1101  1011  .  0100  0110
=1111011011.0100011B
基本的数据类型
1、字节(DBdefine byte
一个字节有8位二进制组成,其最高位是第7位,最低位是第0位。在表示有符号数时,最高位就是符号位。
00001001    =    9
10001011    =    -11        有符号
            =  139        无符号
通常情况下,存储器按字节编址,读写存储器的最小信息单位就是一个字节。
Var_byte    db    10011101B
Var_bytes    db    41H,42D,61H
2、字(DWdefine word
由2个字节组成一个字,其最高位是第15位,最低位是第0位。高8位称为高字节,低8位称为低字节。
00101010 00111100
Var_word        dw    4512
3、双字(DDdefine doubleword
二进制与十六进制的转换表
用2个字(4个字节)来组成一个双字,其高16位称为高字,低16位称为低字。
双字有较大的数据表示范围,它通常是为了满足数据的表示范围而选用的数据类型,也可用于存储远指针。
    Var_dword    dd    0F99728H  2H  0ABH
4、四字(DQ
由4个字(8个字节)组成一个四字类型,它总共有64个二进制位,当然,也就有更大的数据表示范围,但在汇编语言中很少使用该数据类型。
5、十字节(DT
由10个字节组成一个十字节类型,它总共有80个二进制位。
6、字符串(DB
字符串是由若干个字节组成的,字节数不定,通常每个字节存储一个字符。该数据形式是汇编语言程序中经常使用的另一种数据形式。
    Char_ABC    db    ‘A’,’B’,’C’
    String_ABC    db    ‘ABC’

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。