ImageVerifierCode 换一换
格式:PPT , 页数:68 ,大小:2.56MB ,
资源ID:12577246      下载积分:16 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/12577246.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(汇编语言程序设计1.ppt)为本站上传会员【精****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

汇编语言程序设计1.ppt

1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,3,章,第,3,章 汇编语言程序设计,伪指令,概述,汇编程序设计,系统功能调用,汇编语言程序转换成为计算机可运行的程序,的过程,图,3-8,汇编语言程序的执行过程,编辑,文本编辑器,如,EDIT.COM,源程序:文件名,.asm,汇编,汇编程序,如,MASM.EXE,目标模块:文件名,.obj,连接,连接程序,如,LINK.EXE,可执行文件:文件名,.exe,调试,调试程序,如,DEBUG.EXE,应用程序,错误

2、错误,错误,错误,汇编语言程序的开发过程,汇编语言的语句格式,硬指令,使,CPU,产生动作、并在程序执行时才处理的语句,就是第,3,章学习的处理器指令。,汇编后会产生机器码。,伪指令,(,Directive,),不产生,CPU,动作、在程序执行前由汇编程序处理的说明性语句,例如,数据说明、变量定义等等。,汇编后不产生机器码。,伪指令与具体的处理器类型无关,但与汇编程序的版本有关,硬指令和伪指令,应用程序执行结束,应该将控制权交还操作系统,汇编语言程序设计中,有多种返回,DOS,的方法,但一般利用,DOS,功能调用的,4CH,子功能实现,它需要的入口参数是,AL,返回数码(通常用,0,表示程序

3、没有错误),于是,应用程序的终止代码就是:,mov,ax,4c00h,int,21h,程序终止,汇编结束,汇编结束表示汇编程序到此结束将源程序翻译成目标模块代码的过程,源程序的最后必须有一条,END,伪指令,END,标号,可选的,“,标号,”,参数指定程序开始执行点,连接程序据此设置,CS,和,IP,值(例题中采用了,main,标识符),不要糊涂,程序终止和汇编结束是两码事,伪指令,地址计数器伪指令,段定义伪指令,数据定义伪指令,符号定义伪指令,过程定义伪指令,结构定义伪指令,模块定义伪指令,例题,1.,段定义伪指令,段定义:,确定代码组织与数据存储的方式,2,种方法,:完整的段义与简化的段定

4、义,(,MASM5.0,以上),完整的段定义包括:,(,1,),SEGMENT,和,END,段定义,(,2,),ASSUME,段分配,(,3,),GROUP,段组定义,段名,segment ,定位类型,组合类型,段长类型,类别,.,;,语句序列,段名,ends,完整段定义由,SEGMENT,和,ENDS,这一对伪指令实现,,SEGMENT,伪指令定义一个逻辑段的开始,,ENDS,伪指令表示一个段的结束,段定义指令后的,4,个关键字用于确定段的各种属性,堆栈段要采用,stack,组合类型,代码段应具有,code,类别,其他为可选属性参数。,一般用于本程序与其他程序的连接。,如果不指定,则采用默认

5、参数;但如果指定,注意要按照上列次序,SEGMENT,和,END,定位类型,组合类型,段长类型与类别,ASSUME,段分配,GROUP,段组定义,2.,地址计数器伪指令,3.,数据定义伪指令,例一,例二,例三,例四,例五,编程,数据定义举例(,1,),数据定义举例(,2,),数据定义举例(,3,),数据定义举例(,4,),org 300h,data1 db 2 dup(12h,,,34h,,,56h),数据定义举例(,5,),org 100h,data1 db 12h,34h,2 dup(56h,3 dup(9ah),78h),4.,符号定义伪指令,符号常量使用标识符表达一个数值,MASM,提

6、供等价机制,用来为常量定义符号名,符号定义伪指令有,“,等价,EQU,”,和,“,等号,”,:,符号名,EQU,数值表达式,符号名,EQU,;,MASM 5.x,不支持,符号名,数值表达式,EQU,用于数值等价时不能重复定义符号名,但,“,”,允许有重复赋值。例如:,X=7,;等效于:,X,qeu,7,X=X+5,;,“,X EQU X+5,”,是错误的,操作数可以是寄存器、标号、变量、常数、表达式等。寄存器、标号、变量已作介绍,重点现介绍,常数,、,表达式,。,表达式:,常数、寄存器、标号、变量与一些运算符相组合的序列。,包括:,数值表达式,地址表达式。,五种:,算术运算符、逻辑运算符、关系

7、运算符、综合运算符,(1),算术运算符,:,用于完成算术运算,有(加法)、(减法)、,(乘法)、(除法)、,MOD,(求余)、,SHL,(左移)、,SHR,(右移)共,7,种运算。,如:,MOV AL,3*5+3 (AL)=12H,MOV AL,BL SHR 1 (AL)=01101100B,表达式,算术运算,(,2,)逻辑运算符,:,对其操作数进行按位操作。逻辑运算符有,AND,(与)、,OR,(或)、,XOR,(异或)和,NOT,(非)。,(,3,)关系运算符,:,运算对象是两个性质相同的项目。其结果为:关系成立或不成立。有,EQ,(相等)、,NE,(不相等)、,LT,(小于)、,GT,(

8、大于)、,LE,(小于或等于)、,GE,(大于或等于)共,6,种。,功能:,关系运算符的两个操作数的计算结果应为逻辑值,结果为真(关系成立),表示为,0FFFFH,,结果为假(关系不成立),表示为,0,。,例:,MOV AX,,,2 LT 7,;(,AX,),=0FFFFH,表达式,关系运算,(4),表达式,分析运算符,(4),表达式,分析运算符,(,5,)综合运算符,:,可以用来建立和临时改变变量或标号的类型以及存储器操作数的存储单元类型,而忽略当前的属性,所以又称为属性修改运算符。有,6,个综合运算符:,PTR,、,label,、,SHORT,、,THIS,、,HIGH,和,LOW,。,H

9、IGH,、,LOW,从一个字数值或符号常量中得到高、低字节,mov,ah,HIGH,8765h,;,等价于,mov,ah,87h,表达式,综合运算符,类型操作符,对名字或标号的类型属性进行设置,类型名,PTR,名字,/,标号,其中类型名可以是,BYTE,、,WORD,、,DWORD,(依次表示字节、字、双字)等,或者是,NEAR,、,FAR,(分别表示近、远),还可以是由结构、记录等定义的类型,在程序设计中,经常将一些重复出现的语句组定义为子程序。子程序又称为过程,可以采用,CALL,指令来调用。,过程定义格式:,过程名,PROC NEAR/FAR,;其它指令系列,RET,;返回指令,过程名,

10、ENDP,调用一个过程的格式为:,CALL,过程名,5.,过程定义伪指令,4,子程序调用指令,子程序是完成特定功能的一段程序,当主程序(调用程序)需要执行这个功能时,采用,CALL,调用指令转移到该子程序的起始处执行,当运行完子程序功能后,采用,RET,返回指令回到主程序继续执行,演示,转移,指令,有去无回,子程序,调用需要返回,,,其中利用堆栈保存返回地址,CALL,指令分成,4,种类型(类似,JMP,),CALL label,;,段内直接调用,(,直接寻址,),CALL r16/m16,;,段内间接调用,(,间接寻址,),CALL far,ptr,label,;,段间直接调用,(,直接寻址

11、),CALL far,ptr,mem,;,段间间接调用,(,间接寻址,),CALL,指令需要保存返回地址:,段内调用,入栈偏移地址,IP,SPSP,2,,,SS:SPIP,段间调用,入栈偏移地址,IP,和段地址,CS,SPSP,2,,,SS:SPCS,SPSP,2,,,SS:SPIP,子程序调用指令,CALL,例,6.3,1,段内直接调用,2,段内间接调用,3,段间直接调用,4,段间间接调用,例,6.3,十六进制转换为,ASCII,码的子程序,;子程序:将,DL,中低,4,位的一位,16,进制数转换成,ASCII,码,htoascproc,and dl,0fh,;只取,DL,的低,4,位,o

12、r dl,30h,;,DL,高,4,位变成,3,cmp dl,39h,;是,0,9,,还是,0Ah,0Fh?,jbe htoend,;是,0,9,,转移,add dl,7,;是,0Ah,0Fh,,加上,7,htoend:ret,;子程序返回,htoascendp,;主程序:调用,子程序,mov dl,28h,call,htoasc,汇编语言程序设计一般有以下几个步骤:,1,分析问题,抽象出描述问题的数学模型,2,确定解决问题的算法或解题思想,3,绘制流程图和结构图,4,分配存储空间和工作单元,5.,编制程序,6.,程序静态检查,7.,上机调试,汇编语言程序设计,所谓结构化程序设计是指程序的设计

13、编写和测试都采用一种规定的组织形式进行,而不是想怎么写就怎么写。这样,可使编制的程序结构清晰,易于读懂,易于调试和修改,充分显示出模块化程序设计的优点。,在,20,世纪,70,年代初,由,Boehm,和,Jacobi,提出并证明的结构定理:即任何程序都可以由,3,种基本结构程序构成结构化程序,这,3,种结构是:,顺序结构、分支(条件选择)结构和循环结构,。每一个结构只有一个入口和一个出口,,3,种结构的任意组合和嵌套就构成了结构化的程序。,结构化程序设计,程序流程图,JG LARGER,CMP AX,MIN,JL SMALL,JMP GOOD,LARGER:MOV MAX,AX,JMP GO

14、OD,SMALL:MOV MIN,AX,GOOD:LOOP NEXT,HLT,STASRT:MOV SI,DATA,MOV CX,200,CLD,LODSW,MOV MAX,AX,MOV MIN,AX,DEC CX,NEXT:LODSW,CMP AX,MAX,例,6.4,多重循环程序设计,在以,BUF,为首址的字存储区中存放有,N,个有符号数,现需将它们按大到小的顺序排列在,BUF,存储区中,试编写其程序。,我们采用冒泡排序算法从第一个数开始依次对相邻两个数进行比较,如次序对,则不交换两数位置;如次序不对则使这两个数交换位置。可以看出,第一遍需比较(,N-1,)次,此时,最小的数已经放到了最后

15、第二遍比较只需考虑剩下的(,N-1,)个数,即只需比较(,N-2,)次;第三遍只需比较(,N-3,)次,,整个排序过程最多需(,N-1,)遍。如下面的,4,个数即是采用冒泡排序比较的例子。,数,10 8 16 90 32,第一遍,10 1690 32 8,第二遍,16 9032 10 8,第三遍,90 3216 10 8,DATA SEGMENT,BUF DW 3,,,-4,,,6,,,7,,,9,,,2,,,0,,,-8,,,-9,,,-10,,,20,CN=,(,-BUF,),/2,DATA ENDS,STACK SEGNMENT STACK,DB 200 DUP,(,0,),STACK

16、 ENDS,CODE SEGMENT,ASSUME CS,:,CODE,,,DS,:,DATA,,,SS,:,STACK,DATA SEGMENT,BUF DW 3,,,-4,,,6,,,7,,,9,,,2,,,0,,,-8,,,-9,,,-10,,,20,N=,(,-BUF,),/2,DATA ENDS,STACK SEGNMENT STACK,DB 200 DUP,(,0,),STACK ENDS,CODE SEGMENT,ASSUME CS,:,CODE,,,DS,:,DATA,,,SS,:,STACK,START,:,MOV AX,,,DATA,MOV DS,,,AX,MOV CX,,

17、N-1,LOOP1:MOV DX,,,CX,MOV BX,,,0,LOOP2:MOV AX,,,BUFBX,CMP AX,,,BUFBX+2,JGE NEXT,XCHG AX,,,BUFBX+2,MOV BUFBX,,,AX,NEXT,:,ADDBX,,,2,DECCX,JNELOOP2,MOV CX,,,DX,LOOP LOOP1,;,程序结束,汇编结束,程序运行后,,BUF,区中的内容如下:,20,,,9,,,7,,,6,,,3,,,2,,,0,,,-4,,,-8,,,-9,,,-10,若要对,N,个无符号数按由大到小的顺序排列,只需将指令“,JGE L,”,改为“,JAE L,”,即可

18、什么是系统功能调用,它们是一组精炼的程序,系统启动后进入内存固定的位置。,一般是有关,I/O,处理程序,使程序员不需要了解硬件的细节。,DOS,功能调用是对,BIOS,功能调用的完善与扩充。,以下介绍最常用的字符输入与显示的系统功能调用,,并比较,DOS,功能调用与,BIOS,功能调用的方式,内存分配,磁盘读写,图,1.5,存储空间的分配,保留,ROM,64KB,基本,ROM,64KB,扩展,RAM,15MB,基本,ROM,64KB,保留,ROM,64KB,扩展,ROM,128KB,显示,RAM,128KB,系统,RAM,640KB,000000H,0A0000H,0C0000H,0E00

19、00H,0F0000H,100000H,FE0000H,FFFFFFH,常规内存,1MB,扩展内存,15MB,常规内存:,1MB,基本,RAM,区:,640KB,保留,RAM,区:,128KB,扩展,ROM,区:,128KB,基本,ROM,区:,64KB,扩展内存:用作,RAM,区,内存分配,DOS,功能调用,INT 21H,功能号:,AH,01H,出口参数:,AL,字符的,ASCII,码,功能:获得按键的,ASCII,代码值,并显示,调用此功能时,若无键按下,则会一直等待,直到按键后才读取该键值,字符输入的功能调用,键盘功能调用,INT 16H,功能号:,AH,0,出口参数:,AX,键值代码

20、对于标准,ASCII,码按键:,AL,ASCII,码,,AH,扫描码;,对于扩展按键:,AL,00H,,,AH,键扩展码;,对于,alt,小键盘数字按键:,AL,ASCII,码,,AH,00H,此功能类同,DOS,功能,01H,,会一直等待按键,比较,getkey:,mov ah,01h,;功能号:,ah01h,int 21h,;功能调用,cmp al,Y,;处理出口,参数,al,je yeskey,;是,“,Y,”,cmp al,N,je nokey,;是,“,N,”,jne getkey,.,yeskey:.,nokey:.,mov ah,0,;键盘功能调用(,int 16h,),int

21、 16h,;,al,按键的,ASCII,码,mov bx,0,;显示功能调用(,int 10h,),mov ah,0eh,int 10h,;显示,DOS,调用方式,BIOS,调用方式,字符串输入的功能调用,DOS,功能调用,INT 21H,功能号:,AH,0AH,入口参数:,DS:DX,缓冲区首地址,执行该功能调用时,用户按键,最后用回车确认,本调用可执行全部标准键盘编辑命令;用户按回车键结束输入,如按,Ctrl,Break,或,Ctrl,C,则中止,关键要定义好缓冲区,例,第,1,字节,事先填入,最多欲接收的字符个数,(包括回车字符,可以是,1,255,),第,2,字节,将存放,实际输入的字

22、符个数,(不包括回车符),第,3,字节,开始将存放,输入的字符串,实际输入的字符数多于定义数时,多出的字符丢掉,且响铃,Buffer,db 81,;定义缓冲区,db 0,;存放实际,输入的字符数,db 81 dup(0),;存放输入,的字符串,.,mov dx,seg buffer,;伪指令,seg,取得,buffer,的段地址,mov ds,dx,;设置数据段,DS,mov dx,offset buffer,mov ah,0ah,int 21h,字符串输入,字符串输出的功能调用,DOS,功能调用,INT 21H,功能号:,AH,09H,入口参数:,DS:DX,欲显示字符串在主存中的首地址,字

23、符串应以,$,(,24H,)结束,功能:在显示器输出指定的字符串,可以输出回车(,0DH,)和换行(,0AH,)字符产生回车和换行的作用,例,string db Hello,Everybody!,0dh,0ah,$,;在数据段定义要显示的字符串,.,mov ah,09h,;设置功能号:,ah09h,mov dx,offset string,;提供入口参数:,dx,字符串的偏移地址,int 21h,;,DOS,功能调用:显示,字符串输出,字符输出的功能调用,DOS,功能调用,INT 21H,功能号:,AH,02H,入口参数:,DL,字符的,ASCII,码,功能:,在显示器当前光标位置显示给定的字

24、符,光标右移一个字符位置。如按,Ctrl-Break,或,Ctrl-C,则退出,显示器功能调用,INT 10H,功能号:,AH,0EH,入口参数:,AL,字符的,ASCII,码,BL,字符的颜色值(图形,方式),BH,页号(字符方式),通常使,BX,0,功能:,将字符按原属性在光标处显示,光标自动移到下一个字符位置,;显示一个问号,“,?,”,mov ah,02h,;设置功能调用号,mov dl,?,;设置入口参数,int 21h,;功能调用,屏幕显示:,What is your name?,(使用,9,号,DOS,功能调用),用户输入:,xiao,tian,(使用,10,号,DOS,功能调用

25、屏幕再显示:,Hello,xiao,tian,!,(使用,9,号,DOS,功能调用),程序清单如下:,例,:,用汇编语言实现简单的人机对话,DATA,SEGMENT,;,数据段定义,BUF,db,23H,16h,08h,20h,64H,8AH,91H,35H,2BH,0ffh,80h,DATA,ENDS,STACK SEGMENT,;,堆栈段定义,STACK ENDS,CODE SEGMENT,;,代码段定义,ASSUME,CS:CODE,DS:DATA,SS:STACK,main:,MOV AX,data,MOV DS,AX,mov ah,4ch,;,主程序结束,返回,DOS,int 2

26、1h,CODE ENDS,;代码段定义结束,END main,;汇编结束,实验二,将内存,0040,:,0000,单元开始的,10,个数,转移到,0050,:,0000,单元开始内存单元中去。,段分配实例,例一 变量的定义,;数据段,Bvar1,db,100,01100100b,64h,d,;字节变量:内存中有,4,个,64H,Minint=5,;符号常量:,minint,数值为,5,,不占内存空间,Bvar2 db-1,minint,minint+5,;内存中数值依次为,FFH,5,0AH,db?,2 dup(20h),;预留一个字节空间,重复定义了,2,个数值,20H,wvar1,dw,2

27、010h,4*4,;字变量:两个数据是,2010H,、,0010H,,,共占,4,个字节,wvar2dw,?,;wvar2,是没有初值的字变量,例题 变量的定义(续),Dvar,dd,12347777h,87651111h,?,;双字变量:,2,个双字数据,一个双字空间,abcdb,a,b,c,?,;定义字符,实际是字节变量,maxint,equ,0ah,;符号常量:,maxint,10,stringdb,ABCDEFGHIJ,;定义字符串:使用字节定义,DB,伪指令,crlfsdb 13,10,$,;回车符,0DH,、换行符,0AH,和字符,$,24H,array1dw maxint,dup

28、0),;,10,个初值为,0,的字量,可以认为是数组,arraydb 2 dup(2,3,2 dup(4),;,6,个字节内容依次为:,02 03 04 04 02 03 04 04,例题 变量的应用,;代码段,mov dl,bvar1,;,DL,100,dec bvar2+1,;,bvar2+1,4,mov abc3,dl,;,abc,abcd,mov ax,word ptr dvar0,;取双字到,DX.AX,mov dx,word ptr dvar2,mov cx,maxint,;,CX,10,mov bx,0,;,BX,0,again:add stringbx,3,;,string

29、每个数值加,3,inc bx,loop again,;循环,lea dx,abc,;从,abc,开始,mov ah,9,;,09H,号,DOS,功能调用,int 21h,;显示结果:,abcdDEFGHIJKLM,例二 变量定义,例二 变量定义,汇编语言的数据可以简单分为常量和变量,常量,可以作为硬指令的立即数或伪指令的参数,,变量,主要作为存储器操作数,汇编语言语句中的,名字和标号,具有逻辑地址和类型属性,主要用做地址操作数,也可以作为立即数和存储器操作数,常量、变量和标号,1.,软盘结构示意图,扇区,盘面,0,磁道,末磁道,软盘盘片,磁盘存储容量,=,盘面数,磁道数,/,面,扇区数,/,磁道,字节数,/,扇区,最后页(,PPT,控制符),如何改变?,

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服