首页
社区
课程
招聘
[分享]中山大学汇编视频学习笔记(入门级,适合新手,更新中,欢迎监督!)
发表于: 2010-2-2 22:38 16793

[分享]中山大学汇编视频学习笔记(入门级,适合新手,更新中,欢迎监督!)

2010-2-2 22:38
16793
有一天中午上论坛突然发现收到kanxue老大的信息,原来自己发的一篇帖子沉了好久后被加了精华,偷偷的乐了一小下,嘿嘿。其实那篇文章被加个精字真是感觉有些汗颜,为了对得起那个精字,对得起kanxue老大的鼓励,决定踏实下来打好基础,所以了,就把自己在看中山大学汇编教学时的总结写了一下,方便日后查阅,也让自己记忆更深刻。不敢独享,拿出来给大家看看,有疏忽的地方欢迎拍砖,呵呵。下面二楼,正题来喽!

写了3篇了,希望有兴趣的朋友看了之后给些意见,以便改进!谢谢!!

第一章 基础知识(中山大学汇编语言教程01)-----------------------------2楼
非数值数据的表示和基本数据类型(中山大学汇编语言教程02)-------------4楼
第二章 8086/8088寻址方式和指令系统(中山大学汇编语言教程03)------14楼
中山大学汇编语言教程04-----------------------------------17楼

[课程]FART 脱壳王!加量不加价!FART作者讲授!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (32)
雪    币: 66
活跃值: (26)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
第一章 基础知识(中山大学汇编语言教程01)
本章主要掌握两个要点:
一是各进制之间的转换,二是数据、非数据的表示和数据的类型。

各进制之间的转化:
十进制数(D- decimal)转换为二进制数(B- binary)或十六进制数(H- hexadecimal),用除以2取余法或除以16取余法。(顺便掌握些英文单词,呵呵。)
N=43D,43/2=21 (a0=1);21/2=10(a1=1);10/2=5(a2=0);5/2=2(a3=1);2/2=1(a4=0);
1/2=0(a5=1)所以N用二进制表示:N=101011B。需要注意的是用这个方法得出来的余数要从后往前组合在一起才是正确的二进制数,即从a5到a1。其实只要记住能除尽余数为0,否则余数为1就OK了。
十进制转十六进制就不做例子了,原理同上。

二进制数或十六进制数转换为十进制数,用权的展开式,即各位二进制数码乘以与其对应的权之和或各位十六进制数码乘以与其对应的权之和。
N=101011B,用权的展开式表示即N=1×2的五次方+0×2的四次方+1×2的三次方+0×2的二次方+1×2的一次方+1×2的零次方=32+0+8+0+2+1=43D。
十六进制转化成十进制只是将上述算式中的2的几次方变成16的几次方即可。这块怎么看怎么别扭,不知道那个几次方该怎么打出来,有知道的兄弟说一声呗,谢谢!

十六进制数和二进制数之间的转换,一个二进制数,把它从低位到高位每4位组成一组,直接用十六进制数来表示,反之,把十六进制数中的每一位用4位二进制数表示,就形成相应的二进制数。关键是记住所谓的8421码。
N=101011B,按照上述方法:0010  1011 ,0010对应的十六进制数为(0+0+2+0)2,1011对应(8+0+2+1)B,即
N=2BH。
N=5BH,十六进制的5用二进制表示为0101,B为1011,即N=(0)1011011B。
教学要求中是要达到一些常用数字给出二进制或是十六进制一眼就能看出十进制是多少,汗,反正我是达不到那要求啊。再说了,哪些算常用数字啊??也许我比较笨,唉!

数据的表示:
计算机系统内部采用二进制表示,也采用二进制编码表示非数值数据和指令。
1、        数的补码表示(有符号数)
把一个数连同其符号在内,在机器中的表示加以数值化,这样的数被称为机器数。机器数可以用不同的码制来表示,常用的有原码、补码和反码表示法。而大多数机器中采用补码表示法

有符号数的表示中,一般用最高有效位来表示数的符号。正数用0来表示,负数则用1来表示。
补码表示法中,正数采用符号—绝对值表示:
例(可以用这个例子来练习一下各进制数之间的转换计算):假设机器字长为8位,则【+1】补=00000001,【+127】补=01111111
当用补码表示法来表示负数时:负数X用2的n次方-X的绝对值来表示,其中n为机器的字长。
例:当n=8时:【-1】补=2的八次方-1=11111111,【-127】补=2的八次方-127=10000001,在补码表示法中0只有一种表示,即00000000。对于100000000这个数,在补码表示法中被定义为-128。

采用补码形式表示有符号数,那么n位二进制数能够表示有符号整数的范围在-2的(n-1)次方到+2的(n-1)次方-1之间。那么:8位表示数的有符号整数的范围为-128到+127。如果n是16,那么能够表示的有符号整数的范围是:大家自己算一下吧,呵呵。(这两个范围是需要牢牢记住的呦!

来个例子,机器字长为16位,写出N=-117D的补码表示,计算过程:首先计算出+117D的二进制,然后按位求反,在按位求反得出的数的末位加1,即得出-117D的二进制补码表示,当然一下子16位的0和1看着不爽,最好变成十六进制,给出计算结果,【-117D】补=FF8BH。大家自己按步骤计算一下吧。
到这里有朋友就要问了,前面讲的不是说用补码表示负数时,负数X用2的n次方-X的绝对值来表示的吗,大家可以用两种方法都算一下,看结果是不是一样,同时比较一下哪种方法更简便一些。

接下来是无符号数整数的表示:在某些情况下,要处理的全都是正数,此时保留符号位就没有了意义,所以,此时的最高位就不是表示符号了,我们要把最高位当做数值处理。n位二进制数能够表示的无符号整数的范围是:0到2的n次方-1。8位无符号数表示的范围是0到255,16位无符号数表示的范围是0到65535。

有时候常常需要把一个n位二进制数扩展成m位二进制数,当然m大于n。当要扩展的数是无符号数时,只要在最高位前扩展(m-n)个0即可。例如21的8位二进制和16位的二进制补码如下:00010101(8位),0000000000010101(16位)。如果要扩展的数是有符号数的话,进行符号扩展。总结一下扩展有符号数的方法就是,看最高有效位,最高有效位是符号位,如果是0的话就扩展(m-n)个0即可,如果是1的话扩展(m-n)个1。对于各位朋友来说这很简单吧,呵呵,不罗嗦了。

第一个视频的最后一个知识点,一个定义:对一个正数的补码表示按位求反后再在末位加1,可以得到与此正数相应的负数的补码表示。把这种对一个二进制数按位求反后在末位加1的运算称为求补运算。值得注意的是,求补运算和将一个数用补码表示并不是一个概念,要注意区分!
补码表示的数具有以下特性:【X】补经过求补运算可以得出【-X】补,再将【-X】补求补运算的话得出了【X】补。可以举个例子实验一下!

OK,中山大学汇编教学视频第一集的总结好了,有不当的地方希望朋友们指出,我立马改正!精彩预告,下一集视频中将讲述基础知识的后两个知识点,非数值数据的表示和基本数据类型,不要错过哈!
2010-2-2 22:43
0
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这个要支持的!!!!
2010-2-3 10:39
0
雪    币: 66
活跃值: (26)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
这集视频主要讲解非数值数据的表示和基本数据类型。

首先回顾一下前一集视频中最后一个知识点:补码表示的数具有以下特性:【X】补经过求补运算可以得出【-X】补,再将【-X】补求补运算的话得出了【X】补。这一特性在补码的加、减法运算中很有用:补码的加法规则是:【X+Y】补=【X】补+【Y】补,补码的减法规则是:【X-Y】补=【X】补+【-Y】补。

三、非数值数据的表示
计算机除了处理数值数据外,还要处理大量的非数值数据。如文字信息等。为此必须对非数值数据进行编码。这样不仅计算机能够方便地处理和存储它们,而且还可以赋予它们数值数据的某些属性。
首先是ASCII码,它是目前比较通用的字符二进制编码,微型计算机中也普遍采用它作为字符的编码。由于ASCII码只使用了7位二进制进行编码,故最多表示128个字符。这往往不能满足使用要求。为此在IBM-PC系列及其兼容机上,使用扩展的ASCII码。扩展的ASCII码使用8位二进制进行编码,故可表示256个字符。我们要把一些常用的ASCII码记住,如数字0-9,大小写字母,其实只要记住第一个,后面的依次类推就可以了,具体数据大家可以查看ASCII码表。
还有就是变形国标码,国标码是为使计算机能处理汉字信息而对汉字进行编码,国标码是16位编码,高8位表示汉字符的区号,低8位表示汉字符的位号。但是目前在计算机中文平台中普遍采用的汉字编码是变形的国标码,就是把国标码的第15位和第7位均置1,由于国标码中第15位和第7位都是0,所以这种变形实际上就是在国标码上加8080H。应该注意的是第15位和第7位,是从0开始记起。
四、基本数据类型
计算机中最小存取单位为位。
计算机存取的以二进制表示的信息位数一般是8的倍数,它们有如下专门的名称。
1、字和字节
        一个字节由8个二进制位组成,2个字节(即16个二进制位)组成一个字,字节和字的最低位都称为第0位,最高位分别是第7位和第15位。要注意的是,字的低8位称低字节,高8位称为高字节。
2、双字和四字
双字由2个字组成,即包含32个二进制位。低16位称为低字,高16位称为高字。注意和低字节和高字节区分。四字的定义从表面就可以看出来,由四个字组成,包含64个二进制位。
3、十字节
十字节由10个字节组成,含80个二进制位。可用于存储非常大的数或表示较多的信息。
4、字符串
字符串是指由字符构成的一个线性数组。通常每个字符用一个字节表示,但有时每个字符也可以用一个字或一个双字来表示。

这集视频主要是概念性的东西,多看几遍就记住了。

补充几种基本的逻辑运算:
“与”运算(AND):“与”运算又称逻辑乘,如有A、B两个逻辑变量(每个变量只能有0或1两种取值),在进行“与”运算时,只有当A、B两个变量的取值均为1时,它们的运算结果才为1,其它情况均为0。
“或”运算(OR):“或”运算又称逻辑加,当A、B两个逻辑变量进行“或”运算时,只要有一个变量取值为1,它们的运算结果就是1。
“非”运算(NOT):这个简单,0进行“非”运算就为1,1进行“非”运算为0。
“异或”运算(XOR):当A、B两个逻辑变量取值相异时,它们的“异或”运算结果为1。
需要注意的是,所有的逻辑运算都是按位操作的!
2010-2-3 14:45
0
雪    币: 66
活跃值: (26)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
对“字符串是指由字符构成的一个线性数组”这句话不是很理解,百度了下也不是很清楚,是否有高人指点一下,谢谢!
2010-2-3 14:50
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
收下了 谢谢分享
2010-2-3 16:38
0
雪    币: 56
活跃值: (276)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
支持支持!继续写我么大家来监督!哈哈
2010-2-3 21:13
0
雪    币: 69
活跃值: (155)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Esc
8
好整齐啊,我一般做笔记都是乱写.
2010-2-3 21:22
0
雪    币: 66
活跃值: (26)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
呵呵,欢迎监督,让我进步更快,嘿嘿。


整齐一些查看的时候方便啊,再说了乱的话放论坛上来是要被大家骂的哈!

在做第三集视频的笔记,头有些晕了,寄存器组,刚开始讲的都是些文字叙述各个寄存器的功能,“点到即止”,看得我似懂非懂,幸好教程中说以后会频繁接触到这些东西,到时候可以补回来。不过这样做起笔记来就费劲了,唉。争取明天上午写好贴出来!顺便请大家帮个忙,在笔记中会提到一些遇到的问题,希望认真看了的朋友可以帮忙解决一下,谢谢!
2010-2-3 21:31
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
很认真啊。。。
2010-2-3 22:12
0
雪    币: 90
活跃值: (91)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
字符串是指由字符构成的一个线性数组
就是说比如 10个字符构成一个10个字符的字符串  
就这样
没什么
不用深究
2010-2-3 23:53
0
雪    币: 66
活跃值: (26)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
这样哈,谢谢楼上的解答!
2010-2-4 00:08
0
雪    币: 66
活跃值: (26)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
隔了三天了,朋友结婚,唉。又耽误了。晚上再发一篇笔记!
2010-2-6 17:58
0
雪    币: 66
活跃值: (26)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
本章主要掌握的要点
1、14个16位寄存器,8个8位寄存器
2、8086/8088七种寻址方式(熟练掌握,必须要会!)
3、8086/8088各种指令


这一章的知识点是重点,是必须要掌握好的,只有这章掌握好,才能很好的继续往下学习。

第三集视频主要讲解了三个要点中的第一个,8086/8088的寄存器组。
8086/8088的寄存器组包括1通用寄存器,2控制寄存器,3段寄存器
1、通用寄存器
通用寄存器又包括数据寄存器指针寄存器变址寄存器这些寄存器除了各自的专门用途外,它们均可用于传送和暂存数据,可以保存算术逻辑运算中的操作数和运算结果。
下面是各个寄存器的专门用途:
        数据寄存器:数据寄存器主要用来保存操作数或运算结果等信息,它们的存在节省了为存取操作数所需占用总线和访问存储器的时间。16位的数据寄存器有四个,分别是AX、BX、CX、DX,一个16位的数据寄存器可以拆成两个8位的寄存器,比如AX可以拆成AH(高8位)和AL(低8位),其它类似。
        各个数据寄存器的用途:AX可以拆成AH和AL,当然AH和AL同样也可以被当做两个单独的寄存器,AX作为累加器用,所以它是算数运算的主要寄存器。另外,所有的I、O指令都是用这一寄存器与外部设备传送信息。BX又叫基址寄存器,它是数据寄存器中唯一一个可以作为存储器指针使用的寄存器。CX在字符串操作和循环(LOOP)操作的时候用作隐含的计数器。DX一般在作双字长运算时把DX和AX组合在一起存放一个双字长数,DX用来存放高位字。此外,对某些I/O操作,DX可用来存放I/O的端口地址。
        指针寄存器(SP堆栈指针和BP基址指针)和变址寄存器(SI源变址寄存器和DI目的变址寄存器):变址和指针寄存器主要用于存放某个存储单元地址的偏移,或某组存储单元开始地址的偏移,即作为存储器(短)指针使用。作为通用寄存器,它们也可以保存16位算术逻辑运算中的操作数和运算结果,有时运算结果就是需要的存储单元地址的偏移。SI源变址寄存器和DI目的变址寄存器一般与DS联用,用来确定数据段中某一存储单元的地址。这两个变址寄存器有自动增量和自动减量的功能,所以用于变址是很方便的。在串处理指令中,SI和DI作为隐含的源变址和目的变址寄存器,此时SI和DS联用,DI和ES联用,分别达到在数据段和附加段中寻址的目的。SP指示栈顶的偏移地址,BP可作为堆栈区中的一个基地址以便访问堆栈中的其它信息。SP和BP都可以与SS寄存器联用来确定堆栈段中的某一存储单元的地址。

2、段寄存器:8086/8088CPU依赖其内部的四个段寄存器来实现寻址1M字节物理地址空间,四个段寄存器分别是CS(代码段),DS(数据段),ES(堆栈段),SS(附加段)。这四个段寄存器的作用在上段中已有说明,不再赘述。

3、控制寄存器:控制寄存器包括两个,分别是指令指针(IP)和标志寄存器(FLAG)。指令指针IP给出接着要执行的指令在代码段中的偏移,即始终指向下一条指令的首地址,它与CS寄存器联用确定下一条指令的物理地址。当这一地址送到存储器后,控制器可以取得下一条要执行的指令,而控制器一旦取得这条指令就马上修改IP的内容,使它指向下一条指令的首地址。标志寄存器包含了9个标志,主要用于反映处理器的状态和运算结果的某些特征,9个标志分别为:CF,PF,AF,ZF,SF,TF,IF,DF,OF。9个标志在标志寄存器中的位置分别为:第0位,第2位,4,6,7,8,9,10,11。
将9个标志分成两部分,一部分是运算结果标志,另一部分是状态控制标志。运算结果标志有6个,分别是进位标志CF,零标志ZF,符号标志SF,溢出标志OF,奇偶标志PF,辅助进位标志AF。它们的作用如下:
        进位标志CF主要用于反映运算时最高有效位是否产生进位或借位。如果有进位或借位的话,CF=1,其它情况CF=0。
        零标志ZF用于反映运算结果是否为0.如果运算结果为0,则ZF被置1,否则置0。
        符号标志SF用于反映运算结果的符号位。SF与运算结果的最高位相同,如果运算结果的最高位为1,即运算结果为负数,则SF被置1,否则SF被置0。
        溢出标志OF用于反映有符号数加减运算是否引出溢出。如运算结果超出了8位或16位有符号数的表示范围,即在字节运算时大于127或小于-128,在字运算时大于32767或小于-32768,称为溢出。如溢出,则OF被置1,否则置0。
        奇偶标志PF用来为机器中传送信息时可能产生的代码出错情况提供检验条件,当结果操作数中“1”的个数为偶数时置1,否则置0。
        辅助进位标志AF:在字节操作时,如发生低半字节向高半字节进位或借位;在字操作时,如发生低字节向高字节进位或借位,则辅助进位标志AF被置1,否则AF被清0。

        上面6个都是运算结果标志,剩下的3个标志就是状态控制标志,分别是方向标志DF,中断允许标志IF和追踪标志TF。
        方向标志DF决定着串操作指令执行时,有关指针寄存器调整方向。当DF为1时,每次操作后使变址寄存器SI和DI减量,这样就使串处理从高地址向低地址方向处理。当DF为0时,则使SI和DI增量,使串处理从低地址向高地址方向处理。
        中断允许标志IF决定着CPU是否响应外部可屏蔽中断请求,当IF为1时,CPU能够响应外部的可屏蔽中断请求;当IF为0时,则不响应外部的可屏蔽中断请求。有关中断原理将在后续章节说明。
        追踪标志TF,当TF被置1后,CPU进入单步方式,所谓单步方式是指在一条指令执行后,产生一个单步中断,主要用于程序的调试。

下面讲述存储器分段和地址的形成
1、存储单元的地址和内容
在存储器里以字节为单位存储信息。为了正确地存放或取得信息,每一个字节单元给予一个存储器的地址。地址从0开始编号,顺序地每次加1。在机器里,地址是用二进制数来表示的。它是无符号整数,但为了书写方便,我们用十六进制格式书写。16位二进制数可以表示的地址范围是0到65535(这个范围眼熟吧,前面提到过,是要牢记的,呵呵。),65536个字节单元的存储容量就是64K,其地址编号的范围用十六进制数表示为:0到FFFFH。

感觉这一节有些抽象,单纯的说各个寄存器是做什么用的,没有实例不是很容易明白,好在后续的教程中会用到这些知识,到时候回过头来看一看巩固一下就可以了!
下一集视频接着讲述关于存储器分段和地址的形成的内容。
2010-2-6 20:59
0
雪    币: 56
活跃值: (276)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
我们已经在等第三章了呵呵
2010-2-7 10:52
0
雪    币: 66
活跃值: (26)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
16
看的没那么快,要消化消化,呵呵。晚上发。谢谢支持!
2010-2-7 11:43
0
雪    币: 66
活跃值: (26)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
字节存储顺序
一个存储单元(以字节为单位)中存放的信息称为该存储单元的内容。多字节数据时按怎样的顺序存放的呢?实际情况和CPU有关,微处理器中的存放顺序有正序(Big-Endian)和逆序(Little-Endian)之分。常见的Intel体系芯片使用的编码方式属于Little-Endian类。某些RISC架构的CPU,如IBM德Power-PC等属于Big-Endian类。
两种编码区别:Big-Endian 高位字节存入低地址,低位字节存入高地址,依次排序。Little-Endian 低位字节存入低地址,高位字节存入高地址,反序排列。这部分可参考加解密第三版的1.1.1节的图,可以很直观的了解两种编码的区别。

存储器地址的分段及物理地址的形成
前面已经提到16位字长的机器,可以访问最大存储空间为64K字节。而8086/8088CPU有20跟地址线,可直接寻址的物理地址空间为1M字节。所以,要访问1M字节空间的存储器必须有20位地址。用16进制数表示1M字节的地址范围应为00000-FFFFF。
那么,在16位字长的机器里,采用存储器地址分段的方法来提供20位地址。程序员在编制程序时要把存储器划分成段,每个段的大小可达64K,这样段内地址可以用16位表示。段与段之间可以相连,也可以不相连,还可以部分重叠。但IBM PC机队段的起始地址有所限制,段不能起始于任意地址,而必须从任一小段的首地址开始。机器规定:从0地址开始,每16个字节为一小段。在16进制表示的地址中,最低为0(即20位地址的低4位为0)。
在1M字节的存储器里,每一个存储单元都有一个唯一的20位地址,称为该存储单元的物理地址CPU访问存储器时,必须先确定所要访问的存储单元的物理地址才能取得或存入该单元的内容。而要访问的某一个存储单元总是属于某个段,把存储单元的地址与所在段的起始地址的差称为段内偏移,简称为偏移。在一个段内,通过偏移可指定要访问的存储单元,或者说要访问的存储单元可由偏移来决定。在整个1M地址空间中,存储单元的物理地址等于段起始地址加上偏移。存储单元的逻辑地址由:段值和偏移两部分组成,用如下形式表示:段值:偏移。根据逻辑地址可方便地得到存储单元的物理地址,公式如下:物理地址=段值+偏移。所以20位物理地址由16位段地址和16位偏移地址组成。值得注意的是,一个物理地址可用多个逻辑地址表示。
段值由段寄存器给出,偏移可由指令指针IP、堆栈指针SP和其它可作为存储器指针使用的寄存器(SI、DI、BX和BP)给出,偏移还可直接用16位数给出。在指令中不使用物理地址,而是使用逻辑地址,由总线接口单元BIU按需要根据段值和偏移自动形成20位物理地址。

段寄存器的引用
由于8086/8088DPU有四个段寄存器,可保存四个段值。这四个段各有分工,上集视频有提到。在取指令的时候,自动引用代码段寄存器CS,再加上由IP所给出的16位偏移,得到要取指令的物理地址。当涉及到一个堆栈操作时,则自动引用堆栈寄存器SS,再加上由SP所给出的16位偏移,得到堆栈操作所需要的物理地址。当偏移涉及BP寄存器时,缺省引用段寄存器SS。在存取一个普通存储器操作数时,则自动选择数据寄存器DS或附加段寄存器ES,再加上16位偏移,得到存储器操作数的物理地址。在不改变段寄存器值的情况下,寻址的最大范围是64K字节。若某个程序使用的总的存储长度(包括代码、堆栈和数据区)不超过64K字节,则整个程序可以合用一个64K字节的段。加入某个程序的数据区长度超过64K字节,那么就要在两个或多个数据段中存取数据。
2010-2-7 22:15
0
雪    币: 235
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
没有了?继续啊~~
2010-3-8 08:24
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
谢谢楼主,学习一下。。
2010-3-8 08:42
0
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
. 谢谢分享
2010-3-8 09:00
0
雪    币: 178
活跃值: (125)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
呵呵呵,这些还用做笔记啊??最基本的东西而已,不过还是幸苦了
2010-4-5 11:32
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
支持楼主……继续发……
2010-4-14 15:35
0
雪    币: 49
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
非常不错,也需要,入门级的哦,
2010-4-15 14:51
0
雪    币: 74
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
2³  2² 2¹ 2º 2
2010-4-18 10:44
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
谢谢楼主分享.
2010-4-19 23:54
0
游客
登录 | 注册 方可回帖
返回
//