1
第一章 基 础 知 识
? 数制
? 数制之间的转换
? 运算
? 数和字符的表示
2
预备知识,
1K = 210 = 1024( Kilo)
1M = 1024K = 220 ( Mega)
1G = 1024M = 230 ( Giga)
1个二进制位,bit ( 比特)
8个二进制位,Byte ( 字节) 1Byte = 8bit
2个字节,Word ( 字)
1Word = 2Byte = 16bit
3
1,数制
数 制 基 数 数 码
二进制 Binary 2 0,1
八进制 Octal 8 0,1,2,3,4,5,6,7
十进制 Decimal 10 0,1,2,3,4,5,6,7,8,9
十六进制 Hexadecimal 16 0,1,2,3,4,5,6,7,8,9,
A,B,C,D,E,F
二进制, 基数为 2,逢二进一
11012 = 1× 2 3 + 1× 2 2 + 1× 2 0 = 1310
十六进制,基数为 16,逢十六进一
1001,0001,1000,0111
9 1 8 7
= 9 × 16 3 + 1 × 16 2 + 8 × 16 1 + 7 × 16 0
4
2,数制之间的转换
? 二进制 十六进制
? 十进制 二进制
? 十进制 十六进制
降幂法 除法
5
? 二进制 十六进制
0011 0101 1011 1111
? ? ? ?
3 5 B F
∴ 0011,0101,1011,1111B = 35BFH
A 1 9 C
? ? ? ?
1010 0001 1001 1100
∴ A19CH = 1010,0001,1001,1100B
6
1011B = 11D
降幂法 除法
例, 27D =? B
27 11 3 3 1
-? -? -? -? -?
16 8 4 2 1
1 1 0 1 1
∴ 27D = 11011B
? 二进制 十进制
7
? 十六进制 十进制
BF3CH = 11?163 +15?162 +3?161 +12?160
降幂法 除法
例, 399D =? H
399 143 15
-? -? -?
256 16 1
? ? ?
1 8 F
∴ 399D = 18FH
8
? 算术运算
二进制数,逢二进一 借一当二
加法规则 乘法规则
0 + 0 = 0 0 ? 0 = 0
0 + 1 = 1 0 ? 1 = 0
1 + 0 = 1 1 ? 0 = 0
1 + 1 = 0 ( 进位 1) 1 ? 1 = 1
3,运算(算术运算和逻辑运算)
9
0 5 C 3 H
3 D 2 5 H
4 2 E 8 H
+
3 D 2 5 H
0 5 C 3 H
3 7 6 2 H
- 1
- 1
十六进制数,逢十六进一 借一当十六
10
? 逻辑运算(按位操作)
,与,运算( AND), 或,运算( OR)
A B A?B A B A?B
0 0 0 0 0 0
0 1 0 0 1 1
1 0 0 1 0 1
1 1 1 1 1 1
,非, 运算 ( NOT)
,异或, 运算 ( XOR)
A ?A A B A?B
0 1 0 0 0
1 0 0 1 1
1 0 1
1 1 0
11
12
例, X = 00FFH Y = 5555H,Z = X?Y =?
X = 0000 0000 1111 1111 B
? Y = 0101 0101 0101 0101 B
Z = 0101 0101 1010 1010 B
? Z = 55AAH
13
4,数和字符的表示
? 数的表示
7 6 5 4 3 2 1 0
符号位 数值位
假设机器字长为 16位,
符号位 = 0 正数 数值位
= 1 负数
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
假设机器字长为 8位,
H.O.Byte L.O.Byte
H.O.Nibble L.O.Nibble
14
数的常用表示法 —— 原码 反码 补码
原码表示法,符号 + 绝对值
例,n = 8bit
[+3]原码 = 0 000,0011 = 03H
[- 3]原码 = 1 000,0011 = 83H
[+0]原码 = 0 000,0000 = 00H
[- 0]原码 = 1 000,0000 = 80H ? 0 的表示不唯一
反码表示法,正数的反码同原码,负数的反码数值位与原码相反
例,n = 8bit
[+5]反码 = 0 000,0101 = 05H
[- 5]反码 = 1 111,1010 = FAH
[+0]反码 = 0 000,0000 = 00H
[- 0]反码 = 1 111,1111 = FFH ? 0 的表示不唯一
15
例,机器字长 8位, [- 46]补码 =?
[46]补码 = 0 0 1 0 1 1 1 0
1 1 0 1 0 0 0 1
1 1 0 1 0 0 1 0 = D2H
机器字长 16位,[- 46]补码 = FFD2H
[+0]补码 = 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 = 00H = [- 0]补码
? 0 的表示唯一
按位求反
末位加一
按位求反
末位加一
补码 ( Two’s Complement) 表示法,
正数的补码,同原码
负数的补码,( 1) 写出与该负数相对应的正数的补码
( 2) 按位求反
( 3) 末位加一
16
十进制 二进制 十六进制 十进制 十六进制
n=8 n=16
+127 0111 1111 7F +32767 7FFF
+126 0111 1110 7E +32766 7FFE
,..,.,… …,.,
+2 0000 0010 02 +2 0002
+1 0000 0001 01 +1 0001
0 0000 0000 00 0 0000
-1 1111 1111 FF -1 FFFF
-2 1111 1110 FE -2 FFFE
,..,.,… …,.,
-126 1000 0010 82 -32766 8002
-127 1000 0001 81 -32767 8001
-128 1000 0000 80 -32768 8000
n 位二进制补码的表数范围,- 2 n-1 ? N ? 2 n-1 -
1
无符号整数的表数范围,0 ? N ? 2 n - 1
17
补码的加法和减法,
求补运算 ?,对一个二进制数按位求反, 末位加一
[ X ]补码 ? [ - X ]补码 ? [ X ]补码
加法规则,[ X + Y ]补码 = [ X ]补码 + [ Y ]补码
减法规则,[ X – Y ]补码 = [ X ]补码 + [ -Y ]补码
补码减法可转换为补码加法
64
(-46)
18
+
0100 0000
1101 0010
0001 0010
+
例,
18
? 字符的表示
ASCII 码,用一个 字节 来表示一个字符, 低 7位为字符
的 ASCII值, 最高位一般用作校验位 。
例,‘ A’ 41H
‘a’ 61H
‘1’ 31H
换行 0AH
回车 0DH
空格 20H
19
ASCII 码表
20
扩展的 ASCII 码表
21
第一章作业
1 安装 masm5.0 和 masm6.11
2 p14 1.1~1.8
第一章 基 础 知 识
? 数制
? 数制之间的转换
? 运算
? 数和字符的表示
2
预备知识,
1K = 210 = 1024( Kilo)
1M = 1024K = 220 ( Mega)
1G = 1024M = 230 ( Giga)
1个二进制位,bit ( 比特)
8个二进制位,Byte ( 字节) 1Byte = 8bit
2个字节,Word ( 字)
1Word = 2Byte = 16bit
3
1,数制
数 制 基 数 数 码
二进制 Binary 2 0,1
八进制 Octal 8 0,1,2,3,4,5,6,7
十进制 Decimal 10 0,1,2,3,4,5,6,7,8,9
十六进制 Hexadecimal 16 0,1,2,3,4,5,6,7,8,9,
A,B,C,D,E,F
二进制, 基数为 2,逢二进一
11012 = 1× 2 3 + 1× 2 2 + 1× 2 0 = 1310
十六进制,基数为 16,逢十六进一
1001,0001,1000,0111
9 1 8 7
= 9 × 16 3 + 1 × 16 2 + 8 × 16 1 + 7 × 16 0
4
2,数制之间的转换
? 二进制 十六进制
? 十进制 二进制
? 十进制 十六进制
降幂法 除法
5
? 二进制 十六进制
0011 0101 1011 1111
? ? ? ?
3 5 B F
∴ 0011,0101,1011,1111B = 35BFH
A 1 9 C
? ? ? ?
1010 0001 1001 1100
∴ A19CH = 1010,0001,1001,1100B
6
1011B = 11D
降幂法 除法
例, 27D =? B
27 11 3 3 1
-? -? -? -? -?
16 8 4 2 1
1 1 0 1 1
∴ 27D = 11011B
? 二进制 十进制
7
? 十六进制 十进制
BF3CH = 11?163 +15?162 +3?161 +12?160
降幂法 除法
例, 399D =? H
399 143 15
-? -? -?
256 16 1
? ? ?
1 8 F
∴ 399D = 18FH
8
? 算术运算
二进制数,逢二进一 借一当二
加法规则 乘法规则
0 + 0 = 0 0 ? 0 = 0
0 + 1 = 1 0 ? 1 = 0
1 + 0 = 1 1 ? 0 = 0
1 + 1 = 0 ( 进位 1) 1 ? 1 = 1
3,运算(算术运算和逻辑运算)
9
0 5 C 3 H
3 D 2 5 H
4 2 E 8 H
+
3 D 2 5 H
0 5 C 3 H
3 7 6 2 H
- 1
- 1
十六进制数,逢十六进一 借一当十六
10
? 逻辑运算(按位操作)
,与,运算( AND), 或,运算( OR)
A B A?B A B A?B
0 0 0 0 0 0
0 1 0 0 1 1
1 0 0 1 0 1
1 1 1 1 1 1
,非, 运算 ( NOT)
,异或, 运算 ( XOR)
A ?A A B A?B
0 1 0 0 0
1 0 0 1 1
1 0 1
1 1 0
11
12
例, X = 00FFH Y = 5555H,Z = X?Y =?
X = 0000 0000 1111 1111 B
? Y = 0101 0101 0101 0101 B
Z = 0101 0101 1010 1010 B
? Z = 55AAH
13
4,数和字符的表示
? 数的表示
7 6 5 4 3 2 1 0
符号位 数值位
假设机器字长为 16位,
符号位 = 0 正数 数值位
= 1 负数
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
假设机器字长为 8位,
H.O.Byte L.O.Byte
H.O.Nibble L.O.Nibble
14
数的常用表示法 —— 原码 反码 补码
原码表示法,符号 + 绝对值
例,n = 8bit
[+3]原码 = 0 000,0011 = 03H
[- 3]原码 = 1 000,0011 = 83H
[+0]原码 = 0 000,0000 = 00H
[- 0]原码 = 1 000,0000 = 80H ? 0 的表示不唯一
反码表示法,正数的反码同原码,负数的反码数值位与原码相反
例,n = 8bit
[+5]反码 = 0 000,0101 = 05H
[- 5]反码 = 1 111,1010 = FAH
[+0]反码 = 0 000,0000 = 00H
[- 0]反码 = 1 111,1111 = FFH ? 0 的表示不唯一
15
例,机器字长 8位, [- 46]补码 =?
[46]补码 = 0 0 1 0 1 1 1 0
1 1 0 1 0 0 0 1
1 1 0 1 0 0 1 0 = D2H
机器字长 16位,[- 46]补码 = FFD2H
[+0]补码 = 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 = 00H = [- 0]补码
? 0 的表示唯一
按位求反
末位加一
按位求反
末位加一
补码 ( Two’s Complement) 表示法,
正数的补码,同原码
负数的补码,( 1) 写出与该负数相对应的正数的补码
( 2) 按位求反
( 3) 末位加一
16
十进制 二进制 十六进制 十进制 十六进制
n=8 n=16
+127 0111 1111 7F +32767 7FFF
+126 0111 1110 7E +32766 7FFE
,..,.,… …,.,
+2 0000 0010 02 +2 0002
+1 0000 0001 01 +1 0001
0 0000 0000 00 0 0000
-1 1111 1111 FF -1 FFFF
-2 1111 1110 FE -2 FFFE
,..,.,… …,.,
-126 1000 0010 82 -32766 8002
-127 1000 0001 81 -32767 8001
-128 1000 0000 80 -32768 8000
n 位二进制补码的表数范围,- 2 n-1 ? N ? 2 n-1 -
1
无符号整数的表数范围,0 ? N ? 2 n - 1
17
补码的加法和减法,
求补运算 ?,对一个二进制数按位求反, 末位加一
[ X ]补码 ? [ - X ]补码 ? [ X ]补码
加法规则,[ X + Y ]补码 = [ X ]补码 + [ Y ]补码
减法规则,[ X – Y ]补码 = [ X ]补码 + [ -Y ]补码
补码减法可转换为补码加法
64
(-46)
18
+
0100 0000
1101 0010
0001 0010
+
例,
18
? 字符的表示
ASCII 码,用一个 字节 来表示一个字符, 低 7位为字符
的 ASCII值, 最高位一般用作校验位 。
例,‘ A’ 41H
‘a’ 61H
‘1’ 31H
换行 0AH
回车 0DH
空格 20H
19
ASCII 码表
20
扩展的 ASCII 码表
21
第一章作业
1 安装 masm5.0 和 masm6.11
2 p14 1.1~1.8