匯編語言實驗報告源代碼_第1頁
匯編語言實驗報告源代碼_第2頁
匯編語言實驗報告源代碼_第3頁
匯編語言實驗報告源代碼_第4頁
匯編語言實驗報告源代碼_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

分支程序設(shè)計-字母字符轉(zhuǎn)換-源碼:.386.MODELFLATExitProcessPROTONEAR32stdcall,dwExitCode:DWORDINCLUDEio.h;headerfileforinput/outputcrEQU0dh;carriagereturncharacterLfEQU0ah;linefeed.STACK4096;reserve4096-bytestack.DATApromotBYTE"Enteracharofletter",cr,Lf,0warningBYTE"Thecharisn'taletter,enteragain",0answerLtoUBYTE"Thecharisalowercase,it'suppercaseis"BYTEcr,Lf,0answerUtoLBYTE"Thecharisauppercase,it'slowercaseis"BYTEcr,Lf,0charBYTE1DUP(?).CODE_start:outputpromot ;輸出提示語句inputchar,1 ;輸入數(shù)據(jù)doGo:movbl,charinputchar,1cmpchar,0dh ;與0dh比較jedoWhCMP ;若相等,跳轉(zhuǎn)到doWhCMPjmpdoGo ;重新輸入數(shù)據(jù)doWhCMP:cmpbl,41h ;與41h(A)比較jlinputAgain ;若char<A,提示重新輸入cmpbl,5AhjleendUppertoL ;若char<=Z,跳轉(zhuǎn)到大寫字母轉(zhuǎn)換為小寫字母部分cmpLower:cmpbl,61h ;與61h(a)比較jlinputAgain ;若char<a,跳轉(zhuǎn)到重新輸入cmpbl,7Ah ;與7Ah(z)比較jginputAgain ;若char>z,跳轉(zhuǎn)到重新輸入jmpendLowertoU ;跳轉(zhuǎn)到小寫字母轉(zhuǎn)換為大寫字母部分inputAgain:outputwarning ;輸出錯誤信息提示語句inputchar,1 ;輸入數(shù)據(jù)movbl,charjmpdoGo ;跳轉(zhuǎn)到比較部分endUppertoL:moval,bladdal,32 ;ASCII碼加32movchar,aloutputanswerUtoL ;輸出結(jié)果提示語句outputchar ;輸出結(jié)果jmpendMain ;跳轉(zhuǎn)到結(jié)束部分endLowertoU:moval,blsubal,32 ;ASCII碼減32movchar,aloutputanswerLtoU ;輸出結(jié)果提示語句outputchar ;輸出結(jié)果endMain:INVOKEExitProcess,0;exitwithreturncode0PUBLIC_start;makeentrypointpublicEND;endofsourcecode

循環(huán)程序設(shè)計-顯示九九乘法表-源碼:.386.MODELFLATExitProcessPROTONEAR32stdcall,dwExitCode:DWORDINCLUDEio.hcrEQU0dhLfEQU0ah.STACK4096.DATAcomeBYTE"Welcometomultiplicationtable!",cr,Lf,0sumBYTE6DUP(?),0firstBYTE6DUP(?),0secondBYTE6DUP(?),0rowWORD?lieWORD?prompt1BYTE"*",0prompt2BYTE"=",0prompt3BYTEcr,Lf,0prompt4BYTE"",0.CODE_start:outputcome ;輸出歡迎語句outputprompt3 ;換行movrow,1 ;將行數(shù)初始值賦值為1movlie,1 ;將列數(shù)初始值賦值為1fo:cmprow,9 ;行數(shù)與9相比較jgquit ;若行數(shù)等于9則退出循環(huán)movbx,row ;bx寄存器中存儲行數(shù)itoafirst,bx ;將bx的值轉(zhuǎn)換為ASCII碼值存儲到first中outputfirst+5 ;輸出行數(shù)outputprompt1 ;輸出乘號movcx,lie ;cx寄存器中存儲列數(shù)itoasecond,cx ;將cx的值轉(zhuǎn)換為ASCII碼值存儲到second中outputsecond+5 ;輸出列數(shù)outputprompt2 ;輸出等號movax,cx ;將cx寄存器中的列數(shù)移到ax寄存器為乘法做準備imulbx ;做乘法bx*ax即行數(shù)*列數(shù)itoasum,ax ;將結(jié)果轉(zhuǎn)換為ASCII碼值存儲到sum中outputsum+4 ;輸出乘積運算結(jié)果outputprompt4 ;輸出空格cmpbx,cx ;行數(shù)與列數(shù)值進行比較jeto ;若相等則跳轉(zhuǎn)到換行輸出部分inclie ;列數(shù)自增jmpfo ;繼續(xù)循環(huán)to:outputprompt3 ;輸出換行incrow ;行數(shù)自增movlie,1 ;列數(shù)初始化為1jmpfo ;進入循環(huán)quit:INVOKEExitProcess,0;exitwithreturncode0PUBLIC_start;makeentrypointpublicEND;endofsourcecode

子程序設(shè)計-求給定整數(shù)的所有素因子-源碼:.386.MODELFLATExitProcessPROTONEAR32stdcall,dwExitCode:DWORDINCLUDEio.h;headerfileforinput/outputcrEQU0dh;carriagereturncharacterLfEQU0ah;linefeed.STACK4096;reserve4096-bytestack.DATA;reservestoragefordataflaiDWORD?tempDWORD?crlfBYTE"*",0eqllBYTE"=",0promptBYTE"Enteranumbertofindalltheprimefactors",cr,Lf,0flDWORD?valueBYTE11DUP(?),0charBYTE1DUP(?)PUBLIC_start.CODE;startofmainprogramcode_start:outputprompt ;輸出提示語句inputvalue,11 ;輸入數(shù)據(jù)atodvalue ;ASCII碼轉(zhuǎn)換為數(shù)字pusheax ;eax寄存器的值壓入堆棧callbyteInput ;調(diào)用byteInput子程序addesp,4outputeqll ;輸出等號pusheax ;eax寄存器的值壓入堆棧callfindPfactor ;調(diào)用findPfactor子程序addesp,4INVOKEExitProcess,0;exitwithreturncode0findPfactorPROCNEAR32 ;尋找素因子子程序pushebp ;ebp內(nèi)的值壓入堆棧movebp,espmoveax,[ebp+8]movflai,eaxmovecx,2movebx,ecxdoFind:movecx,ebxcmpecx,flai ;while循環(huán)的條件比較jeendFind ;如果ecx的值與flai相等則退出循環(huán)doFactor:movtemp,eaxcdq ;為除法做準備idivecx ;除法eax=eax/ecxcmpedx,0 ;eax符號位與0進行比較jneendFactor ;若不相等跳轉(zhuǎn)到endFactor部分pushecx ;ecx值壓入堆棧outputcrlf ;輸出換行callbyteInput ;調(diào)用byteInput子程序addesp,4jmpdoFactorendFactor:moveax,tempincebx ;ebx值自增jmpdoFind ;跳轉(zhuǎn)到doFind部分endFind:popebp ;ebp彈出堆棧ret ;返回指令findPfactorENDP ;findPfactor子程序結(jié)束byteInputPROCNEAR32 ;byteInput子程序pushebp ;ebp壓入堆棧movebp,esppushebx ;ebx壓入堆棧pusheax ;eax壓入堆棧pushedx ;edx壓入堆棧movfl,0movebx,10moveax,[ebp+8]doWh:cdq ;為除法做準備idivebx ;除法eax=eax/ebxpushedx ;edx壓入堆棧incfl ;fl值自增cmpeax,0 ;eax與0比較jeenddoWh ;若相等則退出循環(huán)jmpdoWhenddoWh:doPrint:cmpfl,0 ;fl值與0作比較jeenddoPrint ;若相等則退出輸出循環(huán)decfl ;fl值自減popedx ;edx彈出堆棧movchar,dladdchar,'0'outputchar ;輸出charjmpdoPrint ;繼續(xù)循環(huán)enddoPrint:popedx ;edx彈出堆棧popeax ;eax彈出堆棧popebx ;ebx彈出堆棧popebp ;ebp彈出堆棧ret ;返回指令byteInputENDP ;byteInput子程序結(jié)束END;endofsourcecode

位運算指令的使用-雙字型數(shù)的高低字轉(zhuǎn)換-源碼:.386.MODELFLATExitProcessPROTONEAR32stdcall,dwExitCode:DWORDINCLUDEio.h;headerfileforinput/outputcrEQU0dh;carriagereturncharacterLfEQU0ah;linefeed.STACK4096;reserve4096-bytestack.DATA;reservestoragefordatapromptBYTE"Inputanumber:",0numberBYTE20dup(?)resultBYTEcr,Lf,"The2'scomplementrepresentationis:"hexoutBYTE8DUP(?),cr,Lf,0prompt2BYTEcr,lf,"Aftertheshift",0.CODE ;startofmainprogramcodeHexPROCNEAR32pusheaxleaebx,hexout+7 ;取最后一個字符的地址mov

溫馨提示

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

評論

0/150

提交評論