鱼C论坛

 找回密码
 立即注册
查看: 1995|回复: 19

实验十

[复制链接]
发表于 2014-8-23 22:23:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
assume cs:code

data segment
db 'Welcom to masm!',0
data ends

code segment
start:   mov dh,8
         mov dl,3
                 mov cl,2
                 mov ax,data
                 mov ds,ax
                 mov si,0
                 call show_str
                 
                 mov ax,4c00h
                 int 21h
                 
                 
show_str:
         mov ax,0b800h
                 mov es,ax
        
         mov al,8     ;用8代dh为了,在其它程序用
                 mov ah,160
         mul ah
                 mov cx,ax
                 
                 mov al,3     ;用3代dl为了,在其它程序用
                 mov ah,2
                 mul ah
                 add cx,ax
                 mov di,cx
                 
                 
        str: push cx
             mov cl,[si]
                 mov ch,0
                 jcxz ok
                 
                 mov al,[si]
                 mov es:[di],al
                 pop cx
                 mov es:[di+1],cl
                
                 add di,2
                 inc si
                 jmp short str
                 
        ok:         pop cx
             
                 ret
                 
                 
code ends
end start
实验十,作上二个,第二个没作上来;

第三个,显示出来了 有一点问题:数是倒过来的:mad:


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-8-23 22:23:37 | 显示全部楼层
assume cs:code,ds:data

data segment
dw 123,1266,1,8,3,38
db 20 dup(0)
data ends

code segment

start:   
          mov ax,data
                  mov ds,ax
                  mov bx,0
                  mov cx,6
                  
                  mov si,16
                  
                  push si
                   
        s00:  push cx
        
                  mov ax,[bx]
                  mov dx,10
        s0:          div dl
                  mov cl,ah
                  mov ch,0
                  jcxz s1
                 
                  push ax      ;保护ah
                  add ah,30h
                  mov [si],ah
                  
                  pop ax
                  mov ah,0
                  inc si
                  jmp s0
        s1:          add bx,2
              
                  pop cx
                  loop s00
                  
                  pop si
        
                  call show_str 
                  
                  mov ax,4c00h
                  int 21h
                  
show_str:
         mov ax,0b800h
                 mov es,ax
        
         mov al,8     ;用8代dh为了,在其它程序用
                 mov ah,160
         mul ah
                 mov cx,ax
                 
                 mov al,3     ;用3代dl为了,在其它程序用
                 mov ah,2
                 mul ah
                 add cx,ax
                 mov di,cx
                 
                 
        str: push cx
             mov cl,[si]
                 mov ch,0
                 jcxz ok
                 
                 mov al,[si]
                 mov es:[di],al
                 pop cx
                 mov es:[di+1],cl
                
                 add di,2
                 inc si
                 jmp short str
                 
        ok:         pop cx
             
                 ret                  
                  
                  
                  
                  
                  
                  
                 
  code ends
                  
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-24 23:33:37 | 显示全部楼层
原来这么简单,我歪曲了题义,题目一,当中给定了dh=8,dl=3;cl=2,后面,被我一顿乱改:lol:
还好,结果只有一点点偏离(行和列都没有减1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-25 12:32:16 | 显示全部楼层

RE: 实验十

<p>assume cs:code,ds:data,ss:stack

data segment
dw 123,12666,1,8,3,38,0,0
dw 32 dup(0)
data ends

stack segment
db 32 dup(0)
stack ends

code segment

start:   
                  mov ax,data
                  mov ds,ax
                                  mov ax,stack
                                  mov ss,ax
                                  mov sp,64
                  mov bx,0
                                  
                                  
                                  mov dx,0
                                  
        w0:       mov ax,[bx]   ;
                                  mov cx,ax
                                  jcxz s00
                                  push ax
                                  add bx,2
                                  inc dx
                                  loop w0
                                  mov cx,dx
                                  
                                  
                   
        s00:     
                         pop ax
                                 call dtoc
                                 loop s00
                
                     
                                  
                s01:      mov dh,8            ;初始化显示位置
                                  mov dl,3
                                  mov cx,0cah
        
                  call show_str 
                  
                  mov ax,4c00h
                  int 21h        

                                  

dtoc :           push dx
                 push cx
                                 push ax
                                 push si
                                 push bx


                  
                  mov bx,0        ;bx在子程序中用来存放位数,用栈来临时存放修改后的字符
                  
           s1:    mov cx,10
                                  mov dx,0       ;把用来存放余数的DX清零
                  div cx
                          mov cx,ax      ;得到的商赋值给CX
                  jcxz s2       ;如果CX=0则跳到S1
                 
                  
                  add dx,30h      ;余数加30H,得到相应的ASCII码
                                  push dx          ;保存到栈
                  inc bx
                  
                  jmp short s1
                                  
                                  
           s2:    add dx,30h       ;商为0时,余数为个位
                          push dx
                                  
                                  inc bx           ;再进行一次栈操作,(补充当“商为零而余数不为零”时的情况)
                          
                                  mov cx,bx        ;用CX出栈,把总进栈次数给CX
                                  mov si,0
                                  
                   s3:          pop ax           ;s3实现将栈中的数据依次出栈,放到指定内存
                          
                                  mov [si],al
                                  inc si
                                  
                                  loop s3
                                  
                                  
                                  
                                  
        okay:                  pop bx
                      pop si
                                  pop ax
                                  pop cx
                                  pop dx


                              ret



                                  
show_str:push cx   ;在指定位置显示字符,dh=行号(0-24),dl=列号(0-79),cx=颜色,ds:si指向字符串首地址
         push si
                 
         mov ax,0b800h  ;显存的开始地址
                 mov es,ax      ;ES中存放是显存的第0页(共0-7页)的起始段地址
        
         mov al,160     ;每行80字符即160字节
         dec dh         ;第八行
                 mul dh
                 mov bx,ax
                 
                 mov al,2      ;一个字符占二字节
                 dec dl        ;列从零开始,第三列,所以减一
                 mul dl
                      
                 add bx,ax      ;此时BX中放的是行与列的偏移地址
                 mov di,0        ;di 指向显存的偏移地址
                 mov al,cl       ;把颜色参数,放到al
                 mov ch,0         ;把CX高位置0
                 
                 
        str: mov cl,ds:[si]   ;ds:[si]指向‘Wlcome to masm!',0
                 jcxz ok          ;当CL为0时,跳到ok处
                 
        
                 mov es:[bx+di],cl    ;偶字节放字符
                 mov es:[bx+di+1],al  ;奇字节放,颜色属性
                 inc si
                 add di,2              ;指向下个字符
                 
                 jmp short str         ;无条件跳转,jcxz是离开的关键跳!
                 
        ok:         pop si
             pop cx
             
                 ret                    ;显示字符串的子程序【定义结束】
                  
                  
                  
                  
                  
                 
  code ends
                  
end start</p><p>
</p><p>第一次查看:进入DEBUG后,如图“第一次查看”</p><p>第二次查看:在“w0:       mov ax,[bx]   ;”第二次查看“</p><p>程序都变样了???? 这是怎么回事,求 助??

</p>
第二次查看.jpg
第一次查看.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-25 13:19:14 | 显示全部楼层
我写的代码段内容为何会变???求助???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-26 22:49:24 | 显示全部楼层
这是为什么呀?:sad

DOS 6.0 你们手里还有么? 用U盘进DOS运行下,看下什么样子
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-29 21:05:40 | 显示全部楼层
这样的事,总遇到 ,明明写一行代码,在执行的时候,直接跳过去,不知道为什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-29 21:06:56 | 显示全部楼层
assume cs:code,ss:stack,ds:data,es:data1

data segment
dd 1975,1976,1977,1978,1979,1980,1981,1982,1983
dd 1984,1985,1986,1987,1988,1989,1990,1991,1992
dd 1993,1994,1995,0
 
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000,0

dd 3,7,9,13,28,38,130,220,476,778,1101,1442,2258,2793,4037,5635,8226
dd 11542,14430,15257,17800,0

data ends


stack segment
db 64 dup(0)
stack ends

data1 segment
dd 80 dup(0)
data1 ends

code segment

start:    

            mov ax,data
                        mov ds,ax
                        mov ax,stack
                        mov ss,ax
                        mov sp,128
                        mov ax,data1
                        mov es,ax
                        
                        mov bx,0
                        mov bp,0
                        
                        
                        
                        mov dx,0      ;用dx作次数
                        
                
        Sa:                    ;将年份或人数或平均值之一入栈
                        mov ax,[bx]
                        mov cx,ax
                        jcxz sa1        ;当Cx为0时,跳到s1处
                        
                        push ax
                        mov ax,[bx+2]
                        push ax
                        add dx,2       ;一次循环压二次栈
                        add bx,4
                        inc bp  
                        loop sa
                        
                        mov cx,bp    ;入栈次数给CX
                        
                        
                
        sa1:                                   ;将入栈的数据转化为ASC11码
                 pop dx
                     pop ax
                         push cx        ;保护CX次数
                         
                         mov si,82
                         call dtoc
                         sub si,di     ;bi中放的是数据长度
                         mov di,0       ;长度清零
                         
                         
                         
                         
                         
                         
                         pop cx
                         inc cx
                         loop sa1
                         
                         
                         
                         
                         
                         
                        mov ax,4c00h
                        int 21h
                        
                         
                         
                
                   
              
                   
                   
                        
                        

















divdw:  ;参数:(ax)=dword型数据的低16位,(dx)=dword型数据的高16位,(cx)=除数
        ;返回:(dx)=结果的高16位,(ax)=结果的低16位,(cx)=余数

         push ax        ;低16位先保存
                 mov ax,dx    ;ax这时候的值是高16位了
                 mov dx,0       ;dx置零是为了不影响下边余数位,使得高16位为0
                 
                 div cx          ;H/N(16位除法)
                 mov bx,ax       ;ax,bx的值为int(商)H/N,dx的值为rem(余数)
                   
                 
                 pop ax          ;ax的值现在是L(低16位)
                 div cx          ;L/N(16除法),ax被除数低16位,dx被除数高16位
                 
                 mov cx,dx
                 mov dx,bx
                 
                 
                 ret
                 
                 







show_str: ;在指定位置显示字符,dh=行号(0-24),dl=列号(0-79),cx=颜色
          ; ds:si指向字符串首地址
                  
         push cx   
         push si
                 
         mov ax,0b800h  ;显存的开始地址
                 mov es,ax      ;ES中存放是显存的第0页(共0-7页)的起始段地址
        
         mov al,160     ;每行80字符即160字节
         dec dh         ;第八行
                 mul dh
                 mov bx,ax
                 
                 mov al,2      ;一个字符占二字节
                 dec dl        ;列从零开始,第三列,所以减一
                 mul dl
                      
                 add bx,ax      ;此时BX中放的是行与列的偏移地址
                 mov di,0        ;di 指向显存的偏移地址
                 mov al,cl       ;把颜色参数,放到al
                 mov ch,0         ;把CX高位置0
                 
                 
        str: mov cl,ds:[si]   ;ds:[si]指向‘Wlcome to masm!',0
                 jcxz ok          ;当CL为0时,跳到ok处
                 
        
                 mov es:[bx+di],cl    ;偶字节放字符
                 mov es:[bx+di+1],al  ;奇字节放,颜色属性
                 inc si
                 add di,2              ;指向下个字符
                 
                 jmp short str         ;无条件跳转,jcxz是离开的关键跳!
                 
        ok:         pop si
             pop cx
             
                 ret                    ;显示字符串的子程序【定义结束】
                 
                 
                 
                 
        dtoc :                      ;抽取数字,并转化为SACII码

                 push dx
                 push cx
                                 push ax
                                 push si
                                 push bx


                  
                  mov bx,0        ;bx在子程序中用来存放位数,用栈来临时存放修改后的字符
                  
           s1:    mov cx,10
                                  ;mov dx,0       ;把用来存放余数的DX清零
                  
                                  call divdw 
                                 ; mov dx,cx        ;r把余数给dx
                                  
                          
                                  ;mov cx,ax      ;得到的商赋值给CX
                  jcxz s2       ;如果CX=0则跳到S1
                 
                  
                  add cx,30h      ;余数加30H,得到相应的ASCII码
                                  push cx          ;保存到栈
                  inc bx
                  
                  jmp short s1
                                  
                                  
           s2:    add dx,30h       ;商为0时,余数为个位
                          push dx
                                  
                                  inc bx           ;再进行一次栈操作,(补充当“商为零而余数不为零”时的情况)
                          
                                  mov cx,bx        ;用CX出栈,把总进栈次数给CX
                                  mov di,cx        ;本程序中,用来保存长度
                                  mov si,82
                                  
                   s3:          pop ax           ;s3实现将栈中的数据依次出栈,放到指定内存
                          
                                  mov es:[si],al
                                  inc si
                                  
                                  loop s3
                                  
                                  
                                  
                                  
        okay:                  pop bx
                      pop si
                                  pop ax
                                  pop cx
                                  pop dx


                              ret
         
                  
                 
        code ends
end start
        
                 

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-29 21:09:47 | 显示全部楼层
上面是一个,没有完成的,程序;
当执行到第56行时,用P命令跳循环,会直接结束;
执行完56行,不执行58行,视58行如无物,晕死
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-29 21:12:10 | 显示全部楼层
用G 命令跳到58行,会死!
用G 命令跳到63行,则完全没问题;但会发现58行没有执行,cx=0000;晕死
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-29 21:13:17 | 显示全部楼层

58行为何不执行,求解?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-29 21:24:01 | 显示全部楼层
haiouda 发表于 2014-8-29 21:13
58行为何不执行,求解?

1. 47行为何要给cx反复赋值,这样循环可以能跳出来么?
2. 我有个疑问请示下:dx可以循环计数么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-29 21:33:36 | 显示全部楼层
小靚同学Leon 发表于 2014-8-29 21:24
1. 47行为何要给cx反复赋值,这样循环可以能跳出来么?
2. 我有个疑问请示下:dx可以循环计数么?

第一次赋值,是为了,接下来的一行,看是否到搂据尾了;

第二次赋值,是统计一共进栈多少次;

第二次赋值覆盖第一次赋值;
mov cx,ax
.
.
.
mov cx,bp

cx中应该是第二次的赋值,我是这么认为的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-29 21:35:11 | 显示全部楼层
小靚同学Leon 发表于 2014-8-29 21:24
1. 47行为何要给cx反复赋值,这样循环可以能跳出来么?
2. 我有个疑问请示下:dx可以循环计数么?

在,二次给CX,赋值中间要加上一条,mov cx,0;这样应对了么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-29 21:36:14 | 显示全部楼层
小靚同学Leon 发表于 2014-8-29 21:24
1. 47行为何要给cx反复赋值,这样循环可以能跳出来么?
2. 我有个疑问请示下:dx可以循环计数么?

我没有其它的计数器了,临时借用下DX
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-29 21:41:21 | 显示全部楼层
小靚同学Leon 发表于 2014-8-29 21:24
1. 47行为何要给cx反复赋值,这样循环可以能跳出来么?
2. 我有个疑问请示下:dx可以循环计数么?

谢谢,在二次给CX赋值中间加一条,MOV CX,0 ,就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-29 21:52:23 | 显示全部楼层
assume cs:code,ss:stack,ds:data,es:data1

data segment
dd 1975,1976,1977,1978,1979,1980,1981,1982,1983
dd 1984,1985,1986,1987,1988,1989,1990,1991,1992
dd 1993,1994,1995,0
 
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000,0

dd 3,7,9,13,28,38,130,220,476,778,1101,1442,2258,2793,4037,5635,8226
dd 11542,14430,15257,17800,0

data ends


stack segment
db 64 dup(0)
stack ends

data1 segment
dd 80 dup(0)
data1 ends

code segment

start:    

            mov ax,data
                        mov ds,ax
                        mov ax,stack
                        mov ss,ax
                        mov sp,128
                        mov ax,data1
                        mov es,ax
                        
                        mov bx,0
                        mov bp,0
                        
                        
                        
                        mov dx,0      ;用dx作次数
                        
                
        Sa:                    ;将年份或人数或平均值之一入栈
                        mov ax,[bx]
                        mov cx,ax
                        jcxz sa1        ;当Cx为0时,跳到s1处
                        
                        push ax
                        mov ax,[bx+2]
                        push ax
                        add dx,2       ;一次循环压二次栈
                        add bx,4
                        inc bp  
                        loop sa
                        
                         
                        mov cx,0
                        mov cx,bp    ;入栈次数给CX
                        
                        
                
        sa1:                                   ;将入栈的数据转化为ASC11码
                 pop dx
                     pop ax
                         push cx        ;保护CX次数
                         
                         mov si,82
                         call dtoc
                         sub si,di     ;bi中放的是数据长度
                         mov di,0       ;长度清零
                         
                         
                         
                         
                         
                         
                         pop cx
                         inc cx
                         loop sa1
                         
                         
                         
                         
                         
                         
                        mov ax,4c00h
                        int 21h
                        
                         
                         
                
                   
              
                   
                   
                        
                        

















divdw:  ;参数:(ax)=dword型数据的低16位,(dx)=dword型数据的高16位,(cx)=除数
        ;返回:(dx)=结果的高16位,(ax)=结果的低16位,(cx)=余数

         push ax        ;低16位先保存
                 mov ax,dx    ;ax这时候的值是高16位了
                 mov dx,0       ;dx置零是为了不影响下边余数位,使得高16位为0
                 
                 div cx          ;H/N(16位除法)
                 mov bx,ax       ;ax,bx的值为int(商)H/N,dx的值为rem(余数)
                   
                 
                 pop ax          ;ax的值现在是L(低16位)
                 div cx          ;L/N(16除法),ax被除数低16位,dx被除数高16位
                 
                 mov cx,dx
                 mov dx,bx
                 
                 
                 ret
                 
                 







show_str: ;在指定位置显示字符,dh=行号(0-24),dl=列号(0-79),cx=颜色
          ; ds:si指向字符串首地址
                  
         push cx   
         push si
                 
         mov ax,0b800h  ;显存的开始地址
                 mov es,ax      ;ES中存放是显存的第0页(共0-7页)的起始段地址
        
         mov al,160     ;每行80字符即160字节
         dec dh         ;第八行
                 mul dh
                 mov bx,ax
                 
                 mov al,2      ;一个字符占二字节
                 dec dl        ;列从零开始,第三列,所以减一
                 mul dl
                      
                 add bx,ax      ;此时BX中放的是行与列的偏移地址
                 mov di,0        ;di 指向显存的偏移地址
                 mov al,cl       ;把颜色参数,放到al
                 mov ch,0         ;把CX高位置0
                 
                 
        str: mov cl,ds:[si]   ;ds:[si]指向‘Wlcome to masm!',0
                 jcxz ok          ;当CL为0时,跳到ok处
                 
        
                 mov es:[bx+di],cl    ;偶字节放字符
                 mov es:[bx+di+1],al  ;奇字节放,颜色属性
                 inc si
                 add di,2              ;指向下个字符
                 
                 jmp short str         ;无条件跳转,jcxz是离开的关键跳!
                 
        ok:         pop si
             pop cx
             
                 ret                    ;显示字符串的子程序【定义结束】
                 
                 
                 
                 
        dtoc :                      ;抽取数字,并转化为SACII码

                 push dx
                 push cx
                                 push ax
                                 push si
                                 push bx


                  
                  mov bx,0        ;bx在子程序中用来存放位数,用栈来临时存放修改后的字符
                  
           s1:    mov cx,10
                                  ;mov dx,0       ;把用来存放余数的DX清零
                  
                                  call divdw 
                                 ; mov dx,cx        ;r把余数给dx
                                  
                          
                                  ;mov cx,ax      ;得到的商赋值给CX
                  jcxz s2       ;如果CX=0则跳到S1
                 
                  
                  add cx,30h      ;余数加30H,得到相应的ASCII码
                                  push cx          ;保存到栈
                  inc bx
                  
                  jmp short s1
                                  
                                  
           s2:    add dx,30h       ;商为0时,余数为个位
                          push dx
                                  
                                  inc bx           ;再进行一次栈操作,(补充当“商为零而余数不为零”时的情况)
                          
                                  mov cx,bx        ;用CX出栈,把总进栈次数给CX
                                  mov di,cx        ;本程序中,用来保存长度
                                  mov si,82
                                  
                   s3:          pop ax           ;s3实现将栈中的数据依次出栈,放到指定内存
                          
                                  mov es:[si],al
                                  inc si
                                  
                                  loop s3
                                  
                                  
                                  
                                  
        okay:                  pop bx
                      pop si
                                  pop ax
                                  pop cx
                                  pop dx


                              ret
         
                  
                 
        code ends
end start
 

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-29 21:53:39 | 显示全部楼层
在二次给CX赋值,虽然不死机了,可以它还是乱跳,执行完56条就不知道跳哪去了,:dizzy:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-29 22:41:31 | 显示全部楼层
haiouda 发表于 2014-8-29 21:53
在二次给CX赋值,虽然不死机了,可以它还是乱跳,执行完56条就不知道跳哪去了,

你的循环体sa......loop sa这个地方原本是没有设置CX的,可能是CX的问题。我的建议是你在大循环外设置一个CX计数,mov cx,ax这条不要用到cx,jcxz这条重新找指令替换。多半是计数没找到,所以乱跳。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-29 22:47:21 | 显示全部楼层
就是这个问题啦。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 10:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表