匯編上機實驗_第1頁
匯編上機實驗_第2頁
匯編上機實驗_第3頁
匯編上機實驗_第4頁
匯編上機實驗_第5頁

文檔簡介

從鍵盤接收兩個不大于5的十進制數(shù)字,并以十進制數(shù)據(jù)形式顯示其和。編程提示:該程序中要求的均為一位數(shù)據(jù)的輸入輸出,暫時不考慮多位數(shù)據(jù),請輸入0~5之間的數(shù)據(jù),顯示的結(jié)果為0~9。請不要輸入兩個5,以免出現(xiàn)不能直接輸出的情況。datasegmentdataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axmovah,01hint21hmovbl,alsubbl,30h;將輸入的數(shù)字變成16進制數(shù)后放在bl中;為了實現(xiàn)bl與cl的16進制數(shù)相加movdl,10;換行(10表示換行)movah,02hint21h;movdl,13;回車(13表示回車,為的是讓換行之后光標移到行首);movah,02h;int21hmovah,01hint21hmovcl,alsubcl,30h;將輸入的數(shù)字變成16進制數(shù)后放在cl中movdl,10movah,02hint21h;movdl,13;movah,02h;int21haddcl,bladdcl,30hmovdl,clmovah,02hint21hmovax,4c00hint21hcodeendsendstart

1、試編寫程序,完成下面公式的計算。A-(X-Y+24)/Z的商,B-(X-Y+24)/Z的余數(shù)其中,變量X和Y是32位有符號數(shù),變量A、B、Z是16位有符號數(shù)。DATASEGMENTXDD12345HORG10HYDD12345HORG20HZDW12HORG30HADW?BDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAX,WORDPTRX;將X低四位放入AX中MOVDX,WORDPTRX+2 ;將X高四位放入DX中SUBAX,WORDPTRYSBBDX,WORDPTRY+2;X和YSUBAX,WORDPTRYSBBDX,WORDPTRY+2;X和Y的高四位相減(考慮借位)ADDAX,24ADCDX,0 ;只是將進位加入到DX中IDIVZMOVA,AX ;存放商到AMOVB,DX ;存放余數(shù)到BMOVAX,4C00HINT21HCODEENDSENDSTART2、試將字節(jié)數(shù)據(jù)B1拆分成兩個半字節(jié)數(shù)據(jù),分別存放于其后兩個單元X和Y中。編程提示:數(shù)據(jù)段定義應(yīng)包含B1、X、Y三個變量,其中B1變量自定義具體的數(shù)值,X、Y變量的數(shù)值由程序賦值,分別是B1的高低半個字節(jié)。該程序中需要使用邏輯操作完成半字節(jié)數(shù)據(jù)的拆分。DATASEGMENTB1DB12HXDB?YDB?DATAENDSCODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AXMOVAL,B1MOVCL,4SHRAL,CLMOVX,ALMOVAL,B1ANDAL,0FHMOVY,ALMOVAX,4C00HINT21HCODEENDSENDSTART1、試編寫程序,完成以下功能。⑴程序執(zhí)行時,顯示提示信息“Pleaseinputastring(length<9):”,由用戶輸入一個長度小于9的字符串;然后顯示提示信息“Pleaseinputtheindexofthechartodisplay:”,請用戶指定該串中的某個字符的位置號;程序?qū)⒂脩糁付ㄎ恢玫淖址@示出來。例如:用戶輸入一個字符串“ABCDEFG”,然后指定的位置號為2,則屏幕顯示字符“C”。注意:這里的位置號從0開始。注意:以上功能的實現(xiàn)不要求程序做控制判斷,在字符串輸入時,由人為控制字符串長度小于9;在指定位置號時,由人為控制輸入的位置號是合法的。2、試使用分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)程序完善上面的程序功能。對用戶輸入的字符串進行長度檢查,若長度大于9,則要求用戶重新輸入;用戶在指定位置號時,進行判斷,若輸入非法(位置號大于實際字符串長度),則提示用戶重新輸入;統(tǒng)計用戶輸入的字符串中特定字符的數(shù)目并顯示??上戎付ㄌ囟ㄗ址M行統(tǒng)計,然后再由用戶指定字符進行統(tǒng)計。DATASEGMENTINMESSDB"Pleaseinputastring(length<9):$"TIPSMESSDB"Pleaseinputtheindexofthechartodisplay:$"STR1 DB20,?,20DUP('$')X DB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXL1:LEADX,INMESSMOVAH,09HINT21H;提示輸入字符串LEADX,STR1MOVAH,0AHINT21H;輸入字符串MOVDL,10MOVAH,02HINT21HMOVDL,13MOVAH,02HINT21H;換行回車CMPSTR1+1,8JALI;比較輸入的字符串長度是否大于8L2:LEADX,TIPSMESSMOVAH,09HINT21H;提示輸入位置MOVAH,01HINT21H;輸入位置SUBAL,30HMOVCL,ALMOVDL,10MOVAH,02HINT21HMOVDL,13MOVAH,02HINT21H;換行回車movbl,str1+1DECblCMPCL,blJAL2;判斷指定位置是否超出MOVBL,CLMOVBH,0MOVAL,STR1[BX+2]MOVDL,ALMOVAH,02HINT21Hmovdl,10movah,02hint21hmovah,01hint21hXORCX,CXMOVCL,str1[1]MOVBX,-1MOVDL,0l3:incbxcmpal,str1[bx+2]jnzl4incdll4:LOOPl3ADDDL,30HMOVCL,DL;回車換行;回車換行MOVAH,2INT21HMOVDL,0DHMOVAH,2INT21HMOVDL,CLMOVAH,2INT21HMOVAX,4C00HINT21HCODEENDSENDSTART實驗四:1、已知無符號字數(shù)組LIST的第一個字數(shù)據(jù)為其元素個數(shù),其后數(shù)據(jù)按由小到大的順序保存。試將某無符號字數(shù)據(jù)X插入數(shù)組LIST的正確位置,并修改元素個數(shù)。編程提示:該程序中要將X插入遞增數(shù)組,需要和數(shù)組中每一個數(shù)據(jù)值進行大小比較,找到合適位置保存X。數(shù)據(jù)比較的方式:(1) 從前向后比較:找到小于X的數(shù)據(jù)后,移動該數(shù)據(jù)及其后面的所有元素,將X存放到騰出的單元中;(2) 從后向前比較:找到大于X的數(shù)據(jù)后,直接將該數(shù)據(jù)向后移動一個數(shù)據(jù)的位置,直到找到小于X的數(shù)據(jù),將X保存到當前空出位置上程序如下:DATASEGMENTLISTDW5,12,13,15,16,17ORG20HA1DW14DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAX,A1MOVCX,LISTMOVBX,CXADDBX,BXBEGIN:MOVDX,LIST[BX]CMPAX,DXJALPMOVLIST[BX+2],DXLP1:subBX,2LOOPBEGINLP:MOVLIST[BX+2],AXADDLIST,1MOVAX,4C00HINT21HCODEENDSENDSTART2、試用子程序?qū)崿F(xiàn)以下要求。題目:從鍵盤接收若干個一位十進制數(shù)值(0~9),并以十進制數(shù)據(jù)形式顯示其和。要求:(1)用子程序?qū)崿F(xiàn)一位十進制數(shù)值的輸入;(2)當用戶未輸入數(shù)值,直接回車時,結(jié)束輸入;(3)輸出的數(shù)據(jù)為多位十進制數(shù)據(jù),而機器內(nèi)部計算的和是十六進制形式,需要進行數(shù)制轉(zhuǎn)換,然后以字符串的形式輸出結(jié)果;(4)程序中要求有必要的提示信息。例如:用戶在提示信息下輸入三個數(shù)值:Pleaseinputanumber:5Pleaseinputanumber:3Pleaseinputanumber:4程序顯示運算結(jié)果Thesumis:123、試用子程序改進以上題目。題目:從鍵盤接收若干個N位的十進制數(shù)值(0?65535),并以二進制、十進制、十六進制三種數(shù)制形式顯示其和(假定多個數(shù)據(jù)和不超過65535)。要求:(1)用子程序?qū)崿F(xiàn)一個N位十進制數(shù)值的輸入,在主程序的循環(huán)結(jié)構(gòu)中調(diào)用該子程序;(2) 當用戶未輸入數(shù)值,直接回車時,結(jié)束輸入;(3) 輸出的數(shù)據(jù)為多位十進制數(shù)據(jù),而機器內(nèi)部計算的和是十六進制形式,需要進行數(shù)制轉(zhuǎn)換,然后以十進制字符串的形式輸出結(jié)果;(4) 程序中要求有必要的提示信息。例如:用戶在提示信息下輸入三個數(shù)值:Pleaseinputanumber:15Pleaseinputanumber:30Pleaseinputanumber:45程序顯示運算結(jié)果Thesumis:01011010B90D5AH程序如下:DATASEGMENTXDW0NUMDB6,?,6DUP('$')STR1DB"Pleaseinputanumber:$"STR2DB"Thesumis:$"sumB DB20,0,20DUP('$')sunD DB20,0,20DUP('$')sumHDB20,0,20DUP('$')DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXCALLINPUTNUMLEADX,STR2 ;輸出結(jié)果MOVAH,09HINT21HCALLgetTwo ;二進制表示CALLgetTen ;十進制CALLgetSixtin ;十六進制表示MOVAX,4C00HINT21H;功能,多個多位十進制數(shù)的輸入,并且實現(xiàn)了這幾個數(shù)的數(shù)值相加;實際上這個是兩個循環(huán)嵌套,;入口參數(shù):NUM;出口參數(shù):X(X是多個數(shù)據(jù)相加之后的和,字數(shù)據(jù),之后可以除以2、10、16,依次轉(zhuǎn)化相應(yīng)進制)INPUTNUMPROCPUSHAXPUSHBXPUSHCXPUSHDXPUSHSIAGAIN:LEADX,STR1;提示輸入信息MOVAH,09HINT21HLEADX,NUMMOVAH,0AHINT21HCALLCHANGECMPNUM[2],0DHJZexit;初始化操作,以下內(nèi)嵌套的循環(huán)是要將接受的多位十進制數(shù)轉(zhuǎn)化為與之相對應(yīng)的值movsi,0;串指針初始化movbx,10 ;基數(shù)10,乘數(shù)movax,0 ;累加結(jié)果初值movcl,num+1movch,0 ;cx是循環(huán)的次數(shù)jcxzLP1;若串長度為0,直接跳過此內(nèi)循環(huán)LP:mulbxmovdl,num[si+2]subdl,30hmovdh,0addax,dxincsiloopLPLP1:addx,axJMPAGAIN ;外循環(huán),接收多個數(shù)據(jù)exit:POPSIPOPDXPOPCXPOPBXPOPAXRETINPUTNUMENDP;名字:CHANGE;功能:回車換行CHANGEPROCPUSHDXPUSHAXMOVDL,0AH ;回車換行MOVAH,2INT21HMOVDL,0DHMOVAH,2INT21HPOPDXPOPAXRETCHANGEENDP;功能:將二進制數(shù)輸出;入口參數(shù):X;出口參數(shù):getTwoPROCPUSHAXPUSHBXPUSHCXPUSHDXMOVCX,2MOVBX,2MOVAX,XMOVsumB[1],0LP: MOVDX,0DIVCX ;商在AX,余數(shù)在DX中MOVsumB[BX],DLINCBXINCsumB[l];記錄長度CMPAX,0JALP;倒序輸出XORCX,CXMOVCL,sumB[1]MOVBX,CXAGAIN:MOVDL,sumB[BX+1]ADDDL,30HMOVAH,02HINT21HDECBXLOOPAGAINMOVDL,'B'MOVAH,02INT21HMOVDL,''MOVAH,02INT21HPOPDXPOPCXPOPBXPOPAXRETgetTwoENDP;功能:將十進制數(shù)輸出;入口參數(shù):X;出口參數(shù):getTenPROCPUSHAXPUSHBXPUSHCXPUSHDXMOVCX,10MOVBX,2MOVAX,XMOVsunD[1],0LP: MOVDX,0DIVCX ;商在AX,余數(shù)在DX中MOVsunD[BX],DLINCBXINCsunD[l];記錄長度CMPAX,0JALP;倒序輸出XORCX,CXMOVCL,

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論