第四章 汇编指令系统 (Pro)

考点1:指令的格式功能及用法

         一、指令格式

                        

操作码操作码地址码

            二、地址码的个数

二级指令

                        MOV     LEA    XCHG   IN  OUT

                        ADD        ADC        SUB        SBB        CMP

                        AND        OR        XOR        TEST        SHL        SHR        SAL        SAR

一地址指令

                        PUSH        POP        INC        DEC        NEG        MUL        DIV

                        NOT           JMP标号        JZ        JC        JS        JA        JB        JG        TL

零地址指令:XLAT        CBW        CWD

一地址指令

                INC        BX;                 寄存器寻址

                INC        [BX];               间接寻址

                DEC        X;                变量X对应的内容加1

二地址指令

                MOV  DST(destination),SRC(source code)

                 立即数可以出现在source code

                DST,SRC        的长度要一致     8/8        16/16



ADC  DST,SRC        ;三个数求和

SHL        AL,1/CL        ;左移指令      要注意寻址方式

PUSH   AX;   把 AX入栈
POP     BX;   把当前桟顶的字给BX        SP堆栈栈顶

(乘法指令)

MUL        DL;        AL*DL——AX        隐含寻址

MUL        BX;        AX*BX——DX,AX

(求补)

NEG        AL;  0——AL——AL

条件转移指令

JC        L1        ;转移到一个标号
                        单地址用标号来表示,条件转移只有短转移(short)寻址方式  段内字节偏移
                        转移范围在 -128

JZ        【SI】 ;转移到一个位置

无 条件转移指令
JMP        DONE                                                        ;直接用标号 段内转移  远 字/字节   近
JMP        FAR        PTR        DONE                          

零地址指令

CBW        CWD        
set             {STC         CF=1}   |   STI        IF=1

clear          {CLC        CF=0}    |    CLI        IF=0

                                     三  指令类型

(一)传送类型

                        数据传送    MOV        PUSH        POP      

                         地址传送        LEA        LDS        LES

                          外设传送        IN        OUT

通用寄存器之间可以互相传送,但是 数据的长度要一致
立即数只能作为SRC

存储器不能互传
段寄存器  不能互传

MOV        DL,AX                   类型不匹配

MOV        1020,AX                立即数不能作为目的操作数

MOV        DS,0200                    立即数不能传给目的操作数

MOV        【BX],[1200]                存储器之间不能相互传送                

MOV        IP,0FFH;                        IP不能做为目的操作数,也不能作为源操作数

MOV        [BX+si+3】,IP;                     同上

MOV        AX,[BX][BP];                 基址需要和变址搭配使用

MOV        AL,ES:[BP];正确,          格式为    前缀:【强制使用】

MOV        DL,[si][di]        ;                需基变 交互使用

MOV        AX,OFFSET        ;                OFFSET 取有效地址

MOV        AL,OFFSET        TABLE     标号     ;    16位

MOV        CL,30        ;格式不对应

MOV        CS,AX        CS不能作为目的操作数

MOV        BX,DL;        数据类型不匹配

MOV        ES,1000H        立即数不能传给寄存器

MOV        ES,DS        ;  如果要传送段寄存器之间的传送,需要mov    ax,ds    mov  ds,ax   

________________________________________________________________________

MOV    传的是数值          LEA   传的是地址

IN/OUT指令

        外设与主机之间的传送                 IN    AX/AL  .PONT   (口地址)

                                                             OUT PONT(口地址)  AX/AL

mov  AX,1000H           直接将内容放入 内存单元中        

mov AX,【1000H】      从1000H地址取一字的数据
mov  【1200】,AL          从1200地址取一字节单元内容 传送给AL    

2、LEA

MOV AX,[1000H] ;   AX=5678H          ;取内容

LEA   BX,[1000H];  BX=1000H            ;取地址

        

PUSH/POP

OPR 字:{sp-2——sp

                  OPR  字 ——栈中(顶sp)}

OPR 字:{桟顶字——OPR  底字

                sp+2——Sp

        }
 

AX=5678H    BX=1234H  
push  AX

push  BX
pop    CX

pop    DX

出栈后   CX= 3412        DX=7856H

34H
12H
78H
56H

换码指令  XLAT、

LDS,LES

(二)算数运算

                                                                         加法指令

       

                

ADDADCINC

ADD DST,SRC    ;  DST+SRC——DST

ADC  DST,SRC  ;   DST+SRC+CF   ——DST

INC        8/16;      不能是 Immediate Data  ——不影响CF

减法指令

SUB  DST,SRC;  DST-SRC——DST

SBB    DST,SRC;        DST-SRC-CF——DST

                                                                乘法指令

MUL

IMUL                

                                                                        除法指令

DIV

IDIV

        符号扩展

CBW                字节扩字

        MOV AL,65H;

        CBW     AL;     AL=0065H

CWD                 字扩双字


已知 XYZ  变量——  (X*Y+Z——S)

MOV         AX,X        ;

MOV         BX,Y        ;

MUL        BX            ;

ADD        AX,S        ;

ADC        DX,0        ;

已知 XYZ  S  存字节变量——  (X*Y+Z——S)

MOV        AX,X;

MUL        Y;                                                                ——x*y——ax

MOV        BX,AX;                                                        x*y_______BX

MOV        AL,2;

CBW

ADD        AX,BX;

MOV        A,AX;

乘法

IMUL        OPR;       

                                AL*OPR——AX

                                AX*OPR——DX,AX

除法

AX/OPR        ——AL 商

                             AH 余

DX,AX        ——    AX商

                               DX余

AL=37H        BL=95H        执行指令        IMUL        BL后,AX=

!!!   80H以上是负数   80以下是正数

AL*BL=37HX95H=负——AX

1        去负号   BL=95;        利用NEG   去负号        =100-95=6B

2        相乘        37Hx6BH=16FDH

3        加负号        0000H-16FDH=-16FDH

(三) 位操作

        逻辑

                AND        OR        XOR        TEST, NOT(取反)

                清0          置1        取反            与(不返回结果q)

                                                (清0)本身异或本身

       

        移位
                SHL        SAL        左移
                SHR        SAR        右移动
        循环移                                                                CL

                ROL        RCL        循环左移

                ROR        RCR        循环右移

                   

(四)控制转移异或本身

无条件转移
                       JMP        标号

条件转移

判断       CMP AX.BX                                ;AX-BX=0

                JZ/JE        L1                               ;当AX-BX=0 时转 L1

                CMP        CX,0                             

                JZ        L2                                                           当CX=0时,转L2

CMP        AX,BX                

JC        L3                                                      ;当AX<BX  ||  CF=1时转L3

CMP        AX,BX                        

JNC        L4                                                        ;当AX>BX   ||  CF=0时转L4

TEST        AX,8000H

JZ        L5

SAL        AL,1

JNC        L6        ;当CF=0时转 L6

TEST        AL,01H    (D0)        ;AL最低位为1时,为奇数转L7

JNC        L7   ;当CF=0时  转 L7

SHR        AL,1                        ;当CF为1时 转L8判断奇偶性

JC        L8        ;

正数        OR     AX,AX;  相或不变

JNS        L7        ;        SF为0        ,AX为正数转L7


负数        AND        AX,AX;根本身相与不变
                JS        L8        当SF为1时转L8

偶数        TEST        AL,01H

                JZ        L7        偶

                SHR        AC,1

                JNC        L8

无符号数的转移

JA        大于转        JB小于转

JAE        大于等于        JBE        小于等于

有符号数转移

JG        大于        JL        小于

JGE        大于等于        JLE        小于等于

循环转移

LOOP         标号        CX-1—— CX等于0时退出

LOOP2/LOOPE        ;CX-1—— CX,CX不等于0且ZF=1时循环

LOOPI/LOOPNE;        CX-1—— CX,CX不等于0且ZF=0时循环

程序中断指令

STI                                SLI

INT        21H        (4种功能号)        保护三个字  FR、CS、IP

                                                        恢复三个字 IP、CS、FR(IRET)

⑤ 子程序调用和返回指令

call:保护1个(2个字)(CS)IP                段内调用  保护  IP

RET:                                                         段间调用  保护 CS:IP

(五)处理机类

CLC   CF=0

STC        CF=1

CMC        CF_CF取反        

CLD          DF_0        低——高

CTD        DF——1        高——低

CLI        IF=0         

STI        IF=1

六  数据传操作类

传送:从源存储区到目的存储区              MOVSB/MOVSW

存入串:将AX的数寄存入存储区       STOSB/STOSW

从串取 :将源存储区的内容送AX        LODSB/LODSW

比较        源和目的的串                        CMPSB/CMPSW

串扫描            将AX的内容与目的串的  一个数据 比较        SCASB/SCASW

⑥REP

        CX——CX-1

判断CX是否,如CX=0,退出。

⑦REPE/REPZ

               CX——CX-1

        判断CX=0或ZF=0则退出

⑧串重复前缀REPNE/REPNZ

        CX——CX-1

判断CX=0或ZF=1则退出

零地址指令

源串DS:[SI],目的串ES:[DI]

源串首/末地址——SI,目的串首、末地址——DI

指令执行后,SI/DI   +   1/2

                                 _

5地址递增(CLD/DF=0) =MOVSB        
  地址递减 (STD/DF=1)=MOVSW

串存储

源存信息AL/AX

目的串首地址(末地址)——DI

串长度——CX

设置方向标志位(CLD使DF=0,STD使DF=1)

STOSB:AL———【DI】,DI+-1

stosw:AX——【DI】,DI+-1

从串读取(ODSB)(ODSW)

目的AL/AX

源串首地址(末地址)——SI

串长度——CX

设置方向标志(CLD使 DF=0,STD使DF=1)

LODSB:[SI]——AL,SI+-1

LODSW:[SI]——AX,S1+-2

比较字符串 cmpsb/cmpsw

源串首地址(末地址)——SI

目的串首地址(末地址)——DI

串长度——CX

方向(CLD:DF=0),STD:DF=D

考点1  总结

1、操作数的个数

2:指令功能

OR        AX,0FFH;        立即数

 OR        AX,【OFFH】;直接寻址

MOV        AX,BX        寄存器寻址

MOV        AX,[BX]        间接寻址

MOV        AL,0        清0的功能

XOR        AL,AL;        CF=OF=0

LEA        BX,MESS                取地址

MOV        BX,MESS                取内容

ADD        AX,AX

                        功能相等

SAL        AX,1       

ADD        AL.1        SU

INC        AL        ;       

SUB        AX,CX;         AX=AX-CX;

CMP        AX,CX;        AX-CX        不保留数值

3、隐含寻址

        1        MUL/DIV        AL,AX,DX

        2        CBW/CWD       AL,AX,DX

        3        LOOP        :CX

        4        DOS中断调用        入口/出口        {AH,AL=隐含        AHL,DL        AHG,DX=DX}

固定使用

IN/OUT        :AX/AL,DX                位移次数 >=2时,用CL

位移次数——=2时,用CL

考点2:指令执行后对标志位的影响

一、INC和DEC

        不影响CF,其他状态位影响

二、MUL

                CF=OF=0;乘积的高一半为0

                CF=OF=1;乘积的高一半不为0

        IMUL

                CF=OF=0        ;乘积的高一半为低一半的符号扩展

三、AND、OR、XOR、TEST

        CF=OF=0,        AF无定义

四、位移指令

        CF:移出的位

        OF:移位数为1时,移位后最高位与CF不同,则OF=1,否则为0

五、传送类指令,符号扩展,无条件,条件转移,循环转移,INT,NOT

                不影响任何标志位

考点3:指令的寻址方式

寻址方式:

                        指令寻址

                                        段内:IP
                                        段间:CS:IP

                        数据寻址

                                        操作数{CPU中:寄存器中

                                                        主存中{

                                                                        立即数

                                                                        寄存器寻址

                                                                        存储器}}

立即数:

只能出现在源操作数位置,数值\字符\表达式(在代码段存放,当前的下一个)

MOV        AL,5                        MOV        AL,'5'        MOV        AL,2+3

 AL=05                                        AL=35H

双,在src单,不允许出现1地址

寄存器寻址

14个中:IP、CS                                DS ES SS        
           不能用、不能放目的                                源操作数不能是立即数

存储器寻址

直接寻址        mov        AX,[1000H]        PA=DS+0+EA

                        EA=1000H

寄存器寻址        BXBPSIDI        DSX16+[DXSIDI]

                                                    PA=SSX16+[BP]

基址变址寻址        MOV        AX,[BX+SF]        MOVAX,[BX][Si]        EA=BX+SI        PA=SSX16+BP+SD

寄存器相对寻址        可以是变量/数值        MOV        AX,[BX+]

相对基址变址寻址        MOV        AX,[BX+SI+I]

存储器寻址方式中的变量

        变量的定义

                org        0010H

Buf        DW        1234H

单独用变量名 是  直接寻址方式 

                MOV        AX,BUF        ;AX=1234H

LEA        BX,BUF        ;BX=0010H

相对寻址中,变量名表示其偏移地址

回顾

传送        MOV        LEA        PUSH        POP

算术        ADD        ADC        INC        SUB        SBB        DEC        CMP        MUL        IMUL        SBW        CWD

位        AND        OR        XOR        TEST        NOT

转移        JMP,JZ/S        JC        JA/B        JG/Z        

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
中文名: 80x86汇编语言程序设计教程 版本: [PDF] 发行时间: 1998年 地区: 大陆 简介: 本书分为三部分。第一部分是基础部分,以8086/8088为背景,以DOS和PC兼容机为软硬件平台,以MASM和TASM为汇编器,介绍汇编语言的有关概念,讲解汇编语言程序设计技术。第二部分是提高部分,以80386为背景,以新一代微处理器Pentium为目标,细致和通俗地介绍了保护方式下的有关概念,系统和详细地讲解了保护方式下的编程技术,真实和生动地展示了保护方式下的编程细节。第三部分是上机实验指导。 本书的第一部分适合初学者,可作为学习汇编语言程序设计的教材。本书的第二部分适合已基本掌握8086/8088汇编语言的程序员,可作为学习保护方式编程技术的教材或参考书,也可作为其他人员了解高档微处理器和保护方式编程技术的参考书,还可作为程序员透彻地了解Windows程序设计技术的参考书。 第一部分 基础部分 第1章 绪论 1.1 汇编语言概述 1.1.1 汇编语言 1.1.2 汇编语言的特点 1.1.3 恰当地使用汇编语言 1.2 数据的表示和类型 1.2.1 数值数据的表示 1.2.2 非数值数据的表示 1.2.3 基本数据类型 1.3 Intel系列CPU简介 1.3.1 8位微处理器 1.3.2 16位微处理器 1.3.3 32位微处理器 1.3.4 Pentium和Pentium Pro 1.4 习题 第2章 8086/8088寻址方式和指令系统 2.1 8086/8088寄存器组 2.1.1 8086/8088 CPU寄存器组 2.1.2 标志寄存器 2.2 存储器分段和地址的形成 2.2.1 存储单元的地址和内容 2.2.2 存储器的分段 2.2.3 物理地址的形成 2.2.4 段寄存器的引用 2.3 8086/8088的寻址方式 2.3.1 立即寻址方式 2.3.2 寄存器寻址方式 2.3.3 直接寻址方式 2.3.4 寄存器间接寻址方式 2.3.5 寄存器相对寻址方式 2.3.6 基址加变址寻址方式 2.3.7 相对基址加变址寻址方式 2.4 8086/8088指令系统 2.4.1 指令集说明 2.4.2 数据传送指令 2.4.3 堆栈操作指令 2.4.4 标志操作指令 2.4.5 加减运算指令 2.4.6 乘除运算指令 2.4.7 逻辑运算和移位指令 2.4.8 转移指令 2.5 习题 第3章 汇编语言及其程序设计初步 3.1 汇编语言的语句 3.1.1 语句的种类和格式 3.1.2 数值表达式 3.1.3 地址表达式 3.2 变量和标号 3.2.1 数据定义语句 3.2.2 变量和标号 3.3 常用伪指令语句和源程序组织 3.3.1 符号定义语句 3.3.2 段定义语句 3.3.3 汇编语言源程序的组织 3.4 顺序程序设计 3.4.1 顺序程序举例 3.4.2 简单查表法代码转换 3.4.3 查表法求函数值 3.5 分支程序设计 3.5.1 分支程序举例 3.5.2 利用地址表实现多向分支 3.6 循环程序设计 3.6.1 循环程序举例 3.6.2 多重循环程序举例 3.7 习题 第4章 子程序设计和DOS功能调用 4.1 子程序设计 4.1.1 过程调用和返回指令 4.1.2 过程定义语句 4.1.3 子程序举例 4.1.4 子程序说明信息 4.1.5 寄存器的保护与恢复 4.2 主程序与子程序间的参数传递 4.2.1 利用寄存器传递参数 4.2.2 利用约定存储单元传递参数 4.2.3 利用堆栈传递参数 4.2.4 利用CALL后续区传递参数 4.3 DOS功能调用及应用 4.3.1 DOS功能调用概述 4.3.2 基本I/O功能调用 4.3.3 应用举例 4.4 磁盘文件管理及应用 4.4.1 DOS磁盘文件管理功能调用 4.4.2 应用举例 4.5 子程序的递归和重入 4.5.1 递归子程序 4.5.2 可重入子程序 4.6 习题 第5章 输入输出与中断 5.1输 入和输出的基本概念 5.1.1 I/O端口地址和I/O指令 5.1.2 数据传送方式 5.1.3 存取RT/CMOS RAM 5.2 查询方式传送数据 5.2.1 查询传送方式 5.2.2 读实时钟 5.2.3 查询方式打印输出 5.3 中断 5.3.1 中断和中断传送方式 5.3.2 中断向量表 5.3.3 中断响应过程 5.3.4 外部中断 5.3.5 内部中断 5.3.6 中断优先级和中断嵌套 5.3.7 中断处理程序的设计 5.4 基本输入输出系统BIOS 5.4.1 基本输入输出系统BIOS概述 5.4.2 键盘输入 5.4.3 显示输出 5.4.4 打印输出 5.5 软中断处理程序举例 5.5.1 打印I/O程序 5.5.2 时钟显示程序 5.6 习题 第6章 简单应用程序的设计 6.1 字符串处理 6.1.1 字符串操作指令 6.1.2 重复前缀 6.1.3 字符串操作举例 6.2 十进制数算术运算调整指令及应用 6.2.1 组合BCD码的算术运算调整指令 6.2.2 未组合BCD码的算术运算调整指令 6.2.3 应用举例 6.3 DOS程序段前缀和特殊情况处理程序 6.3.1 DOS程序段前缀PSP 6.3.2 对Ctrl+C键和Ctrl+Break键的处理 6.4 TSR程序设计举例 6.4.1 驻留的时钟显示程序 6.4.2 热键激活的TSR程序 6.5 习题 第7章 高级汇编语言技术 7.1 结构和记录 7.1.1 结构 7.1.2 记录 7.2 宏 7.2.1 宏指令的定义和使用 7.2.2 宏指令的用途 7.2.3 宏指令中参数的使用 7.2.4 特殊的宏运算符 7.2.5 宏与子程序的区别 7.2.6 与宏有关的伪指令 7.2.7 宏定义的嵌套 7.3 重复汇编 7.3.1 伪指令REPT 7.3.2 伪指令IRP 7.3.3 伪指令IRPC 7.4 条件汇编 7.4.1 条件汇编伪指令 7.4.2 条件汇编与宏结合 7.5 源程序的结合 7.5.1 源程序的结合 7.5.2 宏库的使用 7.6 习题 第8章 模块化程序设计技术 8.1 段的完整定义 8.1.1 完整的段定义 8.1.2 关于堆栈段的说明 8.1.3 段组的说明和使用 8.2 段的简化定义 8.2.1 存储模型说明伪指令 8.2.2 简化的段定义伪指令 8.2.3 存储模型说明伪指令的隐含动作 8.3 模块间的通信 8.3.1 伪指令PUBLIC和伪指令EXTRN 8.3.2 模块间的转移 8.3.3 模块间的信息传递 8.4 子程序库 8.4.1 子程序库 8.4.2 建立子程序库 8.4.3 使用举例 8.5 编写供Turbo C调用的函数 8.5.1 汇编格式的编译结果 8.5.2 汇编模块应该遵守的约定 8.5.3 参数传递和寄存器保护 8.5.4 举例 8.6 习题 第二部分 提高部分 第9章 80386程序设计基础 9.1 80386寄存器 9.1.1 通用寄存器 9.1.2 段寄存器 9.1.3 指令指针和标志寄存器 9.2 80386存储器寻址 9.2.1 存储器寻址基本概念 9.2.2 灵活的存储器寻址方式 9.2.3 支持各种数据结构 9.3 80386指令集 9.3.1 数据传送指令 9.3.2 算术运算指令 9.3.3 逻辑运算和移位指令 9.3.4 控制转移指令 9.3.5 串操作指令 9.3.6 高级语言支持指令 9.3.7 条件字节设置指令 9.3.8 位操作指令 9.3.9 处理器控制指令 9.4 实方式下的程序设计 9.4.1 说明 9.4.2 实例 9.5 习题 第10章 保护方式下的80386及其编程 10.1 保护方式简述 10.1.1 存储管理机制 10.1.2 保护机制 10.2 分段管理机制 10.2.1 段定义和虚拟地址到线性地址转换 10.2.2 存储段描述符 10 2.3 全局和局部描述符表 10.2.4 段选择子 10.2.5 段描述符高速缓冲寄存器 10.3 80386控制寄存器和系统地址寄存器 10.3.1 控制寄存器 10 3.2 系统地址寄存器 10.4 实方式与保护方式切换实例 10.4.1 演示实方式和保护方式切换的实例(实例一) 10.4.2 演示32位代码段和16位代码段切换的实例(实例二) 10.5 任务状态段和控制门 10.5.1 系统段描述符 10.5.2 门描述符 10.5.3 任务状态段 10.6 控制转移 10.6.1 任务内无特权级变换的转移 10.6.2 演示任务内无特权级变换转移的实例(实例三) 10.6.3 任务内不同特权级的变换 10.6.4 演示任务内特权级变换的实例(实例四) 10.6.5 任务切换 10.6.6 演示任务切换的实例(实例五) 10.7 80386的中断和异常 10.7.1 80386的中断和异常 10.7.2 异常类型 10.7.3 中断和异常的转移方法 10.7.4 演示中断处理的实例(实例六) 10.7.5 演示异常处理的实例(实例七) 10.7.6 各种转移途径小结 10.8 操作系统类指令 10.8.1 实方式和任何特权级下可执行的指令 10.8.2 实方式及特权级0下可执行的指令 10 8.3 只能在保护方式下执行的指令 10.8.4 显示关键寄存器内容的实例(实例八) 10.8.5 特权指令 10.9 输入/输出保护 10.9.1 输入/输出保护 10.9.2 重要标志保护 10.9.3 演示输入/输出保护的实例(实例九) 10.10 分页管理机制 10.10.1 存储器分页管理机制 10.10.2 线性地址到物理地址的转换 10.10.3 页级保护和虚拟存储器支持 10.10.4 页异常 10.10.5 演示分页机制的实例(实例十) 10.11 虚拟8086方式 10.11.1 V86方式 10.11.2 进入和离开V86方式 10.11.3 演示进入和离开V86方式的实例(实例十一) 10.11.4 V86方式下的敏感指令 10.12 习题 第11章 80486及Pentium程序设计基础 11.1 80486程序设计基础 11.1.1 寄存器 11.1.2 指令系统 11.1.3 片上超高速缓存 11.2 80486对调试的支持 11 2.1 调试寄存器 11.2.2 演示调试故障/陷阶的实例 11.3 Pentium程序设计基础 11.3.1 寄存器 11.3.2 指令系统 11.3.3 处理器的识别 11.3.4 片上超高速缓存 11.4 基于Pentium的程序优化技术 11.4.1 流水线优化技术 11.4.2 分支优化技术 11.4.3 超高速缓存代化技术 11.5 习题 第三部分 上机实验指导 第12章 实验指导 12.1 实验的一般步骤 12.2 汇编器和连接器的使用 12.2.1 MASM的使用 12.2.2 LINK的使用 12.2.3 TASM的使用 12.2.4 TLINK的使用 12.3 调试器DEBUG的使用 12.3.1 启动和退出DEBUG 12.3.2 命令一览 12.3.3 利用DEBUG调试程序 12.4 Turbo Debugger的使用 12.4.1 启动和退出TD 12.4.2 利用TD调试汇编程序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YJlio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值