第1章 基础知识pptConvertor.docx
《第1章 基础知识pptConvertor.docx》由会员分享,可在线阅读,更多相关《第1章 基础知识pptConvertor.docx(15页珍藏版)》请在冰点文库上搜索。
第1章基础知识pptConvertor
汇编语言简介:
汇编语言是一种最接近计算机核心的编码语言。
不同于任何高级语言,汇编语言几乎可以完全和机器语言一一对应。
汇编语言是计算机能提供给用户的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的语言。
用汇编语言编写的程序的速度通常要比高级语言和C/C++快很多--几倍,几十倍,甚至成百上千倍。
因而,对程序的空间和时间要求很高的场合,汇编语言的应用是必不可少的。
1.0计算机语言系统
1.1数制及其相互转换
1.2符号数的表示及运算
1.3字符的表示
1.4基本的逻辑运算
第1章基础知识
1.0计算机语言系统
计算机语言发展
1.0.1机器语言
1.机器指令:
CPU能直接识别并遵照执行的指令称为机器指令,在形式上表现为二进制编码,一般由操作码和操作数两部分构成。
操作码指出要进行的操作或运算,如加减、传送等。
操作数指出参与操作或运算的对象,也指出结果存放的位置。
如CPU的寄存器、存储单元等。
CPU不同,对应的机器指令也不同。
一条机器指令控制计算机完成一个基本操作。
2.机器语言
机器语言是用二进制编码的机器指令的集合及一组使用机器指令的规则;
用机器语言编写的程序是计算机惟一能够直接识别并执行的程序,而用其他语言编写的程序必须经过翻译才能变换成机器语言程序,所以,机器语言程序被称为目标程序。
为了阅读方便,常用16进制形式表示二进制编码
3.机器语言的特点:
编程难度大,调试困难
可读性、可移植性、通用性差
1.0.2汇编语言
1.汇编格式指令:
为了克服机器语言的缺点,人们采用便于记忆、并能描述指令功能的符号来表示机器指令的操作码。
这些符号被称为指令助记符。
用指令助记符、地址符号等符号表示的指令称为汇编格式指令
2.汇编语言:
汇编语言是汇编格式指令、伪指令的集合及其表示、使用这些指令的一组规则。
用汇编语言编写的程序称为汇编源程序。
例如:
将前例的程序写成汇编语言程序为:
MOVAL,VAR1;或moval,[2000H]
ADDAL,VAR2;或addal,[2001H]
MOVVAR3,AL;或mov[2002H],al
3.汇编程序:
汇编语言是一种符号语言,比机器语言容易理解和掌握,也容易调试和维护。
但是,汇编语言源程序要翻译成机器语言程序才可以由计算机执行。
这个翻译的过程称为“汇编”,这种把汇编源程序翻译成目标程序的语言加工程序称为汇编程序。
(如:
MASM.EXE)
1.0.3高级语言
汇编语言虽然较机器语言直观,但仍然烦琐难懂。
于是人们研制出了高级程序设计语言。
高级程序设计语言接近于人类自然语言的语法习惯,与计算机硬件无关,易被用户掌握和使用。
目前广泛应用的高级语言有多种,如BASIC、FORTRAN、PASCAL、C、C++、JAVA、VisuaBasic、
VC、VC++等等。
1.0.4汇编语言的特点
(1)汇编语言与处理器密切相关,可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。
(2)汇编语言程序效率高。
运行速度快---时间
目标程序短---空间
(3)编写汇编语言源程序比编写高级语言源程序烦琐,经常与高级语言配合使用,应用十分广泛。
汇编语言是面向机器的语言
高级语言是面向过程或面向目标、对象的语言
(4)调试困难
汇编语言的主要应用:
(1)对软件的执行时间和存储容量有较高要求的场合。
如系统程序的核心,智能化仪器仪表的控制系统,实施控制系统等。
70%以上的系统软件是用汇编语言编写的。
(2)程序与计算机硬件密切相关,程序直接控制硬件的场合。
例如I/O设备驱动程序。
(3)某些快速处理、位处理、访问硬件设备等高效程序是用汇编语言编写的。
(4)需提高大型软件性能的场合。
执行频率较高的子程序。
(5)没有合适的高级语言的场合。
下面是两个小例子,例1是用高级语言VC++编写的,例2是用汇编语言编写的。
它们完成相同的功能,即把a、b的内容相加赋给c,并在屏幕上显示出来。
1.1数制及其相互转换
计数制:
指用一组固定的数字符号和统一的规则表示数的方法。
一般,r进制数可以用下式表示:
1.不同数制数的区别表示
方法一:
用后缀区分。
方法二:
用括号将数字括起,加以下标标注。
3.二进制数
★基数r为2,由0、1组成;
★它的各个位置上的权为:
2k;
★小数点左边从右至左其各位的位权依次是:
20、21、22、23…;
★小数点右边从左至右其各位的位权依次是:
2-1、2-2、2-3……。
例:
1011.11B=
1×23+0×22+1×21+1×20+1×2-1+1×2-2
(1)二进制数运算—加、减
0+0=0;0+1=1;1+0=1;1+1=10;
例:
1101+1011=11000
0-0=0;1-0=1;0-1=1;1-1=0;
例:
1101–1011=0010
加法规则:
逢二进一。
减法规则:
借一当二。
(2)二进制数运算—乘
乘法规则:
任何数乘以0得0,1乘以任何数得该数。
即:
0×0=0;0×1=0;1×0=0;1×1=1
(3)二进制数运算—除
除法规则:
0除以任何数得0,任何数除以1得该数,除数不得为0。
0÷1=0;1÷1=1
(4)二进制数运算—与、或
(5)二进制数运算—非、异或
2.十进制数转换为其他进制数
(1)降幂法方法:
1)写出所有小于此数的各位二进制权;
2)用要转换的十进制数减去与它值最近的二进制权值;
3)如够减,相应位记为1;如不够减,相应位记0,并恢复该减法实施之前的数;
4)重复2)、3),直至该数为0或达到所需精度。
3.二进制数转换为十六进制数
方法:
以小数点为界,整数部分向左,小数部分向右每4位二进制数为一组,用1位十六进制数表示,不足4位的,整数部分高位补0,小数部分低位补0。
例:
把二进制数10110.1转换为十六进制数
10110.1B=00010110.1000B=16.8H
4.十六进制数转换为二进制数
方法:
把每位十六进制数用4位二进制数表示。
例:
把十六进制数5A.7转换为二进制数
5A.7H=01011010.0111B=1011010.0111B
1.2符号数的表示及运算
数值数据分为有符号数和无符号数。
无符号数最高位表示数值,而有符号数最高位表示符号。
有符号数有不同的编码方式,常用的是补码。
数的符号在计算机中也用二进制数表示,通常用二进制数的最高位表示数的符号,0表示正数,1表示负数。
把一个数及其符号在机器中数值化的表示称为机器数,而机器数所代表的数本身称为数的真值。
机器数可以用不同方法表示,常用的有原码、反码和补码表示法。
1.原码
最高位表示符号(正数用0,负数用1),其他位表示数值位,称为有符号数的原码表示法。
【例1.1】有符号数的原码表示。
X=45=00101101B[X]原=00101101B
X=-45,[X]原=10101101B
原码表示简单易懂,但若是两个异号数相加(或两个同号数相减),就要做减法。
为了把减法运算转换为加法运算就引进了反码和补码。
2.反码
正数的反码与原码相同,符号位用0表示,数值位值不变。
负数的反码符号位用1表示,数值位为原码数值位按位取反形成,即0变1、1变0。
【例1.2】有符号数的反码表示。
X=45=00101101B,[X]反=00101101B
Y=-45,[Y]反=11010010B
3.补码
正数的补码与原码相同,即符号位用0表示,数值位值不变。
负数的补码为反码加1形成。
【例1.3】有符号数的补码表示。
X=45=00101101B[X]补=00101101B
Y=-45[Y]补=11010011B
补码运算溢出判别
运算结果,超出了计算机所能表示的数的范围称为溢出。
补码运算发生溢出情况:
1.同号数相加,可能溢出;
2.异号数相减,可能溢出。
4.符号扩展
在数据处理时,有时需要把8位二进制数扩展成16位二进制数,当要扩展的数是无符号数时,可在最高位前扩展8个0。
如果要扩展的数是补码形式的有符号数,那么,就要进行符号位的扩展,符号扩展后,其结果仍是该数的补码。
【例1.4】符号扩展表示。
21的8位二进制补码为:
00010101
符号扩展后21的16位二进制补码为:
0000000000010101。
00010101和0000000000010101都是21的补码。
5.数据的表示范围和大小
n位二进制数能够表示的无符号整数的范围是:
0≤X≤2n–1
例如8位无符号数的范围为0~255
16位无符号数的范围为0~65535
n位二进制数能够表示的有符号整数的范围是:
-2n-1≤X≤+2n-1–1
例如8位带符号数的范围为-128~+127
16位带符号数的范围为-32568~+32767
6.十六进制表示
由于二进制数的基数太小,书写和阅读都不方便.而十六进制的基数16=24,这样二进制数与十六进制之间能方便地转换。
因此,习惯把二进制数改写成十六进制数,在汇编语言程序设计时尤其如此。
在书写时,为了区别于十六进制和二进制数,通常在十六进制数后加字母H。
1.3字符的表示
1.3.1ASCII码
ASCII码,全称为“美国标准信息交换代码(AmericanStandardCodeforInformation-Interchange)。
基本ASCII码共有128个,其中控制符32个,数字10个,大写英文字母26个,小写英文字母26个,以及专用符号34个。
见附录1。
ASCII码:
美国标准信息交换代码
共128个,采用7位二进制代码对字符进行编码
数字0~9的编码是0110000~0111001,它们的高3位均是011,后4位正好与其对应的二进制代码相符。
英文字母A~Z的ASCII码从1000001(41H)开始顺序递增,字母a~z的ASCII码从1100001(61H)开始顺序递增,这样的排列对信息检索十分有利。
ASCII码特征
每一个ASCII码存放在一个字节中,低7位为有效编码位,最高位可用于校验位或用于ASCII码的扩充。
字符大小比较,实际上是比较ASCII码值的大小。
小写字母>大写字母>数字
举例:
“CHINA isacountry”CR,LF的ASCII码表示
字符的表示:
用一个字节来表示一个字符,低7位
为字符的ASCII值,最高位一般用作校验位。
例:
‘A’41H
‘a’61H
‘1’31H
换行0AH
回车0DH
空格20H
1.3.2BCD码
虽然二进制数实现容易,但不符合人们的使用习惯,且书写阅读不方便,所以在计算机输入输出时通常还是采用十进制来表示数,这就需要实现十进制与二进制间的转换。
为了转换方便,常采用二进制编码的十进制,简称为BCD码。
BCD码就是用4位二进制数表示1位十进制整数。
表示的方法有多种,常用的是8421BCD码,它的表示规律如表1.1所示。
1.4基本的逻辑运算符
作业:
教材14页
1.1
(1)
1.3
(1)(3)
1.6
(1)
(2)