汇编语言程序设计第一章基础知识汇编语言是符号化的、面向机器的语言。
在学习汇编语言编程之前,需要了解计算机是如何表示、存储信息的。
提纲
1.1 常用数制及其相互转换
1.2 存储器内的数字表示
1.3 数据表示
1.1常用数制及其相互转换
1.十进制在十进制( Decimal) 表示中,每个数位的范围是 0~ 9十个数字。
例如,46610 = 4?102?6?101?6?100
二进制数和十进制数的转换
2.二进制在二进制表示中,每个数位的范围是 0,1两个数字,例如:
111010012=1?28?1?27?1?26?0?25?1?24?0?23?0?22?
1?21?0?20
=46610
十进制数转换到二进制数从十进制数转换到二进制数,方法是将这个数除以 2,每次得到的商继续进行除法,一直到商为 0时结束 。
46610?210 = 233余 0
23310?210 = 116 余 1
依此类推
1?2 = 0余 1
结果是 1110100102
3.十六进制在十六进制( Hexadecimal) 表示中,每个数位的范围是 0~ 15十六个数字,使用 0~ 9、
A~ F来表示这十六个数字,其中 A代表 10,B代表 11,C代表 12,D代表 13,E代表 14,F代表 15
十六进制 与十进制的相互转换从十六进制数到十进制数的转换过程为:
1D216 = 1?162?13?161+2?160
= 25610+20810+210
= 46610
从十进制数转换到十六进制数,方法是将这个除以 16,每次得到的商继续进行除法,一直到商为 0时结束。每次除法得到的余数按照顺序即构成十六进制数,第 1次得到的余数为最低位,
十六进制与二进制的相互转换
1个十六进制数位对应于 4个二进制数位例如:
1D216= 0001 1101 00102
反之亦然
1.2 存储器内的数字表示
1.2.1 存储器
1.2.2 存储容量
1.2.3 内存地址
1.2.4 字,字节,双字
1.2.1 存储器
计算机的记忆部件;
用来存放程序和数据;
分为外存和内存。
内存,
存放当前正在执行的程序和使用的数据
CPU可以直接存取
存取速度快
成本高
容量小
断电后内存中的内容会丢失
外存
可用来长期保存大量的程序和数据
CPU需要通过 I/O接口访问
其成本低
容量大
存取速度较慢
2.存储容量
以字节 ( Byte) 为单位来描述的,1字节包括 8个二进制位 。
在描述比较大的存储容量时,又经常使用
KB,MB,GB等 。
1KB = 210B = 1 024B
1MB = 220B = 1 024KB = 1 048 576B
1GB = 230B = 1 024MB = 1 073 741 824B
……
3.内存地址
CPU在读写某个字节时,首先给出该字节的内存地址,然后内存将存储单元中的数据读出送给 CPU,或者将 CPU给出的数据写入这个地址对应的存储单元。
地址的作用就是惟一地标识每一个存储单元,
这里的地址指的是物理地址。
4.字节、字、双字
1个字节中有 8个二进制位,字节是内存的最基本存储单元。
位 7 6 5 4 3 2 1 0
内容 0 0 1 0 0 1 0 1
字节 00100101B= 25H
位 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
内容 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1
字节 高字节,01100000B= 60H 低字节,00100101B= 25H
字 6025H
1个字包括 2个字节,第 15位是最高位,第 0位是最低位 。
1个双字包括两个字,或 4字节,也就是 32个二进制位。
1.2.2 存储顺序
Intel的 CPU采用的是低字节、低字在前的存储格式。
例 1:将字 6025H存储到 0E4E1000H地址中,高字节 60H
存储到 0E4E1001H单元中,低字节 25H存储到 0E4E1000H
单元中,如图
0E4E1000H 6025H 0E4E1000H 25H
0E4E1001H 60H
例 2:将双字 0ED66025H存储到 0E4E1000H地址中
0E4E1000H 0ED66025H
0E4E1000H 25H
0E4E1001H 60H
0E4E1002H D6H
0E4E1003H 0EH
1.3 数据表示
1.3.1 整数的表示
1.3.2 字符的表示
1.3.3 汉字的表示
1.3.4 Unicode标准
1.3.5 BCD码
1.3.1 整数的表示分为无符号整数和有符号整数两种
无符号整数包括整数 0和正整数,
n位二进制数能够表示的无符号整数的范围是:
0~ 2n?1。
有符号整数包括整数 0和正、负整数,需要 1个符号位。
n位二进制数能够表示的有符号整数的范围是:
2n?1~ 2n?1?1。
有符号数的三种表示方法:
原码表示法
反码表示法
补码表示法(最常用)
最高位是符号位,其余的数位是数值位。
对正数来说,符号位为 0,
46610 = 0000 0001 1101 00102 = 01D216
对负数来说,补码的符号位为 1。
466的补码表示为 1111 1110 0010 11102=FE2E16
0的补码表示为 00000000000000002=000016
补码表示法对一个字 FE2E16来说,它可能表示的是一个无符号整数,也可能是一个有符号整数。
在表示无符号整数时,FE2E16= 6507010
在表示有符号整数时,FE2E16=?46610
1.3.2 字符的表示
使用 ASCII编码来表示字符,
最多能够表示 27=128个字符。
包括大写字母,小写字母,数字以及一些常用符号等,还包括一些控制字符,如回车、换行等。
附录 B中的表 B-1列出了 ASCII码表。
1.3.3 汉字的表示
为了在计算机内表示汉字,我国制定了
GB2312-80等标准。每一个汉字都有一个惟一的区码和位码。
1.3.4 Unicode标准
为了将全世界各种主要的语言文字进行统一的处理,国际标准化组织制定了 ISO
10646标准,形成了 Unicode标准。
1.3.5 BCD码
使用 4个二进制数位来表示 1个十进制数位。
例如:
用二进制和十六进制表示十进制数 466时,
46610= 0001 1101 00102 = 01D216
而用 BCD码表示时,
46610 = 0000 0100 0110 0110BCD。