基础知识
一、进制转换
进位计数制是一种技术的方法,习惯上最长用是10进制数法。十进制的基数为10,即其数码的个数为10,在十进制数中,每位数字的权值为10的k次方(k从0开始计),且遵循逢十进一的规则。例如:12345=1x10000+2x1000+3x100+4x10+5x1。(把10000看成是10的4次方)
计算机中为了便于存储及计算的物理实现,采用了二进制数。二进制数的基数为2,即逢二进一。各位的权值为2的K次方。例如:1001101=1x64+0x32+0x16+1x8+1x4+0x2+1x1(64是2的6次方)
1.二进制数转化为十进制数
各位二进制数乘以与其相对应的权值之和即为该二进制数相对应的十进制数。例如:10011.10111=1x16+0x8+0x4+1x2+1x1+1x1/2+0x1/4+1x1/8+1x1/16+1x1/32=19.71875
2.十进制数转化为二进制数
(1).降幂法
首先写出要转换的十进制数,其次列出所有小于这个数的二进制位的权值,然后用要转换的十进制数减去与它最近的二进制权值,能够减去就在相应位置写1,减不去就写0。
例:N=117D
计算过程如下:
2的7次方=128,大于117,所以从2的6次方开始减
117-64=58 (a6=1)
58-32=21 (a5=1)
21-16=5 (a4=1)
5- 8 减不掉 (a3=0)
5- 4=1 (a2=1)
1- 2 减不掉 (a1=0)
1- 1=1 (a0=1)
所以117D=1110101B
(2).除法
把要转换的十进制数整数部分不断除以2,直到为0为止,小数部分是乘以2。
例:N=117D
117/2=58 余数(a0=1)
58/2=29 (a1=0)
29/2=14 (a2=1)
14/2=7 (a3=0)
7/2=3 (a4=1)
3/2=1 (a5=1)
1/2=0 (a6=1)
所以117D=1110101B
3.16进制与二进制数之间的转换
由于16进制数的基数是2的幂,所以这两种数制之间的转换是很容易的。一个二进制数,只要把它从低位到高位四个分成一组,然后用16进制表示出来就可以了。
例: 0011 0101 1011 1111 (最高的一组不够四位前面用0补齐四位)
3 5 B F
所以 11010110111111B=35BF H
反之,若把16进制转化为二进制数,就把每一位用四位二进制数表示就形成相应的二进制数了。
例: A 1 9 C
1010 0001 1001 1100
所以 A19C H=1010000110011100 B
4.十六进制数与十进制数之间的转换
十六进制与十进制的转换方法跟十进制与二进制转换的方法类似,也可以先转换为二进制数然后再转换为十六进制数,直接转换的方法如下:
(1).降幂法
例:N=48956 D
48956-11x4096=3900
3900-15x256=60
60-3x15=12
12-12x1=0
所以 48956 D=(11)(15)(3)(12)=BF3C H
(2).除法
例:N=48956 D
48956/16=3059 余数(a0=12)
3059/16=191 (a1=3)
191/16=11 (a2=15)
11/16=0 (a3=11)
所以 48956 D=(11)(15)(3)(12)=BF3C H
二、汇编语言的基本元素
1.整数常量
整数常量由符号(可选)开头,加上一个或多个数字以及一个表示数制基数的字符后缀(可选)构成。
基数后缀可以是以下之一,不分大小写:
h 十六进制 r 编码实数
q/o 八进制 t 十进制(可选)
d 十进制 y 二进制(可选)
b 二进制
如果整数常量没有后缀就会被认为是十进制的。
2.实数常量
实数常量有两种类型:十进制实数和编码(十六进制)实数。十进制实数常量由符号位、整数部分、小数点、表示小数的整数和指数部分组成,符号位是可选的,它可以是+或者-,实数常量中至少有一个数字和一个小数点,如果没有小数点,那它就是一个整数常量。
3.字符常量
字符常量是以单引号或者双引号引起的单个字符,汇编编译器将其转换为与字符对应的二进制ASCll码,如:'A' "d"
4.字符串常量
字符串常量是以单引号或者双引号的一传字符:如'abc' "sdfgdfh"
5.标识符
标识符使程序远的名字,用来识别常量、变量、过程或者代码标号。创建标识符时要注意以下几点
(1).标识符可包含1~247个字符
(2).标识符对大小写不敏感
(3).标识符的第一个字符必须是字母、下划线、@或者$,不可以是数字,后续字符可以是数字
(4).标识符不能与汇编编译器的保留字相同
6.注释
注释是程序作者同源代码的阅读者交流有关程序如何工作的信息的有一条重要途径,程序清单顶部通常包含如下典型的信息:
程序总体意图的简短描述
编写或修改程序的程序员的名字
程序编写以及修改的日期
注释可以用下面两种方法指定:
单行注释:以分号(;)开始,编译器忽略同一行上分号之后的所有字符
块注释:以comment伪指令以及一个用户定义符号开始,编译器忽略后面所有的文本行,直到另一个相同的用户定义的符号出现。
如: comment !*************
***********!
转载于:https://blog.51cto.com/308272108/827210