自己以前学习汇编的笔记发上来给新手随便看看东西是N年前的东西了如果有用我就继续发先发第一章基础知识。

Assembly Language



80X86
  
(1-48 Note)



Name:Xuning
Start: 16 August 2004
End: 16 October 2004



Video Name:zhongshandaxue Assembly language 



第一章  基础知识
要点:各进制的转换、数据、非数据的表示和数据类型。

一、绪论

1、机器语言
(1)  CPU能直接识别并遵行按照执行的指令称为机器指今。
(2)  机器指今在形式上表现为二进制编码。
(3)  机器指今由操作码和操作数构成。
(4)  机器指今与CPU的种类不同,对应的机器指今也就不同,同一系列CPU的指今集、具有良好的向上兼容性。
(5)  机器指今是CPU能直接识别的唯一语言,只有用机器指今描述的程序CPU才能直接执行。

2、汇编语言
(1)  汇编语言编写的程序必须被翻译成机器语言表示的目标程序后才能由CPU行。
(2)  把汇编语言程序翻译成目标程序的过程称为汇编。

3、汇编语言
(1)  与机器语言CPU一一对应。
(2)  CPU 对程序执行数度快效率高。
(3)  写源程序繁琐。
(4)  程序调试困难。

4、各进制转换
(1)  进制表示:十进制 ~ D 、二进制 ~ B 、八进制 ~ O 、十六进制 ~ H 。
(2)  十进制转二进制:用除2取余法。
例:N=35D  N=35D=10011B

35/2   = 17    (A0 = 1)
17/2   =8    (A1 = 1)
8/2    =4    (A2 = 0)
4/2    =2    (A3 = 0)
2/2    =1    (A4 = 0)
1/2    =0    (A5 = 1)

(3)  十进制转十六进制:用除16取余法。
例:N=117D  N=117D=75H。

117/16   = 7  (A0 = 5)
7/16     =0   (A1 = 7)


(4)  二进制转十进制:二进制数乘与其对应的权之和。
例:N=1010010B  N=1010010B=82D。
1010010B=1*26+0*25+1*24+0*23+0*22+1*21+0*20
(5)  十六进制转十进制:十六进制数乘与其对应的权之和。
例:N=5B1H  N=5B1H =1457D。
5B1H =5*162+11*161+1*160
(6)  二进制转十六进制:从底位到高位每4位组成一组直接用十六进制数表示。
例:N=0011110101001110B  N=0011110101001110B =3D4EH。
0011 = 3  1101 = D  0100 = 4  1110 = E
(7)  六进制转二进制:按8421法为每1位分组直接表示。
例:N=A19CH  N=A19CH =1010000110011100B。
A = 1010  1 =0001  9 = 1001  C = 1100

二、数据的表示

1、数据的表示
(1)  计算机中存储信息的最小单位称为位、用0和1.。
(2)  数据的补码表示(有符号数)。
机器数:把一个数连同其符号在内、在机器中的表示加认数值化。
符号的表示:最高有效位表示符号、正数用~0、负数用~1。
机器数常用码制:源码、补码、反码。
(3)  补码转换
补码:[+127]补=01111111B,[+0]补=00000000B 
8位二制表示数的有符号数的范为:-128~~+127
例:N= -117D 的补码表示 N-117D=-FF8BH
-117D转+117D:0000 0000 0111 0101
按位取反后:   1111 1111 1000 1010
末尾加1:     1111 1111 1000 1011  
十六进制表示:  F   F   8   B
(4)  无符号数
在某些情况下、要处理的数全是正数、些时在保留符号位就没意义。
N位二进制数能够表示数的无符号整数的范围是:
0≤N≤2N-1
                8位无符号数表示范围是0≤N=255。
16位无符号数表示范围是0≤N=65535。
(5)  符号扩展
需要把一个N位二进制数扩展成M位二进制数(M>N)
当要扩展的数是无符号数时、只要在最高位前扩展(M-N)
例:N=21 扩展成8位二进制和16位二进制:
N=21D=10101B 
扩8位:00010101 B
扩16位:0000 0000 00010101 B
如扩展数里有特殊数,并且用补码形式表示进有符号扩展:
例:-3 的8位二进制补码:
N=3D=11111101B 
-3转+3 = 0011B
符号扩展:= 0000 0011 B
按位取反:= 1111 1100 B
末尾加 1:= 1111 1101 B
(6)  补码加减法
对一个正数的补码表示按位求反后再未位加1、可以得到与其正数相对应的负数的补码表示。
[X]补 求补 [-X]补 求补 [X]补
                补码加法规则:[X+Y]补=[X]补+[Y]补
                补码减法规则:[X-Y]补=[X]补+[-Y]补

四、非数据数值的表示方法

1、非数据数值数据的表示
(1)  计算机除了处理数值数据外还要处理非数值数据如图表、文字、等,为些             必须对非数值数据进行编码,这样计算机可以方便的存储它们、而且可以给它们的数值数据赋予某些属性。
(2)  ASCII 码
如:空格键、删除键、大小写等
ASCII码是目前比较通用的二进制编码、微型计算机中它是7位二进制编码
7位ASCII码最多可表示 128个字符。
8位ASCII码最多可表示 256个字符。
注:7位远远不够PC用为些在IBMPC系列及兼容机上,使用扩展的确ASCII码。
(3)  变型国际码(GB2312)
为使计算机能处理汉字信息、就必须对汉子进行编码国标码是16位编码,高8位表示汉字符的区号,低8位表示汉字符的位号。
目前在计算机中文平台中普遍采用的汉字编码是变形的国际码,就是把国际码的第15位和第7位均置1,由于国际码中第15位和第7位都是0,所以这种变形实际上就是在国际码上加8080H。

五、基本数据类型

1、基本数据类型
(1)  计算机存取认二进制表示的信息位数一般是8的陪数,它们有如下专门的名称。
2、  2、字节
(1)  一个字节由8个二进制位组成。
(2)  字节的最低位一般称为第0位、最高位称为第7位,7 6 5 4 3 2 1 0通常:硬件储存器的每一存储单元就由8个连续的位组成,即可用于存储一个字的信息。
(3)  一个字节足认表示一个ASC II字符,也可以表示一个扩展的ASC II的字符。
(4)  一个字节可分成2个4位的位组,称为半字节。
3、  字
(1)  2个字节(16个二进制位)组成一个字、一个字含16个位,如:15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ,最低位称为第0位、最高位称为第15位,字节的低8位称为低字节、字节的高8位称为高字节。
4、双字
(1)  双字(32个二进制位)由2个字组成,低16位称为低位字节、高16位称为高字节。
(2)  表示的数值范围更大。
5、四字
(1)  四字就是由四个字组成,包含64个二进制位。
(2)  如果双字还不能表达所需要的数值精度,那么四字也许就能解决问题了。
6、十字节
(1)  由10个字节组成,含80个二进制位。可用于存储非常大的数或表示较多的信息。
7、字符串
(1)  字符串是指由字符构成的一个线性数组。通常每个字符用一个字节表示,但有时每个字符也可用也可用一个字或一个双字来表示。