|
|
|
[原创]汇编语言学习跟踪,正在学习汇编的新人们,进来一起进步吧~
中山大学-7 1.8086/8088指令系统 1.数据传送 2.算术运算 3.逻辑运算 4.串操作 5.程序控制 6.处理器 控制 指令语句格式 [标号:]指令助记符 [操作数1],[操作数2] [;注释] 指令是否有操作数,完全取决于指令本身,标号的使用取决于程序的需要, 标号只被汇编程序识别,它与指令本身无关 2.数据传送指令 【1】.传送指令 格式:mov dst(目的操作数),src(源操作数) 源操作数可以是累加器,寄存器,存储单元以及立即数 目的操作数除了立即数,上面的其他3中都可以。 传送不改变源操作数。 1-CPU内部寄存器之间的数据传送: mov ah,al mov dl,dh mov bp,sp mov ax,cs 注意:源和目的操作数不能同时是段寄存器(各种S);代码段寄存器CS不能 作为目的操作数,指令指针IP既不能作为源,也不能作为目的。 2-立即数送至通用寄存器或存储单元(各种存储器寻址方式): mov varb,-1 varb是变量名,代表一个存储单元 mov varw,3456H varw是一个字变量 mov [si],6543H 注意:立即数不能直接传送到段寄存器,立即数永远不能作为目的操作数。 3-寄存器与存储器间的数据传送: mov ax,[varw] varw是一个字变量,存储器操作为直接寻址 mov bh,[di] 存储操作数为寄存器间接寻址 mov di,es:[si+3] 存储器操作数为相对变址寻址,使用段超越前缀 mov varb,dl varb是一个字节变量 mov ds:[bp],dl 使用段超越前缀 mov varw,ds varw是一个字变量 注意源操作数和目的操作数类型要一致(8位对8位,16位是16位) 即同时为字节或字,不能一个字节,一个字。 除了串操作指令外,源操作数和目的操作数不能同时是存储器操作数. (两个操作数必须有一个寄存器(除了立即寻)) 利用通用寄存器过渡方法,也适用于段寄存器间的数据传送。 Eg:mov ax,varw1 mov varw2,ax mov ax,cs 把cs的内容送到ds mov ds,ax mov al,'D' 立即数(D的ASC码)送给AL寄存器 mov bx,offset table 把table的偏移地址(不是内容)送到bx寄存器,其中offset为属性操作数 没有offset就是把table的内容送给bx!! 【2】.交换指令 利用交换指令可方便的实现通用寄存器与通用寄存器或存储单元间的数据交 换 格式:xchg oprd1,oprd2 这个指令交换oprd1和oprd2的内容,操作数同时是字节或字 Eg:xchg al,ah xchg si,bx oprd1和oprd2可以1.是通用寄存器和存储单元。2.但不包括段寄存器,3.也 不能同时是存储单元,4.还不能有立即数,可采用各种存储器寻址方式来指 定存储单元 2和3必须通过通用寄存器来进行交换 Eg:xchg bx,[bp+si] (bx)=6f30h,(bp)=0200h,(si)=0046h,(ss)=2f00h,(2f246) =4154h 物理地址=2f000+0200+0046=2f246h 执行后:bx=4154h (2f246h)=6f30h 【3】.地址传送指令 1-指令LEA 称为传送有效地址指令,格式为: LEA REG,OPRD 该指令把操作数OPRD的有效地址传送到操作数REG 操作数OPRD必须是一个存储器操作数, 操作数REG必须是一个16位的通用寄存器。 Eg:LEA BX,[BX+SI+0F62H] 执行前:(BX)=0400H,(SI)=003CH 执行后:(BX)=0400+003C+0F62=139EH 传送的只是偏移地址,并不是物理地址,也不是物理地址下的内容 2-指令LDS 段值和段内偏移构成32位的地址指针,该指令传送32位地址指 针,格式: LDS REG,OPRD 执行操作:(REG)<---(SRC),(DS)<---(SRC+2) 该指令把操作数OPRD中所含的一个32位地址指针的段值部分送给数据段寄存 器DS,再把偏移部分送到指令给出的通用寄存器REG,REG可以是一个16位的 通用寄存器,但实际使用的往往是变址寄存器或指针寄存器。 32位地址指针的偏移部分存储在双字变量的低地址字中,段值部分存储在高 地址字中。 Eg:LDS SI,[10H] 执行前:(DS)=C000H,(C0010H)=0180,(C0012H)=2000H 物理地址:C0000+10=C0010H 执行后:(SI)=0180H,(DS)=2000H 3-指令LES LES也传送32位地址指针,格式: LES REG,OPRD 执行操作:(REG)<---(SRC),(ES)<---(SRC+2) 该指令把操作数OPRD中所含的32位地址指针的段值部分送到附加段寄存器ES ,把偏移部分送到指令给出的通用寄存器REG Eg:LES DI,[BX] 执行前:(DS)=B000H,(BX)=080AH,(0B080AH)=05AEH,(0B080CH) =4000H 物理地址=B0000+080A=0B080AH 执行后:(DI)=05AEH,(ES)=4000H =====================我是无敌分割线====================== 终于见反汇编得出的代码了,原来是这些意思啊,这些玩意貌似和C语言的不太一样,赋值,传值,交换值之类的。 不过还好有点C语言的基础,所以这些还不是十分费力。 但是我发现一个严重的问题,这最近的2堂课,关于存储器,寄存器,和存储单元的内容实在是太多了。本来就是模模糊糊的理解这3个东西,现在更糊了!~ 求高人解释一下这3个的关系好么。。。形象点,详细点,最好了。谢谢了~~ |
|
[原创]汇编语言学习跟踪,正在学习汇编的新人们,进来一起进步吧~
谢谢你的补充哈。。有时候的确有点疑问~~毕竟自学的嘛,没老师教就是麻烦,都没人来解决下问题的~所以就要靠大家互相帮助,互相补充咯~ 至于进度慢的话。。主要是我每天白天都有课啊,所以我都是尽量拿晚上空余时间来学习的。 而且如果遇到视频中比较难的地方,我都会反复看好几遍再加上要做笔记归纳~一个40多分钟的课程,我一般都要看个2,3个小时啊~所以进度比较慢~~ 不过我觉得这样还是蛮好的,至少都比较详细的学习嘛,自学毕竟不等于老师教,有些地方还是不能彻底搞懂哈~~ |
|
[原创]汇编语言学习跟踪,正在学习汇编的新人们,进来一起进步吧~
今天休息下,复习复习,做点练习题~~ |
|
[原创]汇编语言学习跟踪,正在学习汇编的新人们,进来一起进步吧~
好东西算不上啦,就是看视频学习的一些笔记,互相交流,互相学习嘛。。 |
|
[原创]汇编语言学习跟踪,正在学习汇编的新人们,进来一起进步吧~
[QUOTE=只是玩玩;947526]引用段寄存器是DS:MOV [BX+1000H],AL -------------------------------------------------- 目的操作数加:[] 和源操作数加[]都是一样的效果 加了[]就说明这个不是物理地址,而没加[]就是物理地址 不是物理地址我们就得求出物理...[/QUOTE] 哦,这样的咯~知道了,物理地址仍然是DS+BX+1000H,是吧? 先谢谢细心讲解哈~ |
|
[原创]汇编语言学习跟踪,正在学习汇编的新人们,进来一起进步吧~
中山大学-6 8086/8088有7种基本寻址方式: (6)基址加变址寻址方式 操作数在存储器中,操作数的有效地址由:基址寄存器之一的内容与变址寄 存器之一的内容相加 即:EA=BX或BP+SI或DI 在一般情况下,如果BP之内容作为有效地址的一部分,则以SS之内容为段值 ,否则以DS之内容为段值 Eg:mov ax,[bx][di] 如果ds=2100H,bx=0158H,di=10A5H 则EA=0158+10A5=11FD 物理地址=21000+11FD=221FDH 所以AX=1234H 221FD上的内容是34,221FE上的内容是12 目的操作数采用基址加变址寻址,引用的段寄存器是DS: mov ds:[bp+si],al 源操作数采用基址加变址寻址,引用的段寄存器是ES: mov ax,es:[bx+si] 这种寻址方式适用于数组或表格处理。一般基址寄存器存放数组首地址,变 址寄存器定位数组各个元素 mov ax,[bx+di] mov ax,[bx][di] 这2种表现方式是等价的。 (7)相对基址加变址寻址方式 操作数在存储器中,操作数的有效地址由基址寄存器之一的内容与变址寄存 器之一的内容及指令中给定的8位或16位位移量相加得到 即:EA=BX或BP+SI或DI+8位位移量或16位位移量 在一般情况下,如果BP之内容作为有效地址的一部分,则以SS之内容为段值 ,否则以DS之内容为段值 在计算有效地址时,如果位移量是8位,那么被带符号扩展成16位。(补码表 示) 当所得有效地址超过FFFFH时,就取其64K的模 Eg:mov ax,[bx+di-2] 假如,ds=5000H,bx=1223H,di=54H (51275)=54H (51276)=76H 物理地址=50000+1223+0054+FFFE(-2)=51275H 执行之后(AX)=7654H mov ax,[bx+di+1234H] mov ax,1234H[bx][di] mov ax,1234H[bx+di] mov ax,1234H[di][bx] 这4个表示方式相同 ================我是无敌分割线========================= 汇编语言的7种寻址方式总算学完了,虽然寄存器,存储器之类的3,4章仍然没有搞太懂。 但是这些寻址方式还是听着挺轻松的。从这些内容反过去看那些东西,貌似能够理解一点了~~ 慢慢来吧,总有一天。我会搞定它的!!!! 另外。。一直有个疑问: 1.目的操作数采用了寻址方式后,物理地址怎么算?EA=bx+di,物理地址=ds+EA? 2.执行指令之后,是寻址表达式等于源操作数还是怎么样?[bx][di]=al? mov [bx][di],al 比如bx=1000H,di=0500H,ds=2000H,al=1CH 麻烦知道的大大给个详细的过程,在此小弟谢谢了~~ |
|
[原创]汇编语言学习跟踪,正在学习汇编的新人们,进来一起进步吧~
额,我2个都有拉。。我觉得视频比较直观一点,所以我就先学习视频,再看书~ |
|
|
|
[原创]汇编语言学习跟踪,正在学习汇编的新人们,进来一起进步吧~
在每篇日志最后,我都会提出我在学习过程中产生的问题。。字有点多,不太容易注意。。下次改进哈~~~~ 麻烦大神解答下小弟这些对你们来说比较简单的问题拉~~谢谢~ |
|
[原创]汇编语言学习跟踪,正在学习汇编的新人们,进来一起进步吧~
我是个可怜的娃啊。。。求帮忙啊,各位在线的大神。。。帮下忙,解决下新人的难题嘛 |
|
[原创]汇编语言学习跟踪,正在学习汇编的新人们,进来一起进步吧~
中山大学-5 1.16进制数的最高位为字母,则应在其前加一个0.如:0A7F0H 2.8086/8088的寻址方式 计算机中的指令由操作码字段和操作数字段两部分组成。 汇编语言是一种符号语言,它用助记符来表示操作码,用符号或符号地址来 表示操作数或操作数地址。它与机器指令一一对应的。 Eg:ADD AX,BX AX为目的操作数,BX为源操作数 8086/8088有7种基本寻址方式: (1)立即寻址方式 操作数就包含在指令中,它作为指令的一部分,跟在【操作码】后存放在【 代码段】,这种操作数称为立即数。可以为8位或16位的。 Eg:指令:MOV AL,5 执行指令后(AL)=05H 指令:MOV BX,3064H 执行指令后(BX)=3064H 寄存器必须对应操作数的位数(8位对8位,16位对16位) (2)寄存器寻址方式 操作数在CPU内部的寄存器中,指令制定寄存器号。 对于16位操作数,寄存器可以是AX,BX,CX,DX,SI,DI,SP,BP等 对于8位操作数,寄存器可以是AL,AH,BL,BH,CL,CH,DL,DH 这种寻址方式由于操作数在寄存器中,不需要访问存储器来取得操作数,因 而可以缺的较高的运算速度。 Eg:指令 MOV AX,BX 如指令执行前(AX)=3064H(BX)=1234H,则指令执行后 (AX)=1234H,(BX)保持不变 注意:8位寄存器对应8位,16位寄存器对应16位。不能8位对16位,或者16位 对8位的错位指令 (3)直接寻址方式 操作数在寄存器中,指令直接包含有操作数的有效地址(偏移地址)。操作 数一般放在数据段中,所以操作数的地址由DS加上指令中直接给出的16位偏 移得到。特殊情况(采用段超越前缀),操作数也可包含在数据段外的其它 段中。 Eg:指令 MOV AX,[8054] 如(DS)=2000H,则执行结果为:(AX)=3050H (28054H上的内容为50,28055H上的内容为30) 物理地址=20000+8054=28054H 在汇编语言指令中,可以用符号地址代替数值地址,如:MOV AX,VALUE 此时VALUE为存放操作数单元的符号地址。如写成:MOV AX,[VALUE] 两者是等效的。 如VALUE在附加段中,则应制定段超越前缀如下: MOV AX,ES:VALUE 或者 MOV AX,ES:[VALUE] 因为是附加段(ES),所以段超越前缀为ES: 直接寻址方式常用于处理单个存储器变量的情况。它可实现在64K字节的段内 寻找操作数。直接寻址的操作数通常是程序使用的变量。 注意立即寻址和直接寻址书写表示方法上的不同,直接寻址的地址要放在[] 中,在源程序中,往往用变量名表示。 (4)寄存器间接寻址方式 操作数在存储器中,操作数有效地址在SI,DI,BX,BP这4个寄存器之一中。 在一般情况下: 如果有效地址在SI,DI和BX中,则以DS段寄存器之内容为段值。 如果有效地址在BP中,则以SS段寄存器之内容为段值。 Eg:MOV AX,[SI]如果(DS)=5000H,(SI)=1234H 则物理地址=50000+1234=51234H,则执行该指令后(AX)=6789H 指令中也可指定段超越前缀来取得其他段中的数据: MOV AX,ES:[BX] 引用的段寄存器是ES MOV [SI],AX 目的操作数寄存器间接寻址 MOV [BP],CX 引用的段寄存器是SS MOV SI,AX 目的操作数寄存器寻址 (5)寄存器相对寻址方式 操作数在存储器中,操作的有效地址是一个基址寄存器(BX,BP)或变址寄 存器的(SI,DI)内容加上指令中给定的8位或16位位移量之和。 EA(有效地址)=(BX)或(BP)或(SI)或(DI)+8位位移量或者16位位移 量 在一般情况下: 如果有效地址在SI,DI和BX中,则以DS段寄存器之内容为段值。 如果有效地址在BP中,则以SS段寄存器之内容为段值。 物理地址=16d×(DS)+(BX)或(SI)或(DI)+8位位移量或者16位位移量 物理地址=16d×(SS)+(BP)+8位位移量或者16位位移量 在指令中给定的8位或16位位移量采用补码形式表示。在计算有效地址时,如 位移量是8位,则被带符号扩展成16位 Eg:MOV AX,[DI+1223H] 假如,(DS)=5000H, (DI)=3678H 则物理地址50000+3678+1223=5489BH 则(AX)=55AAH 5489BH上的内容是AA(对应AL),5489CH的内容是55(对应AH) 源操作数采用寄存器相对寻址,引用段寄存器是SS:MOV BX,[BP-4] 目的操作数采用寄存器相对寻址,引用段寄存器是ES:MOV ES:[BX+5],AL 指令:MOV AX,[SI+3]与MOV AX,3[SI]是等价的 ================我是无敌分割线========================= 第5章都比第3,4张好搞啊。。感觉听起还是蛮有感觉的,虽然有些地方还是没有搞定,慢慢搞吧~~~顺便求高人解决几个问题: 1.直接寻址方式中,可以用符号地址代替数值地址。 在百度里面查了下符号地址,如是解释:符号地址是数值地址符号化后的地址,它相当于偏移地址; 符号化的意思是不是它会有正负,可以是向前偏移,也可以向后偏移???? 这样的话是不是就可以表示成[4233H]或者[-4233H]呢?? 2.目的操作数采用寄存器相对寻址,引用段寄存器是DS:MOV [BX+1000H],AL 这时的运算方式是不是和源操作数采用寄存器相对寻址时的一样呢??? 比如(DS)=1000H,(BX)=1500H,(AL)=20H 物理地址=10000+1500+1000=12500H BX+1000H=AL 这样对么????? 谢谢疯狂P崽的提醒哈,没有注意~~ |
|
|
|
|
|
[原创]汇编语言学习跟踪,正在学习汇编的新人们,进来一起进步吧~
中山大学-4 1.字节存放信息 字节单元对应存放信息表示为:(字节单元)=信息 如4号字节单元存放的信息为34H表示为:(0004H)=34H 2.字存放信息 字单位的地址采用它的低地址来表示的(高位存入高地址,地位存入低地址 ) 比如4号字单元的内容为1234H,表示为(0004H)=1234H 34H存在0004H中(低位) 12H则存在0005H中(高位) 3.双字存放信息 同字存放信息 4.(0004H)=1234H (1234H)=1A12H so:((0004))=1A12H 5.存储器地址的分段和物理地址的形成 16位字长的机器可以访问最大的存储空间为64K字节 而8086/8088CPU有20根地址线,可直接寻址的物理地址空间为1M(2的20次方 )。所以要访问1M字节空间的存储器必须有20位地址。用16进制数表示1M字 节的地址范围为00000--FFFFF。 在16位字长的机器里,用存储器地址 分段的方法。 程序员在编制程序时要把存储器划分成段,每个段的大小可达64K,这样段内 地址可以用16位表示。 段与段之间可以相连,也可以不相连,还可以部分重叠。 段的起始地址有所限制,段不能起始于任意地址,而必须从任一小段的首地 址开始。 机器规定:从0地址开始,每16个字节为一小段(16的倍数) 000'0'0,00001,00002,...,0000E,0000F;0为第1小段 000'1'0,00011,00012,...,0001E,0001F;1为第2小段 ... 第一列就是每个小段的首地址,其特征是:在16进制表示的地址中,最低为0 (即20位地址的低4位为0)如:0000'0'H,0001'0'H, 0002'0'H...4233'0'H...FFFE'0'H,FFFF'0'H 在1M字节的存储器里,每一个存储单元都有一个唯一的20地址,称为该存储 单元的物理地址。 要先确定存储单元的物理地址才能取得(或存入)该单元中的内容,访问的 某一个存储单元总是输入某个段。 把存储单元的地址与所在段的起始地址的差称为段内便宜,简称为偏移。 在1M地址空间中,存储单元的物理地址等于段起始地址加上偏移。 存储单元的逻辑地址由:段值和偏移2部分组成。表示为:段值:偏移 物理地址=段值×16+偏移 比如:用16进制表示的逻辑地址1234:3456所对应的存储单元的物理地址为: 物理地址=12340+3456=15796H 由于段可以重叠,所以一个物理地址可以用多个逻辑地址表示。 10020H---------------- 2325H 12330H---------------- 15H 12345H---------------- 存储单元的物理地址是12345H 两个重叠段的段值分别是:1002H和1233H 在对应段内的偏移分别是2325H和0015H 所以12345H=1002(0)H+2325H或者12345H=1233(0)H+0015H 1002:2325 1233:0015 逻辑地址不同,但是物理地址相同 段值由段寄存器给出,偏移可由指令指针IP,堆栈指针SP和其他可作为存储 器指针使用的寄存器(SI,DI,BX和BP)给出,偏移还可直接用16位数给出 。指令中不使用物理地址,而是使用逻辑地址,由总线接口单元BIU按需要根 据段值和偏移自动形成20位物理地址。 6.段存储器的引用 在取指令的时候,自动引用代码段寄存器CS,再加上由IP给出的16位偏移, 得到要取的指令物理地址。(得到执行指令的顺序) 当涉及到一个堆栈操作时,则自动引用堆栈寄存器SS,再加上由SP所给出的 16位偏移,得到堆栈操作所需要的物理地址。 当偏移涉及BP寄存器时,缺省引用段寄存器SS 在存取一个普通存储器操作数时,则自动选择数据寄存器DS或附加段寄存器 ES,再加上16位偏移,得到存储器操作数的物理地址 每个存储单元只有唯一的物理地址,但它却可由不同的段地址和不同的偏移 地址组成。 ================我是无敌分割线========================= 第4课依然难懂,依然抽象啊。看的我。。。 好好复习,好好消化下先。。。有没有高人关注我的帖子的? 问个问题:视频里面有个公式:物理地址=段值×16+偏移 这个×16是什么意思啊?应该是在段值后加0撒,因为首地址一定为0啊。 难道这货单纯表示段值是以16位二进制表示的? 这个×16确实让我纠结了好半天。。 |
|
[原创]汇编语言学习跟踪,正在学习汇编的新人们,进来一起进步吧~
谢谢大家支持。。今天刚刚拿到王爽那本真书啊。激动啊,不过我想我还是先把中山大学的视频看完再去看那本书好了,视频直观点啊~ UP,UP!GO,GO,GO!~ |
|
|
|
[原创]汇编语言学习跟踪,正在学习汇编的新人们,进来一起进步吧~
<1>中山大学-3 1.数据寄存器 用来保存操作数或运算结果等信息,他们的存在节约了存取操作数所需占用 的总线和访问存储器的时间。 16位寄存器(14个):AX(和AL被称为累加器,通过累加器进行计算效率最 高),BX(基址寄存器,是A,B,C,D中唯一一个可以作为存储器指针使用的 寄存器),CX(字符串操作或者循环操作时使用,控制循环次数),DX(做32 位乘除法时,存放被除数或者保留余数) 8位寄存器(8个,分别为对应16位的高,低8位寄存器):AH,AL,BH,BL, CH,CL(移位时使用,保存移位位数),DH,DL 2.变址寄存器(16位) 用于存放单元地址的偏移,或某组存储单元开始地址的偏移,即作为存储器 (短)指针使用 SI(源地址)(串操作时)源操作数 DI(目的地址)(串操作时)目的操作数 3.指针寄存器(16位) SP(堆栈指针)保存栈顶地址 BP(基址指针)堆栈数据区基址的偏移 4.通用寄存器 数据寄存器,指针寄存器和变址寄存器统称为通用寄存器。这些寄存器除了 各自专门用途外,它们均可用于传送和暂存数据,可以保存算术逻辑运算中 的操作数和运算结果 5.段寄存器(16位) 8086/8088CPU依赖其内部的4个段寄存器实现寻址1M字节物理地址空间 CS(代码段)放程序用 DS(数据段)放操作数据用 ES(附加段)经常和数据段同时使用 SS(堆栈段)放堆栈数(存,取数时) 6.控制寄存器(16位) (1)指令指针 IP给出接着要执行的指令在代码段中的偏移(永远指向下一条指令) (2)标志寄存器 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OF DF IF TF SF ZF AF PF CF ----运算结果标志---- 进位标志CF 反映运算是否产生进位或借位(进位,借位。CF=1) 零标志ZF 反映运算结果是否为0(=0,ZF=1 else!=0,ZF=0) 符号标志SF 反映运算结果的符号位。SF与运算结果的最高位相同,最高位为 1,则SF=1,否则SF=0 溢出标志OF 反映有符号数加减运算是否引出溢出。8位(>127,<-128),16( >32767,<-32768)符合范围为溢出,OF=1,否则OF=0 奇偶标志PF 反映运算结果中"1"的个数。偶数,PF=1。奇数,PF=0 辅助进位标志AF 低字节向高字节进位或借位时,AF=1,否则AF=0 ----状态控制标志---- 方向标志DF 串操作时 DF=1,串操作指令按<减>方式改变有关的存储器指针值(正方向) DF=0,串操作指令按<加>方式改变有关的存储器指针值(负方向) 中断允许标志IF 决定着CPU是否响应外部可屏蔽中断请求 IF=1时,响应 IF=0时,不响应 追踪标志TF 用于程序调试 TF=1,CPU进入单步方式(指在一条指令执行后,产生一个单步中断) 7.存储单元的地址和内容 在存储器里以字节为单位存储信息。 每一个字节单元以一个存储器的地址。地址从0开始编号,顺序的每次加1。 字节单元(8位二进制数表示的字符)-->存储器地址(16位二进制数表示的 地址) 16位的二进制数可以表示2的16次(65536)方个字节单元 地址范围应该是0--65535 65536个字节单元的存储容器就是64K(64×1024) 地址编号的范围用16进制数表示为0--FFFFH ================我是无敌分割线========================= 终于把第3课看完了,短短40多分钟的课,我足足用了2个半小时才看完,我的天。寄存器这章太抽象啦,看完之后头晕晕的,并且还不是特别能够完全搞明白。还有各种问题啊,晕~~~~话说联系着后面的知识运用起来,这些就好理解了。。真的么?? 哎。。。今天晚上绝对做噩梦。。。寄存器啊。。。。 |
|
|
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值