李北明微機(jī)原理_第1頁(yè)
李北明微機(jī)原理_第2頁(yè)
李北明微機(jī)原理_第3頁(yè)
李北明微機(jī)原理_第4頁(yè)
李北明微機(jī)原理_第5頁(yè)
已閱讀5頁(yè),還剩58頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

微機(jī)原理及接口技術(shù)信通學(xué)院8086的尋址方式

和指令系統(tǒng)(7)主講人

李北明教學(xué)重點(diǎn)綜合應(yīng)用指令和偽指令,從程序結(jié)構(gòu)角度展開程序設(shè)計(jì),重點(diǎn)掌握:分支結(jié)構(gòu)程序設(shè)計(jì)循環(huán)結(jié)構(gòu)程序設(shè)計(jì)子程序結(jié)構(gòu)程序設(shè)計(jì)3.5.1順序程序設(shè)計(jì)順序程序完全按指令書寫的前后順序執(zhí)行每一條指令,是最基本、最常見的程序結(jié)構(gòu)計(jì)算移位代碼轉(zhuǎn)換例3.58data segmentX dw5Y dw6Z dw7W dw?data endscode segment

assumecs:code,ds:data

movax,X addax,Y addax,Z movW,ax

code ends end例3.59-(1)data segment

qvar dq1234567887654321hdata endscode segmentassumecs:code,ds:data moval,byteptrqvar[6] movbyteptrqvar[7],al moval,byteptrqvar[5] movbyteptrqvar[6],al moval,byteptrqvar[4] movbyteptrqvar[5],al moval,byteptrqvar[3] movbyteptrqvar[4],al圖示例3.59-(2) moval,byteptrqvar[2] movbyteptrqvar[3],al moval,byteptrqvar[1] movbyteptrqvar[2],al moval,byteptrqvar[0] movbyteptrqvar[1],al movbyteptrqvar[0],0………12

34

56

78

87

65

43

21h34

56

78

87

65

43

21

00h移位后圖示64位數(shù)據(jù)左移8位123456788765432100qvar[0]qvar[1]qvar[2]qvar[3]qvar[4]qvar[5]qvar[6]qvar[7]例題3.60代碼轉(zhuǎn)換-(1);查表法,實(shí)現(xiàn)一位16進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼顯示data segment

ASCII db30h,31h,32h,33h,34h,35h db36h,37h,38h,39h ;0~9的ASCII碼

db41h,42h,43h,44h,45h,46h ;A~F的ASCII碼hex db0bh ;任意設(shè)定了一個(gè)待轉(zhuǎn)換的一位16進(jìn)制數(shù)data endscode segmentassumecs:code,ds:data例題3.60代碼轉(zhuǎn)換-(2)

movbx,offsetASCII ;BX指向ASCII碼表 moval,hex ;AL取得一位16進(jìn)制數(shù),正是ASCII碼表中位移 andal,0fh ;只有低4位是有效的,高4位清0

xlat

;換碼:AL←DS:[BX+AL] movdl,al ;入口參數(shù):DL←AL movah,2 ;02號(hào)DOS功能調(diào)用 int21h ;顯示一個(gè)ASCII碼字符

code ends

end3.5.2分支程序設(shè)計(jì)分支程序根據(jù)條件是真或假?zèng)Q定執(zhí)行與否判斷的條件是各種指令,如CMP、TEST等執(zhí)行后形成的狀態(tài)標(biāo)志轉(zhuǎn)移指令Jcc和JMP可以實(shí)現(xiàn)分支控制單分支:求絕對(duì)值等雙分支多分支單分支程序設(shè)計(jì)條件成立跳轉(zhuǎn),否則順序執(zhí)行分支語(yǔ)句體;注意選擇正確的條件轉(zhuǎn)移指令和轉(zhuǎn)移目標(biāo)地址第3章例題求絕對(duì)值;計(jì)算AX的絕對(duì)值

cmpax,0

jnsnonneg ;分支條件:AX≥0

negax ;條件不滿足,求補(bǔ)nonneg:

movresult,ax ;條件滿足;計(jì)算AX的絕對(duì)值

cmpax,0

jlyesneg ;分支條件:AX<0 jmpnonnegyesneg:

negax ;條件不滿足,求補(bǔ)nonneg: movresult,ax ;條件滿足GoodBad例題無(wú)符號(hào)數(shù)除以2;將AX中存放的無(wú)符號(hào)數(shù)除以2,如果是奇數(shù),則加1后除以2 testax,01h ;測(cè)試AX最低位

jzeven ;最低位為0:AX為偶數(shù)

addax,1 ;最低位為1:AX為奇數(shù),需要加1even: rcrax,1 ;AX←AX÷2 ;如果采用SHR指令,則不能處理AX=FFFFH的特殊情況雙分支程序設(shè)計(jì)條件成立跳轉(zhuǎn)執(zhí)行第2個(gè)分支語(yǔ)句體,否則順序執(zhí)行第1個(gè)分支語(yǔ)句體。注意第1個(gè)分支體后一定要有一個(gè)JMP指令跳到第2個(gè)分支體后第3章例題顯示BX最高位(1) shlbx,1 ;BX最高位移入CF

jcone ;CF=1,即最高位為1,轉(zhuǎn)移 movdl,’0’ ;CF=0,即最高位為0,DL←’0’

jmptwo

;一定要跳過另一個(gè)分支體one: movdl,’1’ ;DL←’1’two: movah,2 int21h ;顯示對(duì)比雙分支程序改為單分支程序例題顯示BX最高位(2) ……….shlbx,1 ;BX最高位移入CF

jncone ;CF=0,即最高位為0,轉(zhuǎn)移 movdl,’1’ ;CF=1,即最高位為1,DL←’1’

jmptwo

;一定要跳過另一個(gè)分支體one: movdl,’0’

;DL←’0’two: movah,2 int21h ;顯示雙分支程序改為單分支程序?qū)Ρ壤}顯示BX最高位(3) movdl,’0’ ;DL←’0’ shlbx,1 ;BX最高位移入CF

jnctwo ;CF=0,最高位為0,轉(zhuǎn)移 movdl,’1’ ;CF=1,最高位為1,DL←’1’two: movah,2 int21h ;顯示

……….編寫分支程序,需留心分支的開始和結(jié)束判斷有無(wú)實(shí)根-(1)……….moval,_bimulalmovbx,ax ;BX中為b2moval,_aimul_cmovcx,4imulcx

;AX中為4ac(DX無(wú)有效數(shù)據(jù))判斷有無(wú)實(shí)根-(2) cmpbx,ax ;比較二者大小

jgeyes

;條件滿足? movtag,0 ;第一分支體:條件不滿足,tag←0

jmpdone ;跳過第二個(gè)分支體yes: movtag,1 ;第二分支體:條件滿足,tag←1done: ………. ;寄存器AL中是字母Y或y,則令A(yù)H=0;否則令A(yù)H=-1 cmpal,’Y’ ;AL是大寫Y否?

jznext ;是,轉(zhuǎn)移 cmpal,’y’ ;AL是小寫y否?

jznext ;是,轉(zhuǎn)移

movah,-1 ;不是Y或y,則AH=-1,結(jié)束

jmpdone

;一定要跳過另一個(gè)分支體next: movah,0 ;是Y或y,則AH=0,結(jié)束done: ...單分支和雙分支多分支程序設(shè)計(jì)多個(gè)條件對(duì)應(yīng)各自的分支語(yǔ)句體,哪個(gè)條件成立就轉(zhuǎn)入相應(yīng)分支體執(zhí)行。多分支可以化解為雙分支或單分支結(jié)構(gòu)的組合,例如:orah,ah ;等效于cmpah,0jzfunction0 ;ah=0,轉(zhuǎn)向function0decah ;等效于cmpah,1jzfunction1 ;ah=1,轉(zhuǎn)向function1decah ;等效于cmpah,2jzfunction2 ;ah=2,轉(zhuǎn)向function2第3章圖示多分支結(jié)構(gòu)AH=0fuction0YNAH=1fuction1YNAH=2fuction2YN地址表形成多分支需要在數(shù)據(jù)段事先安排一個(gè)按順序排列的轉(zhuǎn)移地址表輸入的數(shù)字作為偏移量。因?yàn)橹挥?個(gè)字節(jié)16位偏移地址,所以偏移量需要乘2關(guān)鍵是要理解間接尋址方式JMP指令地址表分支1地址分支2地址...Table dbdisp1,disp2,disp3,disp4,...

msg db'Inputnumber(1~8):',0dh,0ah,'$'msg1 db'Chapter1:...',0dh,0ah,'$'msg2 db'Chapter2:...',0dh,0ah,'$‘ ...msg8 db'Chapter8:...',0dh,0ah,'$'table dwdisp1,disp2,disp3,disp4 dwdisp5,disp6,disp7,disp8 ;取得各個(gè)標(biāo)號(hào)的偏移地址數(shù)據(jù)段-(1)此處等同于offsetdisp1start1: movdx,offsetmsg ;提示輸入數(shù)字

movah,9 int21h movah,1 ;等待按鍵

int21h cmpal,'1' ;數(shù)字<1?

jbstart1 cmpal,'8' ;數(shù)字>8?

jastart1

andax,000fh ;將ASCII碼轉(zhuǎn)換成數(shù)字代碼段-(2)

decax shlax,1 ;等效于addax,ax

movbx,ax

jmptable[bx];(段內(nèi))間接轉(zhuǎn)移:IP←[table+bx]start2: movah,9 int21h

...disp1: movdx,offsetmsg1 ;處理程序1

jmpstart2 ...代碼段-(3)可以改為calltable[bx]對(duì)應(yīng)修改為ret3.5.3循環(huán)程序設(shè)計(jì)循環(huán)結(jié)構(gòu)一般是根據(jù)某一條件判斷為真或假來(lái)確定是否重復(fù)執(zhí)行循環(huán)體循環(huán)指令和轉(zhuǎn)移指令可以實(shí)現(xiàn)循環(huán)控制循環(huán)指令LOOPE轉(zhuǎn)移指令多重循環(huán)循環(huán)指令LOOP循環(huán)結(jié)構(gòu)

結(jié)束

初始化

循環(huán)的初始狀態(tài)

循環(huán)體

循環(huán)的工作部分及修改部分

計(jì)數(shù)控制循環(huán)條件控制循環(huán)修改部分控制條件YNdata segmentsum dw?data endscode segmentassumecs:code,ds:data xorax,ax ;被加數(shù)AX清0 movcx,100again: addax,cx

;從100,99,...,2,1倒序累加

loopagain movsum,ax ;將累加和送入指定單元code ends end求和

計(jì)數(shù)控制循環(huán)循環(huán)次數(shù)固定;用二進(jìn)制顯示從鍵盤輸入的一個(gè)字符的ASCII碼

movah,1 ;從鍵盤輸入一個(gè)字符

int21h

movbl,al ;BL←AL=字符的ASCII碼;DOS功能會(huì)改變AL內(nèi)容,故字符ASCII碼存入BL

movah,2

movdl,':' ;顯示一個(gè)分號(hào),用于分隔

int21h顯示從鍵盤輸入的字符的ASCII碼

-(1)

movcx,8 ;CX←8(循環(huán)次數(shù))again: shlbl,1 ;左移進(jìn)CF,從高位開始顯示

movdl,0 ;MOV指令不改變CF

adcdl,30h ;DL←0+30H+CF;CF若是0,則DL←'0';若是1,則DL←'1'

movah,2

int21h ;顯示

loopagain

;CX減1,如果CX未減至0,則循環(huán)

計(jì)數(shù)控制循環(huán)循環(huán)次數(shù)固定顯示從鍵盤輸入的字符的ASCII碼

-(2)

movax,wordX ;測(cè)試目標(biāo)送AX movcx,16

;循環(huán)計(jì)數(shù)器置初值 movdl,-1 ;計(jì)位器置初值again: incdl testax,1 rorax,1 ;循環(huán)指令不影響ZF

loopeagain

;CX≠0且ZF=1(測(cè)試位為0),繼續(xù)循環(huán)

jenotfound movbyteY,dl

jmpdonenotfound: movbyteY,-1 ;ZF=1,16個(gè)位均為0done: ……例子

計(jì)數(shù)控制循環(huán)最大循環(huán)次數(shù)固定,滿足條件退出

movbx,offsetstringagain: moval,[bx] ;取一個(gè)字符 oral,al ;是否為結(jié)尾符0

jzdone ;是,退出循環(huán) cmpal,'A' ;是否為大寫A~Z

jbnext cmpal,'Z'

janext oral,20h

;是,轉(zhuǎn)換為小寫字母(使D5=1) mov[bx],al ;仍保存在原位置next: incbx

jmpagain ;繼續(xù)循環(huán)done: ………大小寫

條件控制循環(huán)利用標(biāo)志退出大小寫字母僅D5位不同冒泡法“冒泡法”是一種排序算法,不是最優(yōu)的算法,但它易于理解和實(shí)現(xiàn)冒泡法從第一個(gè)元素開始,依次對(duì)相鄰的兩個(gè)元素進(jìn)行比較,使前一個(gè)元素不大于后一個(gè)元素;將所有元素比較完之后,最大的元素排到了最后;然后,除掉最后一個(gè)元素之外的元素依上述方法再進(jìn)行比較,得到次大的元素排在后面;如此重復(fù),直至完成就實(shí)現(xiàn)元素從小到大的排序這需要一個(gè)雙重循環(huán)程序結(jié)構(gòu)圖示冒泡法的排序過程序號(hào)數(shù)比較遍數(shù)123413228531641558321615885161583285158163285815163285第3章

mov

cx,count ;CX←數(shù)組元素個(gè)數(shù)

deccx ;元素個(gè)數(shù)減1為外循環(huán)次數(shù)outlp: mov

dx,cx ;DX←內(nèi)循環(huán)次數(shù)

movbx,offsetarrayinlp:

moval,[bx] ;取前一個(gè)元素

cmpal,[bx+1] ;與后一個(gè)元素比較

jnanext ;前一個(gè)不大于后一個(gè)元素,則不進(jìn)行交換

xchgal,[bx+1] ;否則,進(jìn)行交換

mov[bx],alnext: incbx ;下一對(duì)元素

decdx

jnzinlp ;內(nèi)循環(huán)尾

loopoutlp ;外循環(huán)尾計(jì)數(shù)控制雙重循環(huán);現(xiàn)有一個(gè)以$結(jié)尾的字符串,要求剔除其中的空格

…….string db’Letushaveatry!’,’$’ …….. movsi,offsetstringmovdi,offsetstringoutlp: cmpbyteptr[di],’$’

;外循環(huán),先判斷后循環(huán) jzdone ;為$結(jié)束 cmpbyteptr[si],’’

;檢測(cè)是否是空格 jnznext ;不是空格繼續(xù)循環(huán)剔除空格-(1) movdi,si ;是空格,進(jìn)入剔除空格分支 ;該分支是循環(huán)程序段inlp: incdi moval,[di] ;前移一個(gè)位置 mov[di-1],al

cmpbyteptr[di],’$’

;內(nèi)循環(huán),先循環(huán)后判斷 jnzinlp

jmpoutlpnext: incsi ;繼續(xù)對(duì)后續(xù)字符進(jìn)行處理

jmpoutlpdone: ……… ;結(jié)束剔除空格-(2)條件控制雙重循環(huán)3.5.4子程序設(shè)計(jì)把功能相對(duì)獨(dú)立的程序段單獨(dú)編寫和調(diào)試,作為一個(gè)相對(duì)獨(dú)立的模塊供程序使用,就形成子程序子程序可以實(shí)現(xiàn)源程序的模塊化,可簡(jiǎn)化源程序結(jié)構(gòu),可以提高編程效率子程序設(shè)計(jì)要利用過程定義偽指令參數(shù)傳遞是子程序設(shè)計(jì)的重點(diǎn)和難點(diǎn)子程序可以嵌套;一定條件下,還可以遞歸和重入程序定義偽指令過程名 proc[near|far] ...過程名 endp過程名(子程序名)為符合語(yǔ)法的標(biāo)識(shí)符NEAR屬性(段內(nèi)近調(diào)用)的過程只能被相同代碼段的其他程序調(diào)用FAR屬性(段間遠(yuǎn)調(diào)用)的過程可以被相同或不同代碼段的程序調(diào)用對(duì)簡(jiǎn)化段定義格式,在微型、小型和緊湊存儲(chǔ)模式下,過程的缺省屬性為near;在中型、大型和巨型存儲(chǔ)模式下,過程的缺省屬性為far對(duì)完整段定義格式,過程的缺省屬性為near用戶可以在過程定義時(shí)用near或far改變?nèi)笔傩宰映绦虻某R姼袷絪ubname proc ;具有缺省屬性的subname過程 pushax ;保護(hù)寄存器:順序壓入堆棧 pushbx ;ax/bx/cx僅是示例 pushcx … ;過程體 popcx ;恢復(fù)寄存器:逆序彈出堆棧 popbx popax

ret ;過程返回subname endp ;過程結(jié)束第3章;子程序功能:實(shí)現(xiàn)光標(biāo)回車換行dpcrlf proc

;過程開始

pushax

;保護(hù)寄存器AX和DX

pushdx movdl,0dh

;顯示回車 movah,2 int21h movdl,0ah

;顯示換行 movah,2 int21h

popdx

;恢復(fù)寄存器DX和AX popax ret

;子程序返回dpcrlf endp

;過程結(jié)束例題無(wú)參數(shù)傳遞的子程序ALdisp proc

;實(shí)現(xiàn)al內(nèi)容的顯示

pushax

;過程中使用了AX、CX和DX

pushcx pushdx

pushax

;暫存ax movdl,al ;轉(zhuǎn)換al的高4位 movcl,4 shrdl,cl ordl,30h ;al高4位變成3 cmpdl,39h jbealdisp1 adddl,7 ;是0Ah~0Fh,還要加上7aldisp1: movah,2 ;顯示 int21h子程序-(1)

popdx

;恢復(fù)原ax值到dx anddl,0fh ;轉(zhuǎn)換al的低4位 ordl,30h cmpdl,39h jbealdisp2 adddl,7aldisp2: movah,2 ;顯示 int21h

popdx popcx popax ret

;過程返回ALdisp endp子程序-(2)

... ;主程序,同例4.8源程序 movbx,offsetarray;調(diào)用程序段開始 movcx,countdisplp: moval,[bx]

callALdisp

;調(diào)用顯示過程 movdl,',' ;顯示一個(gè)逗號(hào),分隔數(shù)據(jù) movah,2 int21h incbx loopdisplp ;調(diào)用程序段結(jié)束 ..... ;過程定義 end主程序-(3)HTOASC proc;將AL低4位表達(dá)的一位16進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼 andal,0fh cmpal,9 jbehtoasc1 addal,37h ;是0AH~0FH,加37H

ret

;子程序返回htoasc1: addal,30h ;是0~9,加30H

ret

;子程序返回HTOASC endp例題具有多個(gè)出口的子程序3.5.4.2子程序的參數(shù)傳遞入口參數(shù)(輸入?yún)?shù)):主程序提供給子程序出口參數(shù)(輸出參數(shù)):子程序返回給主程序參數(shù)的形式:①數(shù)據(jù)本身(傳值)②數(shù)據(jù)的地址(傳址)傳遞的方法:①寄存器②變量③堆棧求校驗(yàn)和子程序計(jì)算數(shù)組元素的“校驗(yàn)和”校驗(yàn)和是指不記進(jìn)位的累加入口參數(shù): 數(shù)組的邏輯地址(傳址) 元素個(gè)數(shù)(傳值)出口參數(shù): 求和結(jié)果(傳值)把參數(shù)存于約定的寄存器中,可以傳值,也可以傳址。子程序?qū)в谐隹趨?shù)的寄存器不能保護(hù)和恢復(fù)(主程序視具體情況進(jìn)行保護(hù))子程序?qū)в腥肟趨?shù)的寄存器可以保護(hù),也可以不保護(hù);但最好一致例子A入口參數(shù):CX=元素個(gè)數(shù),DS:BX=數(shù)組的段地址:偏移地址出口參數(shù):AL=校驗(yàn)和用寄存器傳遞參數(shù)

……… ;設(shè)置入口參數(shù)(含有DS←數(shù)組的段地址) movbx,offsetarray

;BX←數(shù)組的偏移地址 movcx,count ;CX←數(shù)組的元素個(gè)數(shù)

callchecksuma

;調(diào)用求和過程 movresult,al ;處理出口參數(shù) ……例子A-主程序checksuma proc xoral,al ;累加器清0suma: addal,[bx]

;求和 incbx ;指向下一個(gè)字節(jié)

loopsuma retchecksuma endp end例子A-子程序主程序和子程序直接采用同一個(gè)變量名共享同一個(gè)變量,實(shí)現(xiàn)參數(shù)的傳遞不通模塊間共享時(shí),需要聲明例子B入口參數(shù):count=元素個(gè)數(shù),array=數(shù)組名(含段地址:偏移地址)出口參數(shù):result=校驗(yàn)和用變量傳遞參數(shù)

;主程序

callchecksumb ;子程序checksumb proc pushax pushbx pushcx xoral,al ;累加器清0 movbx,offsetarray

;BX←數(shù)組的偏移地址 movcx,count

;CX←數(shù)組的元素個(gè)數(shù)例子B-(1)sumb: addal,[bx] ;求和 incbx loopsumb movresult,al ;保存校驗(yàn)和 popcx popbx popax retchecksumb endp例子B-(2)主程序?qū)⒆映绦虻娜肟趨?shù)壓入堆棧,子程序從堆棧中取出參數(shù)子程序?qū)⒊隹趨?shù)壓入堆棧,主程序彈出堆棧取得它們例子C入口參數(shù):順序壓入偏移地址和元素個(gè)數(shù)出口參數(shù):AL=校驗(yàn)和用堆棧傳遞參數(shù)

……. movax,offsetarray

pushax movax,count

pushax

callchecksumc

addsp,4 movresult,al ………例子C-主程序圖示要注意堆棧的分配情況,保證參數(shù)存取正確、子程序正確返回,并保持堆棧平衡checksumc proc

pushbp movbp,sp

;利用BP間接尋址存取參數(shù) pushbx pushcx

movbx,[bp+6]

;SS:[BP+6]指向偏移地址

movcx,[bp+4]

;SS:[BP+6]指向元素個(gè)數(shù) xoral,alsumc: addal,[bx] incbx loopsumc popcx popbx

popbp retchecksumc endp例子C-子程序圖示堆棧區(qū)及參數(shù)主程序?qū)崿F(xiàn)平衡堆棧:addsp,n子程序?qū)崿F(xiàn)平衡堆棧:retn子程序的嵌套子程序內(nèi)包含有子程序的調(diào)用就是子程序嵌套沒有什么特殊要求ALdisp proc

pushax

pushcx ;實(shí)現(xiàn)al內(nèi)容的顯示

pushax

;暫存ax

movcl,4 shral,cl

;轉(zhuǎn)換al的高4位

callhtoasc

;子程序調(diào)用(嵌套)

popax

;轉(zhuǎn)換al的低4位

callhtoasc

;子程序調(diào)用(嵌套) popcx popax retALdisp endp嵌套子程序-(1);將AL低

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論