版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第6章子程序結構(jiégòu)講授(jiǎngshòu)要點子程序的定義、調(diào)用與返回。子程序的參數(shù)傳遞方法。精品資料2/4/202380x86匯編語言程序設計子程序調(diào)用(diàoyòng)和返回指令:code1segmentmainprocfar……
callfarptrsubp……retmainendpcode1endscode2segmentsubpprocfar……
retsubpendpcode2ends段間調(diào)用(diàoyòng)和返回codesegmentmainprocfar……callsubp……retmainendpsubpprocnear……
retsubpendpcodeends段內(nèi)調(diào)用和返回精品資料2/4/202380x86匯編語言程序設計CALL調(diào)用指令段內(nèi)直接近調(diào)用:CALLDST執(zhí)行操作:(SP)←(SP)-2((SP)+1,(SP))←(IP)(IP)←(IP)+16位位移(wèiyí)量段內(nèi)間接近調(diào)用:CALLDST執(zhí)行操作:(SP)←(SP)-2((SP)+1,(SP))←(IP)(IP)←(EA)精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計段間直接遠調(diào)用:CALLDST執(zhí)行操作:(SP)←(SP)-2((SP)+1,(SP))←(CS)(SP)←(SP)-2((SP)+1,(SP))←(IP)(IP)←偏移(piānyí)地址(CS)←段地址段間間接遠調(diào)用:CALLDST執(zhí)行操作:(SP)←(SP)-2((SP)+1,(SP))←(CS)(SP)←(SP)-2((SP)+1,(SP))←(IP)(IP)←(EA)(CS)←(EA+2)精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計RET返回指令段內(nèi)近返回:RET執(zhí)行操作(cāozuò):(IP)←((SP)+1,(SP))(SP)←(SP)+2段內(nèi)帶立即數(shù)近返回:RETEXP段間遠返回:RET執(zhí)行操作(cāozuò):(IP)←((SP)+1,(SP))(SP)←(SP)+2(CS)←((SP)+1,(SP))(SP)←(SP)+2段間帶立即數(shù)遠返回:RETEXP精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計例:帶立即(lìjí)數(shù)返回(SP)堆棧(duīzhàn)段codesegmentmainprocfar……pushaxpushbxpushcxcallsub……retmainendpsubprocnear……ret6subendpcodeends(IP)(cx)(bx)(ax)(SP)(SP)精品資料2/4/202380x86匯編語言程序設計6.1子程序概述
6.1.1過程(guòchéng)的定義過程定義由PROC與ENDP偽指令實現(xiàn),形式如下(rúxià): 過程名PROC[NEAR|FAR] <過程體> 過程名ENDP1.過程名在整個程序中必須是唯一的。2.過程名本質上與標號一樣,也具有3種屬性:段地址、偏移地址和類型(NEAR或FAR)。3.PROC后用關鍵字NEAR、FAR或空,以表示過程的類型(缺省為NEAR)。精品資料2/4/202380x86匯編語言程序設計6.1.2過程調(diào)用(diàoyòng)和返回1.過程調(diào)用和返回指令(1)CALL:過程調(diào)用與JMP指令類似,CALL指令包括下列4種調(diào)用方式:段內(nèi)直接調(diào)用(Intrasegment/DirectCall)段間直接調(diào)用(Intersegment/DirectCall)段內(nèi)間接(jiànjiē)調(diào)用(Intrasegment/IndirectCall)段間間接(jiànjiē)調(diào)用(Intersegment/IndirectCall)段內(nèi)調(diào)用在同一代碼段內(nèi)進行,又稱近(Near)調(diào)用;段間調(diào)用可以在不同代碼段之間進行,又稱遠(Far)調(diào)用。精品資料2/4/202380x86匯編語言程序設計語法格式: CALLProcName 段內(nèi)直接調(diào)用:IP進棧,IP=label的偏移地址; 段間直接調(diào)用:CS:IP進棧,CS:IP=label的分段地址
功能描述:(1)返回地址進棧。 遠調(diào)用:CS與IP(下一條指令(zhǐlìng)的地址)依次進棧。 近調(diào)用:IP(下一條指令(zhǐlìng)的16位偏移地址)進棧。(2)轉移到過程的第1條指令(zhǐlìng)去執(zhí)行。 遠調(diào)用:根據(jù)操作數(shù),將32位地址送CS:IP。 近調(diào)用:根據(jù)操作數(shù),將16位偏移地址送IP。對標志位的影響:無。精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計(2)RET指令RET(Return):過程返回語法格式: RET ;近返回或遠返回 RET imm16 ;近返回或遠返回,并調(diào)整堆棧:SP=SP+imm16功能描述(miáoshù): RET:返回地址出棧,從而實現(xiàn)轉移到返回地址處。其中, 遠返回:POP1個雙字到CS:IP。 近返回:POP1個字到IP。 RETimm16:在返回地址出棧后,CPU立即將imm16加到堆棧指針SP。這種機制用來在返回前將參數(shù)從棧中移出。對標志位的影響:無。說明:RET由匯編程序根據(jù)其所在過程的類型(NEAR或FAR)決定是近返回還是遠返回。缺省為近返回。精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計2.使用(shǐyòng)過程應注意的問題在過程體內(nèi)必須有一條RET指令被執(zhí)行到。如果在過程內(nèi)沒有執(zhí)行到RET或其它轉移指令,程序將繼續(xù)執(zhí)行ENDP后的指令。正確選擇過程的類型。通?;谙铝性瓌t:若過程只在同一代碼段中被調(diào)用,則定義為NEAR。若過程可以在不同代碼段中被調(diào)用,則定義為FAR。通常要保證RET指令執(zhí)行前,棧頂內(nèi)容正好是返回地址。注意保護相關寄存器的值。通常,除了作為返回參數(shù)的寄存器外,過程不應改變其它寄存器的值??梢詫⑦^程定義放在單獨的代碼段中。若過程定義與主程序處于同一代碼段,則要保證其只有被調(diào)用時,才會執(zhí)行。精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計3.保存(bǎocún)和恢復寄存器例:SUBTPROCNEARPUSHAXPUSHBXPUSHCX……POPCXPOPBXPOPAXRETSUBTENDP精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計【例6.1】分析下列程序(chéngxù),描述它的功能。dsegSEGMENTbufDB80,81DUP(0)dsegENDSssegSEGMENTSTACKDW64DUP(0)ssegENDScsegSEGMENTASSUMECS:cseg,DS:dseg,SS:sseg精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計crPROC(NEAR)MOVAH,2MOVDL,13INT21HMOVDL,10INT21HRETcrENDP精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計main:MOVAX,dsegMOVDS,AXLEADX,bufMOVAH,10INT21H;輸入一個符號串CALLcrMOVAH,1INT21H;輸入一個字符(zìfú)MOVBL,AL;用BL保存讀入的字符(zìfú)LEASI,BUF+2MOVCX,BUF+1精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計lab2:MOVDL,[SI]CMPDL,BLJZlab1;等于(děngyú)第2次輸入的符號則轉MOVAH,2INT21HINCSILOOPlab2lab1:MOVAH,4CHINT21HcsegENDSENDmain精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計【例6.2】編寫一個子程序,對一個無符號的字型數(shù)組的各元素(yuánsù)求和。在調(diào)用子程序之前,已把數(shù)組的段地址放在DS中,起始偏移地址放在寄存器SI中,數(shù)組元素(yuánsù)個數(shù)(>0)放在CX中。要求子程序把計算結果以雙字的形式存放,高位放在DX中,低位放在AX中。sumPROCNEARPUSHBX;保護(bǎohù)用到的寄存器BXXORAX,AXMOVDX,AX;求和前先把存放結果的DX,AX清0MOVBX,AX精品資料2/4/202380x86匯編語言程序設計s1:ADDAX,[BX+SI];把一個(yīɡè)元素加到AX中ADCDX,0;若有進位,DX加1INCBXINCBX;BX加2,指向數(shù)組的下一元素LOOPs1POPBX;恢復寄存器BX的值RETsumENDP精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計6.2過程(guòchéng)的參數(shù)傳遞參數(shù)的分類:入口參數(shù):由調(diào)用者向過程傳遞的數(shù)據(jù),作為(zuòwéi)過程的輸入?yún)?shù)。出口參數(shù):由過程向調(diào)用者返回的數(shù)據(jù),作為(zuòwéi)過程的輸出參數(shù)。根據(jù)問題的需要,過程可以只有入口參數(shù)或只有出口參數(shù),也可以二者兼有。對于過程與調(diào)用者之間的參數(shù)傳遞,可根據(jù)傳遞的數(shù)據(jù)量,選擇采用寄存器、變量或堆棧等方式。由于過程是相對獨立的功能塊,因此,在定義過程時,通常要加上適當?shù)淖⑨?,主要包括功能、入口參?shù)與出口參數(shù)等。精品資料2/4/202380x86匯編語言程序設計6.2.1用變量傳遞(chuándì)參數(shù)在程序中定義全局變量,如放在數(shù)據(jù)(shùjù)段,過程直接按名訪問該變量。過程直接以變量作為參數(shù),雖然方便,但通用性較差。
【例6.3】編寫一個子程序,以放在DS段中year的公元年份為入口參數(shù),判斷該年是否為閏年。另有一個應用程序,它已定義了一個字節(jié)型數(shù)組t,依次存放著12個月的每月天數(shù),其中2月份的天數(shù)是28。應用程序已經(jīng)在DS段中存放了年份值,利用前面編寫的子程序,編寫程序段調(diào)整數(shù)組t中2月份的天數(shù)。精品資料2/4/202380x86匯編語言程序設計【解】;功能:根據(jù)一個年份是否為閏年,設置該年2月份的天數(shù);入口(rùkǒu):DS段中的字型變量year=公元年份;出口:DS段中的字節(jié)型變量t+1=該年2月份天數(shù);破壞寄存器:無jud1PROCNEARPUSHAXPUSHBXPUSHCXPUSHDXMOVBYTEPTR[t+1],28MOVAX,[year]精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計MOVDX,0MOVBX,4DIVBX;除以4CMPDX,0JNZlab1;不能整除4則不是閏年,轉MOVAX,[year];取回(qǔhuí)年份值MOVBX,100DIVBX;除以100CMPDX,0JNZlab2;不能整除100則是閏年,轉MOVAX,[year]MOVBX,400DIVBX;除以400精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計CMPDX,0JNZlab1lab2:INCBYTEPTR[t+1];是閏年(rùnnián),把天數(shù)加1,設置出口參數(shù)lab1:POPDXPOPCXPOPBXPOPAXRETJud1ENDP精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計6.2.2用寄存器傳遞(chuándì)參數(shù)通過寄存器傳遞數(shù)據(jù)或數(shù)據(jù)地址。通常選擇AL、AX、DX:AX(或EAX)傳遞字節(jié)、字或雙字。傳遞16位偏移(piānyí)地址最好選擇SI、DI或BX,傳遞32位地址可以用DS:BX、DS:SI、DS:DI、ES:BX、ES:SI或ES:DI等。精品資料2/4/202380x86匯編語言程序設計【例6.4】用寄存器傳遞參數(shù),編寫例6.3要求的子程序?!窘狻?功能:判斷一個年份是否為閏年;入口:AX=公元年份;出口(chūkǒu):CF,1表示是閏年,0表示非閏年;破壞寄存器:AXjudPROCNEARPUSHBXPUSHCXPUSHDXMOVCX,AX;臨時保存年份值MOVDX,0MOVBX,4精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計DIVBX;除以4,為預防溢出(yìchū),用雙字除以字CMPDX,0JNZlab1;不能整除4則不是閏年,轉MOVAX,CX;取回年份值MOVBX,100DIVBX;除以100CMPDX,0JNZlab2;不能整除100則是閏年,轉MOVAX,CXMOVBX,400DIVBX;除以400CMPDX,0JZlab2精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計lab1:CLC;把CF清0表示非閏年,設置出口參數(shù)JMPlab3lab2:STC;把CF置1表示是閏年,設置出口參數(shù)lab3:POPDXPOPCXPOPBXRETjudENDP對于DX中存放的年份值,需要先放到AX中,才能調(diào)用子程序jud,然后(ránhòu)以調(diào)用返回后的CF值決定是否把t數(shù)組中表示2月份天數(shù)的[t+1]加1。程序段如下:MOVAX,DXCALLjudADCBYTEPTR[t+1],0;原值+0+CF精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計6.2.3用地址表傳遞(chuándì)參數(shù)建立一個(yīɡè)地址表,存放所有參數(shù)的地址,傳遞地址表的首地址給過程。這種方法特別適合于參數(shù)較多的情況。精品資料2/4/202380x86匯編語言程序設計6.2.4用堆棧(duīzhàn)傳遞參數(shù)過程(guòchéng)從堆棧得到入口參數(shù),返回前將出口參數(shù)寫入堆棧;調(diào)用者通過出棧得到返回參數(shù)。過程(guòchéng)從堆棧存取參數(shù)時,通常使用BP,因為其隱含的段地址在SS中。采用堆棧傳遞參數(shù)時,典型的過程(guòchéng)結構如下: StdProc proc near push bp mov bp,sp ;BP指向當前棧頂,用于取入口參數(shù) ... pop bp ret ParmSize;返回前從堆棧移出入口參數(shù) StdProcendp其中,ParmSize是過程(guòchéng)被調(diào)用前進棧的入口參數(shù)的字節(jié)數(shù)。精品資料2/4/202380x86匯編語言程序設計【例6.5】用堆棧傳遞入口參數(shù),編寫子程序,把接收的兩個(liǎnɡɡè)帶符號整數(shù)中大的一個作為結果,出口參數(shù)放在AX中?!窘狻?功能:求兩個(liǎnɡɡè)帶符號整數(shù)中大的一個;入口參數(shù):調(diào)用前把兩個(liǎnɡɡè)帶符號整數(shù)入棧;出口參數(shù):AX;破壞寄存器:AX精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計_maxPROCNEARPUSHBP;暫時保存寄存器BP的值MOVBP,SPMOVAX,WORDPTR[BP+6];取第1個參數(shù)(cānshù)到AXCMPAX,WORDPTR[BP+4];與第2個參數(shù)(cānshù)比較JGElabMOVAX,WORDPTR[BP+4];取第2個參數(shù)(cānshù)到AXlab:POPBP;恢復寄存器BP的原值RET_maxENDP精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計6.3子程序舉例(jǔlì)【例】編寫子程序write,把整型數(shù)據(jù)以十進制形式顯示到屏幕上?!痉治觥繀⒄崭呒壵Z言中輸出語句的功能,write子程序應具備這樣(zhèyàng)一些特點:被顯示的整數(shù)可以是無符號的,也可以是帶符號的,但需要明確指出是哪一種情況;整數(shù)在計算機內(nèi)部是字型數(shù)據(jù),范圍為-32768~+65535;被輸出的數(shù)據(jù)是帶符號數(shù)時,負號“-”必須輸出,而正號“+”總是省略;輸出數(shù)據(jù)的最大位數(shù)是十進制的5位,當計算出5位中的某一位是0時,需要判斷這個0是否應該輸出,輸出條件是前面已經(jīng)輸出過非0數(shù)字或者這個0是個位數(shù)。輸出的數(shù)必須是以ASCII碼形式存放在DL中。精品資料2/4/202380x86匯編語言程序設計【解】;功能:在屏幕上輸出整數(shù)值;入口:AX=待輸出的整數(shù);CF=為0表示輸出無符號數(shù),為1則輸出帶符號數(shù);出口:無;破壞寄存器:無;DX、AX-存放整數(shù),BX-分離各整數(shù)位(shùwèi)時除數(shù),CX-分離各數(shù)位(shùwèi)次數(shù),;SI-表示是否輸出過非0數(shù)字,DI-暫存輸出的整數(shù)writePROCNEARPUSHBXPUSHCXPUSHDXPUSHSI精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計PUSHDIMOVSI,0;SI清0表示還沒有輸出過非0數(shù)字MOVDI,AX ;保存(bǎocún)待輸出的數(shù)值到DI中JNCw1 ;作為無符號數(shù)輸出轉CMPAX,0JGEw1;AX是正數(shù)轉MOVDL,'-'MOVAH,2INT21H ;輸出負號NEGDI ;取絕對值放在DI中精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計w1:MOVBX,10000;第一次的除數(shù)MOVCX,5;重復次數(shù)w2:MOVAX,DI;取回待輸出數(shù)值MOVDX,0;被除數(shù)高位清0DIVBX ;做雙字除以字的除法MOVDI,DX;余數(shù)保存(bǎocún)在DI中CMPAL,0JNEw3 ;商非0轉CMPSI,0 ;商是0,判斷前面是否輸出過數(shù)字JNEw3 ;前面已輸出過數(shù)字,則當前的0應該輸出,轉CMPCX,1 ;判斷是否是個位JNEw4 ;不是個位則不輸出當前的0,轉精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計w3:MOVDL,ALADDDL,30HMOVAH,2INT21H ;輸出當前這一位數(shù)字(shùzì)MOVSI,1 ;用SI記載已輸出過數(shù)字(shùzì)w4:MOVAX,BXMOVDX,0MOVBX,10DIVBXMOVBX,AX;bx/10=>bx,計算下一次的除數(shù)LOOPw2精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計POPDIPOPSIPOPDXPOPCXPOPBXRETwriteENDP精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計【例6.11】編寫子程序read,從鍵盤上讀入一個整數(shù)?!痉治觥繛榱吮M可能與高級語言中整數(shù)輸入的情況一致,子程序不僅要能讀入正確輸入時的數(shù)據(jù),還要能對不正確的輸入做出適當?shù)姆磻?,因此設計上要注意幾個問題:首先是要用字符串輸入方式(DOS的10號子功能),因為這種方式支持退格鍵修改(xiūgǎi)功能,因而需要準備相應的輸入緩沖區(qū);出口參數(shù)需要兩個,以CF的設置表示輸入是否正確,當輸入正確時把整數(shù)值放在AX中作為輸入結果;要能夠跳過若干個連續(xù)的空格符;要能夠處理正負號。精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計【解】;功能:從鍵盤讀入整數(shù)值;入口:CF=為0表示廢棄多余符號(fúhào)。;為1則把多余符號(fúhào)留作下一次輸入。;出口:CF=0表示正常讀入,1表示輸入有錯;破壞寄存器:無readPROCNEARPUSHBXPUSHCXPUSHDXPUSHSIPUSHDS;以上為寄存器保護精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計PUSHFPUSHCSPOPDS;令DS取CS的值rd1:MOVBX,CS:[point];取上次(shànɡcì)輸入后已讀取到輸入串的位置rd2:INCBXCMPCS:[bufin+BX+1],''JErd2;跳過空格CMPCS:[bufin+BX+1],13JNZrd4;不是回車鍵,轉讀入數(shù)值處理精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計rd3:LEADX,CS:[bufin]MOVAH,10INT21H;遇回車鍵要求再次輸入MOVAH,2MOVDL,10INT21H;換行MOVCS:[point],0JMPrd1;對新的輸入再轉去(zhuǎnqù)跳過前導空格rd4:MOVSI,BXDECSI;令SI指向輸入串的第一個有效字符MOVAX,0MOVBX,10MOVCX,0精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計rd5:CMPCS:[bufin+SI+2],'+'JNZrd6;不是正號轉CMPCL,1JErd10;已讀到正確(zhèngquè)數(shù)值后,遇正號轉CMPCL,0JErd8;正號是第一個有效字符轉STC;輸入有錯JMPrd13精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計rd6:CMPCS:[bufin+SI+2],'-'JNZrd9CMPCL,1;已讀到正確數(shù)值后,遇負號(fùhào)轉JErd10CMPCL,0JErd7;負號(fùhào)是第一個有效字符轉STC;輸入有錯JMPrd13精品資料2/4/202380x86匯編語言(huìbiānyǔyán)程序設計rd7:MOVCH,1;記下(jìxià)讀入的是負數(shù)rd8:MOVCL,2;記下(jìxià)已讀入正/負號INCSI;指向下一字符JMPrd5rd9:CMPCS:[bufin+SI+2],'0'JBrd10;不是數(shù)字轉CMPCS:[bufin+SI+2],'9'JArd10
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版城市道路排水設施承包合同:城市道路排水設施維護承包合同3篇
- 2024年度危險化學品廢棄物處理合同3篇
- 2024年度綠色節(jié)能住宅房地產(chǎn)定向開發(fā)合同3篇
- 2024版商鋪使用權轉讓合同樣本3篇
- 2024年度石料行業(yè)信用體系建設與合作合同3篇
- 2024年度區(qū)塊鏈應用開發(fā)與維護合同8篇
- 2024年度危險物品銷售與售后服務保障合同3篇
- 2024年度新能源發(fā)電項目電力施工勞務合作合同范本2篇
- 2024版定制門窗設計與施工綠色建材合同2篇
- 2024年環(huán)保型二手房產(chǎn)買賣合同(含綠色裝修及環(huán)保認證)3篇
- 機床操作說明書
- 義務教育物理課程標準(2022年版)測試卷(含答案)
- NY/T 396-2000農(nóng)用水源環(huán)境質量監(jiān)測技術規(guī)范
- GB/T 39901-2021乘用車自動緊急制動系統(tǒng)(AEBS)性能要求及試驗方法
- GB/T 36652-2018TFT混合液晶材料規(guī)范
- 國際商務談判 袁其剛課件 第四章-國際商務談判的結構和過程
- 國際商法教案(20092新版)
- 江蘇開放大學漢語作為第二語言教學概論期末復習題
- 工作簡化方法改善與流程分析課件
- 國家開放大學《管理學基礎》形考任務1-4參考答案
- 道德與法治《健康看電視》優(yōu)秀課件
評論
0/150
提交評論