汇编语言程序设计学习笔记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:第一章 基础知识
汇编语言程序设计学习笔记1:第一章 基础知识
除基取余法:

汇编语言程序设计学习笔记1:第一章 基础知识

乘基取整法同理:

汇编语言程序设计学习笔记1:第一章 基础知识
汇编语言程序设计学习笔记1:第一章 基础知识
汇编语言程序设计学习笔记1:第一章 基础知识

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:第一章 基础知识
汇编语言程序设计学习笔记1:第一章 基础知识

1.5 字符的表示

字符:字母、符号、数字码

在计算机内部按一定方式将字符编写成二进制信息,不同计算机以及不同场合所采用的编码形式可能不同。目前最广泛采用的是ASCII码

ASCII码

标准ASCII码为一字节,其中用低七位表示字符编码,最高位表示奇偶数验位。

汇编语言程序设计学习笔记1:第一章 基础知识

标准ASCII码共有128个,可分为两类:

非打印ASCII码33个 用于控制操作 如BEL(响铃07H) DEL(删除7FH) CR(回车0DH) LF(换行0AH)

可打印ASCII码95个 如数字符0~9,大小写字母……

1.6 基本逻辑运算

计算机内部采用二进制数表示信息,具有物理实现容易、可靠性高的优点

状态“0”“1”与逻辑运算中的逻辑“真”“假”对应,∴用01表示逻辑变量的取值

基本逻辑运算如下:

与AND

汇编语言程序设计学习笔记1:第一章 基础知识

逻辑尖尖

AB=1时F=1,其它情况F=0

或OR

汇编语言程序设计学习笔记1:第一章 基础知识

逻辑尖尖

AB至少有一个为1时F=1,其他情况F=0

非运算

对逻辑变量取相反的逻辑值,在逻辑变量上方加一横线表示

汇编语言程序设计学习笔记1:第一章 基础知识

异或XOR

用⊕表示 F=A⊕B

A和B相同(都为1/都为0)时F=0不同时F=1

1⊕1=0 / 0⊕0=0 / 1⊕0=1 / 0⊕1=1

上述四种基本逻辑运算规则真值表

汇编语言程序设计学习笔记1:第一章 基础知识