汇编语言程序设计学习笔记1:第一章 基础知识
汇编语言程序设计学习笔记
第一章
1.1 汇编语言的一般概念
机器语言:二进制编码 效率高 不便记忆阅读
高级语言:方便 效率低
汇编语言
定义:为了便于记忆与阅读,使用字母和符号来表示机器语言的命令,用十进制数或十六进制数来表示数据,这样的计算机程序设计语言就成为汇编语言
与机器语言程序的关系:一条汇编语言的语句与一条机器语言指令对应,汇编语言程序与机器语言程序效率相同
不同类型计算机有不同的机器指令系统和汇编语言描述,需熟悉计算机的内部组成结构(掌握用汇编语言编制程序时所涉及到的那些硬件的结构和功能)
机器语言的执行主要取决于计算机的中央处理器CPU,因此计算机内部结构主要指CPU的功能结构
1.2 学习和使用汇编语言的目的
1.根本上认识理解计算机的工作过程
2.在计算机系统中某些功能必须用汇编语言程序来实现(机器自检、系统初始化、实际的输入输出设备的操作……)
3.效率高于高级语言程序(效率:程序的目标代码长度&运行的速度)(在某些要求节省内存空间和提高程序运行速度的应用场合中使用:实施过程控制、智能仪器仪表……)
1.3 进位计数制及其相互转换
进位计数制
位权
各个位置上所表示得基本数值,简称权。
不同的进位制和不同的位置其位权是不同的。
位权乘以对应位置上的数码就等于该数位上数值的大小。
基数
每个数位上能使用不同数码的个数。
如:十进制有十个数码0~9,基数为10,二进制基数为2。
每个数位能取得最大数码值=基数-1。
如十进制为10-1=9
计算机中数据表示一般采用二进制数:易于表示和存储,适合逻辑值的表达和运算。
然而不便于书写与阅读,在书写时常用8、16进制。
3位二进制数与1位八进制数对应;4位二进制数与1位十六进制数对应。
在书写不同进位计数制数时,为了区别,常在数的尾部用一个字母来表示:
B:二进制数Binary
O/Q:八进制数Octal
D:十进制数Decimal
H:十六进制数Hexadecimal
如果未使用任何字母,则默认表示为十进制数
各种数制间的相互转换
主要是二进制和十进制间的转换
减权定位法:
除基取余法:
乘基取整法同理:
1.4 带符号数的表示
正 + 0
负 - 1
真值:±表示正负的数
机器数:01表示正负的数
带符号的机器数可以用原码、反码、补码三种不同码制来表示。一般计算机中大多采用补码表示。
原码
二进制数最高位表示符号:0正1负
数值部分用二进制数绝对值表示
所以 8位二进制数原码最大数:01111111(+127) 最小数:11111111(-127)
表示范围就为 -127≤X≤+127
其它位同理
P.S. 0的原码有两种表示形式:00000000/10000000(+0和-0)
补码
带符号数X的补码表示[X]补定义为:
[X]补=M+X(Mod M)
而模数M根据机器数的位数而定,如位数为8则M=2^8
用补码表示的机器数,符号为仍然表示数的符号(0正1负)
对于正数:补码和原码相同
对于负数:
真值变为补码的方法:将各位取反(0变1,1变0)然后在最低位+1
原码变换为补码:保持符号位不变,其余各位变反,最低位+1
如:-59变为补码
真值 -00111011
变反 11000100
+1 11000101
原码 10111011
变反 11000100
+1 11000101
∴[-59]补=11000101
一个简单的计算负数补码的方法:从右往左数遇到第一个1停下,这个1及其右边的0保持不变,其余左边的数按位取反
补码数的表示范围
当位数为8时,最大补码为01111111=[+127]补,最小补码为10000000=[-128]补
0的补码只有一个[0]补=00000000,而10000000是[-128]补,11111111=[-1]补
对于16位数,补码表示范围为-32768~+32767
补码的加减运算
规则:
[X+Y]补=[X]补+[Y]补
[X-Y]补=[X]补-[Y]补=[X]补+[-Y]补
其中[-Y]补是对[Y]补执行一次求补运算
求补运算:将原数连同符号位一起(无论正负)按位求反,再在最低位+1
P.S. 进位超过位数则需要舍去
1.5 字符的表示
字符:字母、符号、数字码
在计算机内部按一定方式将字符编写成二进制信息,不同计算机以及不同场合所采用的编码形式可能不同。目前最广泛采用的是ASCII码
ASCII码
标准ASCII码为一字节,其中用低七位表示字符编码,最高位表示奇偶数验位。
标准ASCII码共有128个,可分为两类:
非打印ASCII码 共33个 用于控制操作 如BEL(响铃07H) DEL(删除7FH) CR(回车0DH) LF(换行0AH)
可打印ASCII码 共95个 如数字符0~9,大小写字母……
1.6 基本逻辑运算
计算机内部采用二进制数表示信息,具有物理实现容易、可靠性高的优点
状态“0”“1”与逻辑运算中的逻辑“真”“假”对应,∴用01表示逻辑变量的取值
基本逻辑运算如下:
与AND
逻辑乘 向上尖尖
AB都=1时F=1,其它情况F=0
或OR
逻辑加 向下尖尖
AB至少有一个为1时F=1,其他情况F=0
非运算
对逻辑变量取相反的逻辑值,在逻辑变量上方加一横线表示
异或XOR
用⊕表示 F=A⊕B
A和B相同(都为1/都为0)时F=0,不同时F=1
1⊕1=0 / 0⊕0=0 / 1⊕0=1 / 0⊕1=1