![計算機等級考試PC技術上機南開100題附三份答案_第1頁](http://file4.renrendoc.com/view/707dcae4d5a28219ca79c6d950a72b1c/707dcae4d5a28219ca79c6d950a72b1c1.gif)
![計算機等級考試PC技術上機南開100題附三份答案_第2頁](http://file4.renrendoc.com/view/707dcae4d5a28219ca79c6d950a72b1c/707dcae4d5a28219ca79c6d950a72b1c2.gif)
![計算機等級考試PC技術上機南開100題附三份答案_第3頁](http://file4.renrendoc.com/view/707dcae4d5a28219ca79c6d950a72b1c/707dcae4d5a28219ca79c6d950a72b1c3.gif)
![計算機等級考試PC技術上機南開100題附三份答案_第4頁](http://file4.renrendoc.com/view/707dcae4d5a28219ca79c6d950a72b1c/707dcae4d5a28219ca79c6d950a72b1c4.gif)
![計算機等級考試PC技術上機南開100題附三份答案_第5頁](http://file4.renrendoc.com/view/707dcae4d5a28219ca79c6d950a72b1c/707dcae4d5a28219ca79c6d950a72b1c5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
三級PC南開100題第一題:-、請編制程序,其功能是:將內存中由SOURCE指示的40個字節(jié)有符號數(shù)組成的數(shù)組分成正數(shù)和負數(shù)兩個數(shù)組,并求這兩個數(shù)組的數(shù)據(jù)個數(shù),結果存放在RESULT指示的內存區(qū)域,存放形式為正數(shù)個數(shù)在前,其后跟正數(shù)數(shù)組元素,然后是負數(shù)個數(shù)及負數(shù)數(shù)組元素。例如:內存中有1EH,91H,74H,91H,42H,30H,81H,F3H,18H,25H結果為 06H,lEH,74H,42H,30H,l8H,25H,04H,91H,91H,81H,F3H部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內存單元中。運算結果要求從RESULT開始存放,由過程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標出,每行空白一般只需一條指令,但采用功能相當?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。對程序必須進行匯編,并與IO.OBJ鏈接產生PROG1.EXE執(zhí)行文件,最終運行程序產生結果(無結果或結果不正確者均不得分)。調試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU40STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(O)RESULTDBN+2DUP(O)NAMEODB'INPUT1.DAT',0NAME1DB'OUTPUT1.DAT',0NDATADBNDUP(O)PDATADBNDUP(O)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVES,AX;置附加段寄存器LEADX,SOURCE;數(shù)據(jù)區(qū)起始地址LEASI,NAMEO;原始數(shù)據(jù)文件名MOVCX,N;字節(jié)數(shù)CALLLOAD;從'INPUT1.DAT'中讀取數(shù)據(jù);****BEGIN****LEASI,SOURCEMOVDI,OFFSETPDATA;PDATA為正數(shù)數(shù)組存放緩沖區(qū)首址
MOVXORMOVCLDBX,OFFSETNDATA ;NDATA為負數(shù)數(shù)組存放緩沖區(qū)首址DX,DXCX,NMAIN1:LODSBTESTAL, JZMAIN2INCDHMOV[BX],ALINCBXMAIN2:INCDLMOV[DI],AL ;+INCDIMAIN3:MAIN1LEASI,PDATALEADLRESULTMOV[DIl.DLINCDIXORex,exMOVCL,DLMAIN4:MOVAL, MOV[DI],ALINCDIINCSILOOPMOV[DILDHINCDIXORex,exMOVCL,DHMOVBX,OFFSETNDATAMAIN5:MOVAL,[BX]MOV[DI],ALINCDILOOPMAIN5;****END****LEADX,RESULT ;結果數(shù)據(jù)區(qū)首址LEASI,NAME1 ;結果文件名MOVCX,N+2 ;字節(jié)數(shù)CALLSAVE ;保存結果到文件RETSTARTENDPCODEENDSENDSTART第二題:一、請編制程序,其功能是:內存中連續(xù)存放著10個無符號8位格雷碼表示的數(shù),現(xiàn)將此卜個數(shù)轉換成十個8位二進制數(shù),結果存入內存,其轉換方法為二進制數(shù)的最高位D7與格雷碼的最高位G?相同,二進制數(shù)的其余七位DK(k=6,0)分別為格雷碼的位GK(k=6,…,0)與二進制數(shù)的位Dk+i(k=6,…,0)異或的結果。例如:內存中有 OOH,03H,2BH,67H,0CH,15H,54H,02H,D8H,C7H結果為 OOH,02H,32H,45H,08H,19H,6711,03H,90H,85H部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUTLDAT中讀入SOURCE開始的內存單元中。運算結果要求從RESULT開始存放,由過程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的源程序使其完整(空白已用橫線標也每行空白一般只需一條指令,但采用功能相當?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。對程序必須進行匯編,并與10.OBJ鏈接產生PR0G1.EXE執(zhí)行文件,最終運行程序產生結果(無結果或結果不正確者均不得分)。調試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU10STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?);順序存放10個字節(jié)數(shù)RESULTDBNDUP(O);存放結果NAMEODB'INPUTl.DAT',0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXLEADX,SOURCE;數(shù)據(jù)區(qū)起始地址LEASI,NAMEO;原始數(shù)據(jù)文件名MOVCX,N;字節(jié)數(shù)CALLLOAD;從'INPUTLDAT'中讀取數(shù)據(jù);****begin****LEASI,SOURCELEADI,RESULTMOVCX,10AGNO:MOVAL,[SI]MOVCX,8MOVBX,0AGNI:MOVAH,0SHLBL,1AL,1RCLAH,1CMPAH,
JMPNEXTSET_ONE:ORBL,01HNEXT:MOV ,BLLOOPAGNIMOV[DI],BLINCSIINCDILOOPAGNO;****ENI)****LEADX,RESULT;結果數(shù)據(jù)區(qū)首址LEASI,NAME1;結果文件名MOVCX,N;結果字節(jié)數(shù)CALLSAVE;保存結果到文件RETSTARTENDPCODEENDSENDSTART第三題:一、請編制程序,其功能是:內存中連續(xù)存放著20個十六位二進制無符號數(shù)序列,請將它們排成升序(從小到大)。例如:內存中有 7001H,7004H,7002H…(假設后17個字均大與7004H)結果為7001H,7002H,7004H…(后跟17個字,按從小到大的順序排列)部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內存單元中。運算結果要求從RESULT開始存放,由過程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的源程序使其完整(空白己用橫線標出,每行空白一般只需?條指令,但采用功能相當?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。對程序必須進行匯編,并與10.OBJ鏈接產生PROG1.EXE執(zhí)行文件,最終運行程序產生結果(無結果或結果不正確者均不得分)。調試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU20STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDWNDUP(?)RESULTDWNDUP(O)NAMEODB'INPUTLDAT',0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AX
PUSHAXMOVAX,DATAMOVDS,AXLEADX,SOURCE ;數(shù)據(jù)區(qū)起始地址LEASI.NAMEO ;原始數(shù)據(jù)文件名MOVCX,N*2 ;字數(shù)CALLLOAD ;從'INPUT1.DAT'中讀取數(shù)據(jù);****begin****LEASI,SOURCELEADI,RESULTMOVCX,NNEXTO:MOVAX,[SI]MOV[DI],AXADDSI LOOPCLDMOVBX,N-lMALI:LEASI,RESULTMOVCX, NEXT:LODCMP[SI],AXJAECONTXCHG[SI], MOV[SI-2],AXCONT:LOOPMALI產***end****LEADX,RESULT ;結果數(shù)據(jù)區(qū)首址LEASI,NAME1 ;結果文件名MOVCX,N*2 ;結果字節(jié)數(shù)CALLSAVE ;保存結果到文件RETSTARTENDPCODEENDSENDSTART第四題:一、請編制程序,其功能是:內存中連續(xù)存放著24個無符號二進制字序列,字的最高位為000,此序列對應某一信號在一段時間內的連續(xù)變化,現(xiàn)對第21個二進制字前的20個二進制字進行移動平均處理,其方法為:將要處理的字X,用以它為開始的連續(xù)五個字的平均數(shù)/5代替(余數(shù)舍去),得到新的20個無符號二進制字序列,結果存入內存。例如:內存中有 0100H,0200H,0300H,0400H,0500H,0600H-結果為 0300H,0400H…部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內存單元中。運算結果要求從RESULT開始存放,由過程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的源程序使其完整(空白已用橫線標出,每行空白一般只需一條指令,但采用功能相當?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。
對程序必須進行匯編,并與IO.OBJ鏈接產生PR0G1.EXE執(zhí)行文件,最終運行程序產生結果(無結果或結果不正確者均不得分)。調試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU24STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDWNDUP(?) ;順序存放24個字RESULTDW20DUP(O) ;存放結果NAMEODB'INPUT1.DAT',0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXLEADX,SOURCE ;數(shù)據(jù)區(qū)起始地址LEASI,NAMEO ;原始數(shù)據(jù)文件名MOVCX,N*2 ;字數(shù)CALLLOAD ;從'INPUTLDAT'中讀取數(shù)據(jù);****begin****MOVDI,0MOVSI,0MOVCX,20MOVBX, AGNO:MOVAX,SOURCE[SI]PUSHSIPUSHexMOVAGNI:INCSIINCSIADDAX,SOURCE[SI]LOOPAGNIDIVBXMOVRESULT[DI],AXINCDIPOPexPOPSIINCSILOOPAGNO;****END****LEADX,RESULT;結果數(shù)據(jù)區(qū)首址LEASI,NAME1;結果文件名MOVCX,40;結果字節(jié)數(shù)CALLSAVE;保存結果到文件RETSTARTENDPCODEENDSENDSTART第五題:一、請編制程序,其功能是:內存中從SOURCE開始連續(xù)存放著21個八位有符號數(shù)(補碼),其相鄰兩數(shù)之間差值不超過-8至7。對這種變化緩慢的數(shù)據(jù)可采用差分方法進行壓縮。即第一個數(shù)據(jù)不變,其后的數(shù)據(jù)取與前一-數(shù)據(jù)的差值并用四位二進制補碼表示,兩個差值拼成一個字節(jié),前一個差值放在高四位,后一個差值放在低四位。例如:原數(shù)據(jù)(X[n]):23H,27H,2AH,29H,22H…壓縮后(丫[n]):23H, 43H, F9H…編程按上述方法進行壓縮,結果保存在RESULT開始的內存單元中。部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件1NPUT1.DAT中讀入SOURCE開始的內存單元中。運算結果要求從RESULT開始存放,由過程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標出,每行空白一般只需一條指令,但采用功能相當?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。對程序必須進行匯編,并與IO.OBJ鏈接產生PROG1.EXE執(zhí)行文件,最終運行程序產生結果(無結果或結果不正確者均不得分)。調試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU10STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDB2*N+1DUP(?)RESULTDBN+lDUP(O)NAMEODB'INPUTLDAT',0NAME1DB'OUTPUT1.DAT,0NDATADBNDUP(O)PDATADBNDUP(O)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AXPUSHAX
MOVAX,DATAMOVDS,AXMOVES,AX;置附加段寄存器LEADX,SOURCE;數(shù)據(jù)區(qū)起始地址LEASI,NAMEO;原始數(shù)據(jù)文件名MOVCX,2*N+1;字節(jié)數(shù)CALLLOAD;從'INPUT1.DAT'中讀取數(shù)據(jù);****begin****LEASI,SOURCELEADI,RESULTCLDMOVSB;Y[O]=X[O]XORBX,BX;FLAG=OMOVDX,N*2;COUNTERCOMPRESS:LODSB;X[n]-X[n-l]SUB—;FLAG二NOTFLAGJ _LOW_HEXMOVCL,4MOV_AL,CLAH,ALJMPNEXTLOW_HEX:ORAL,AHSTOSBNEXT:JNECOMPRESS;****end****LEADX,RESULT;結果數(shù)據(jù)區(qū)首址LEASI,NAME1;結果文件名MOVCX,N+l;字節(jié)數(shù)CALLSAVE;保存結果到文件RETSTARTENDPCODEENDSENDSTART第六題:一、請編制程序,其功能是:將內存中存放著20個數(shù)字0?9之間的ASCII字符(包括數(shù)字0和9的ASCII字符)或SP字符(20H),請將數(shù)字。?9之間的ASCII字符(包括數(shù)字0和9的ASCII字符)轉換為相應的八位二進制數(shù),并將SP字符轉換為$字符(24H)。將按上述方法處理后得到的20個字節(jié)存入內存中。例如:內存中有20H(3P'),30HCOO,31H(T),31H(T),20H('SP'),32H(2'),…,39H(9)(共20個ASCII字符)結果為24H('$'),00H,01H,01H,01H,24H('$'),02H(2) ,09H('9')(共20個字節(jié))部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內存單元中。運算結果要求從RESULT開始存放,由過程SAVE保存到文件OUTPUT1.DAT中。
填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標出,每行空白一般只需一條指令,但采用功能相當?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。對程序必須進行匯編,并與IO.OBJ鏈接產生PROG1.EXE執(zhí)行文件,最終運行程序產生結果(無結果或結果不正確者均不得分)。調試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU20STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?)RESULTDBNDUP(O)NAMEODB"INPUT1.DAT(,0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXLEADX,SOURCE;數(shù)據(jù)區(qū)起始地址LEASI,NAMEO;原始數(shù)據(jù)文件名MOVCX,N;字節(jié)數(shù)CALLLOAD;從'INPUT1.DAT'中讀取數(shù)據(jù);****BEGIN****MOVDI,0CHAN:SUBAL,20HJZCHANGESUBAL,MOVRESULT[DI],ALDECexJZEXITJMPCHANCHANGE:MOVRESULT[DI],24HINCDIINCSIJMPEXIT:NOP
;****END****LEADX,RESULT;結果數(shù)據(jù)區(qū)首址LEASI,NAME1;結果文件名MOVCX,N;字節(jié)數(shù)CALLSAVE;保存結果到文件RETSTARTENDPCODEENDSENDSTART第七題:一、請編制程序,其功能是:內存中共有30個字節(jié)型數(shù)據(jù),找出其中的兩個ASCII字符串并進行校驗。欲尋找ASCII字符串由13個字符組成:#(23H),7個ASCII字符,*(2AH),2個ASCII字符,回車符(0DH),換行符(0AH).校驗方法為:對字符#及字符*之間的7個ASCII字符進行異或操作,若異或操作結果的ASCCII字符表示(異或操作結果高4位的ASCII字符表示在前,低4位的ASCII字符表示在后)與原字符串中字符*之后的兩個ASCH字符相同,則將原字符串原樣保存;反之,則將原字符串中的所有字符(共13個)均用字符?。?1H)代替。例如:內存中有33H,35H,23H(#,第一個字符串開始),46H,41H,30H,2EH,34H,3DH,31H,2AH(),32H,31H,0DH,0AH,46H,23H(第二個字符串開始),46H,41H,30H,2EH,34H,3DH,30H,2AH(*),32H,31H,ODH,OAH,55H結果為23H,46H,41H,30H,2EH,34H,3DH,31H,2AHC*5),32H,31H(校驗正確,該字符串原樣保持),0DH,0AH,21H,21H,21H,21H,21H,21H,21H,21H,21H.21H,21H,21H,21H(校驗錯,整個字符串用字符T代替)。部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內存單元中。運算結果要求從RESULT開始存放,由過程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標出,每行空白一般只需一條指令,但采用功能相當?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。對程序必須進行匯編,并與IO.OBJ鏈接產生PROG1.EXE執(zhí)行文件,最終運行程序產生結果(無結果或結果不正確者均不得分)。調試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU26STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBN+4DUP(?)RESULTDBNDUP(O)HHDB2DUP(O)NAMEODB'INPUT1.DAT),0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFAR
pushDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXLEADX,SOURCE;數(shù)據(jù)區(qū)起始地址LEASI,NAMEO;原始數(shù)據(jù)文件名MOVCX,N+4;字節(jié)數(shù)CALLLOAD;從‘INPUT1.DAT'中讀取數(shù)據(jù);****BEGIN****MOVSI,0MOVDI,0MOVBX,2;兩個ASCH字符串REPEAT:MOVAH,0SEARCH:MOVAL,SOURCE[SI]INCSICMPAL,'#'SEARCHMOV RESULT[DI],ALINC DISEARCH1:MOVAL,SOURCE[SI]INCSICMPAL, JEASCIIMOVRESULT[DI],ALINCDIXORAH,ALJMPASCII:MOVRESULT[DI],ALINCDIPUSHDIMOVDI,0MOVDH,2MOVDL,AH ;異或結果暫存在DL中MOVCL,4 ;先將異或結果高4位轉換成ASCII字符SHRAH.CL ;本行開始的4行語句將一個十六進制數(shù)轉換為ASCII碼CHANGE:CMPAH,10JLADD_OADDAH,'A'-'O'-10ADD0:ADDAH,'(TMOVHH[DI],AHINCDIDECDHJZEXTMOVAH,DL ;再將異或結果低4位轉換成ASCH字符ANDAH,OFHJMPCHANGEEXT: POPDIMOVAL,SOURCE[SI]MOVRESULT[DI],ALINCSI
INCDIMOVAH,SOURCE[SI]MOVRESULT[DI],AHINCSIINCDIMOVDL,HHMOVDH,HH+1CMPAX,DXERRMOVAL,ODH;校驗正確MOVRESULT[DI],ALINCDIMOVAL,OAHMOVRESULT[DI],ALINCDIJMPLPERR:SUBDI,11;校驗錯誤MOVALJMOVCX,COVER:MOVRESULT[DI],ALINCDILOOPCOVERLP:JZEXITJMPREPEATEXIT:NOP;****END****LEADX,RESULT;結果數(shù)據(jù)區(qū)首址LEASI,NAME1;結果文件名MOVCX,N;字節(jié)數(shù)CALLSAVE;保存結果到文件RETSTARTENDPCODEENDSENDSTART第八題:一、請編制程序,其功能是:內存中連續(xù)存放著10個十六位二進制數(shù),每個數(shù)的序號依次定義為0,1,…,9。統(tǒng)計每個數(shù)中位為0的個數(shù)N°,N|,…,Ng(均用一個字節(jié)表示),然后按序定義將No至Ng存入內存中,最后再用一個字節(jié)這10個數(shù)中為0的位的總數(shù)n(n=N°+Ni+…+NQ。例如:內存中有 0000H,OOOFH,FFFFH…結果為 10H,OCH,00H…最后為n部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內存單元中。運算結果要求從RESULT開始存放,由過程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的源程序使其完整(空白已用橫線標出,每行空白一般只需一條指令,但采用功能相當?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。對程序必須進行匯編,并與10.OBJ鏈接產生PR0G1.EXE執(zhí)行文件,最終運行程序產生結果(無結果或結果不正確者均不得分)。調試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。試題程序:
EXTRNLOAD:FAR,SAVE:FARN EQU10STACSEGMENTSTACKDB128DUP(?)STAC ENDSDATA SEGMENTSOURCEDBNDUP(?) ;順序存放10個字節(jié)數(shù)RESULTDBN+lDUP(O) ;存放結果NAMEODB'INPUT1.DAT',0NAME1DB'OUTPUT1.DAT',0DATA ENDSCODE SEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXLEADX,SOURCE ;數(shù)據(jù)區(qū)起始地址LEASI,NAMEO ;原始數(shù)據(jù)文件名MOVCX,N*2 ;字節(jié)數(shù)CALLLOAD ;從'INPUT1.DAT,中讀取數(shù)據(jù);****begin****MOVDI,OFFSETRESULTMOVCL,NMOVBX,0MOVDH,0PRO: MOVDL,0MOVAX,SOURCE[BX]MOVCH, COUNT: INCJUMPDLJUMP:DECCHJNZMOV[DI],DLADDDH,DLINCDIADDDECCLJNZPROMOV;****END****—LEADX,RESULT ;結果數(shù)據(jù)區(qū)首址LEASI,NAME1 ;結果文件名MOVCX.N ;結果字節(jié)數(shù)CALLSAVE ;保存結果到文件RETSTARTENDPCODEENDSENDSTART第九題:一、請編制程序,其功能是:內存中有一個由16個十六位二進制數(shù)組成的數(shù)組(SOURCE)和一個字變量L。試將L作為邏輯尺對數(shù)組SOURCE進行下列處理:如L的第i位為0,則數(shù)組的第i個數(shù)不變;如L的第i位為1,則數(shù)組的第i個數(shù)按位取反。字L的位序從低到高依次為0至15,數(shù)組下標依次從0到15。例如:L=0009H,數(shù)組為139CH,89C6H,5437H,8819H-變換為EC63H,89C6H,5437H,77E6H—部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT中讀入(L在前,SOURCE在后).運算結果要求從RESULT開始存放,由過程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的源程序使其完整(空白己用橫線標出,每行空白一般只需一條指令,但采用功能相當?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。對程序必須進行匯編,并與10.OBJ鏈接產生PR0G1.EXE執(zhí)行文件,最終運行程序產生結果(無結果或結果不正確者均不得分)。調試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU16STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTLDW?SOURCEI)WNDUP(?)RESULTDWNDUP(O)NAMEODB'INPUT1.DAT',0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXLEADX,L;數(shù)據(jù)區(qū)起始地址LEASI,NAMEO;原始數(shù)據(jù)文件名MOVCX,2*(N+1);字節(jié)數(shù)CALLLOAD;從’INPUTLDAT'中讀取數(shù)據(jù);****begin****LEASI,SOURCEMOVCX,NMOVDX, L0:MOVAX,[SI]L,DXSTORE
NOTAXSTORE:MOV[DI],AXADDDI,2ADDSI,2LOOPLO產***end****LEADX,RESULT;結果數(shù)據(jù)區(qū)首址LEASI,NAME1;結果文件名MOVCX,2*N;結果字節(jié)數(shù)CALLSAVE;保存結果到文件RETSTARTENDPCODEENDSENDSTART第十題:一、請編制程序,其功能是:計算10個有符號字節(jié)數(shù)據(jù)的絕對值之和(字型),并找出絕對值最大的數(shù)及其所在的偏移地址,最后將它們依次存入指定的內存中,結果以FFH結束。例如:內存中有1OH,O1H,27H,OOH,FEH,8OH.OOH,O3H,FFH,O1H結果為BFH,OOH,8OH,O5H,OOH,FFH部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內存單元中。運算結果要求從RESULT開始存放,由過程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標出,每行空白「般只需一條指令,但采用功能相當?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。對程序必須進行匯編,并與IO.OBJ鏈接產生PROG1.EXE執(zhí)行文件,最終運行程序產生結果(無結果或結果不iE確者均不得分)。調試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU10DSEGSEGMENTSOURCEDBNDUP(?)RESULTDB6DUP(O)MAXDB?NAMEODB'INPUTLDAT',0NAME1DB'0UTPUT1.DAT*,0DSEGENDSSSEGSEGMENTSTACKDB256DUP(?)SSEGENDSCSEGSEGMENTASSUMECS:CSEG,SS:SSEG,DS:DSEGSTARTPROCFARPUSHDSXORAX,AXPUSHAX
MOVAX,DSEGMOVDS,AXMOVES.AX ;置附加段寄存器LEADX,SOURCE ;數(shù)據(jù)區(qū)起始地址LEASI.NAME0 ;原始數(shù)據(jù)文件名MOVCX.N ;字節(jié)數(shù)CALLLOAD ;從'INPUT1.DAT中讀取數(shù)據(jù);****begin****LEASI,SOURCELEADI,RESULTMOVDX,SIMOVCX.N-lMOVAL,[SI]ADDAL,0JNSPlPl: MOVMAX,ALADD[DI],ALGOON:INCSIMOVAL,[SI]ADDAL,0JNSP2NEGALP2: ADD[DI],ALCMPMAX,ALJAEMOVMAX,ALMOVDX,SINEXT:LOOPGOONADDDI,2MOVAL,MAXMOV[DI],ALINCDIMOV[DI],DXADDDI,2MOVBYTEPTR[DI], ;****eni)****LEADX,RESULT ;結果數(shù)據(jù)區(qū)首址LEASI,NAME1 ;結果文件名MOVCX,6 ;字節(jié)數(shù)CALLSAVE ;保存結果到文件RETSTARTENDPCSEGENDSENDSTART第十一題:一、請編制程序,其功能是:以SOURCE開始的內存區(qū)域存放著多個字節(jié)的數(shù)據(jù),其中有壓縮BCD碼和其他數(shù)據(jù)?,F(xiàn)按下列編碼規(guī)則進行編碼:在第每個壓縮BCD碼前面加兩個字節(jié)前綴代碼BEH和CCH,并在其后加兩個字后綴代碼DDH和EDH;如果不是壓縮BCD碼,則該數(shù)據(jù)前后均加兩個代碼ODH和OEH。編碼后的數(shù)據(jù)存放到RESULT指示的內存區(qū)域。例如:內存中有12H,D9H,86H,54H-結果為 BEH,CCH,12H,DDH,EDH,0EH,D9H,0DH,0EH,BEH,CCH,86H,DDH,EDH,BEH,CCH,86H,DDH,EDH…部分程序已給出,其中原始數(shù)據(jù)山過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內存單元中。運算結果要求從RESULT開始存放,由過程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的一段源程序使其完整(空白己用橫線標出,每行空白一般只需條指令,但采用功能相當?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。對程序必須進行匯編,并與IO.OBJ鏈接產生PROG1.EXE執(zhí)行文件,最終運行程序產生結果(無結果或結果不正確者均不得分)。調試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU10STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?)RESULTDB5*NDUP(O)NAMEODB'INPUT1.DAT',0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS::STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVES,AX;置附加段寄存器LEADX,SOURCE;數(shù)據(jù)區(qū)起始地址LEASI,NAMEO;原始數(shù)據(jù)文件名MOVCX,N;字節(jié)數(shù)CALLLOAD;從‘INPUT1.DAT'中讀取數(shù)據(jù);****begin****LEASI,SOURCEMOVDI,OFFSETPDATA;PDATA為正數(shù)數(shù)組存放緩沖區(qū)首址MOVCX,NCLP1:MOVAL,[SI]MOVBL,ALMOVAII,ALANDAL,OFOH
MOVCL,4POPCXCMPTOC\o"1-5"\h\zJA CLP2CMP AH,9JA CLP2MOVINC DIMOV BYTEPTR[DI],OCCHINCDIMOVBYTEPTR[DI],BLINCDIMOVBYTEPTR[DI],ODDHINCDIMOVBYTEPTR[DI],OEDHJMPCLP3CLP2:MOVBYTEPTR[DI],ODHINCDIMOVBYTEPTR[DI],OEHINCDIMOVBYTEPTR[DI],BLINCDIMOVBYTEPTR[DI],ODHINCDIMOVBYTEPTR[DI],OEHCLP3:INCSIINCDI;****ENI)****LEADX,RESULT ;結果數(shù)據(jù)區(qū)首址LEASI,NAME1 ;結果文件名MOVCX,N+2 ;字節(jié)數(shù)CALLSAVE;保存結果到文件RETSTARTENDPCODEENDSENDSTART第十二題:一、請編制程序,其功能是:內存中連續(xù)存放的20個八位無符號數(shù)是一個自動抄表儀抄錄的20個用戶某月的用水量(立方米),為了控制用水量,水費計算公式如下(X表示用水量;Y表示水費,單位為分):1、Y=X*70X<=52、Y=X*1005<X<=53、Y=X*150X>20例如:用水量(X): 04H, 10H, 18H-水費(Y):0118H,0640H,0E10H-試計算出這20個用戶應繳納的水費,結果用字(WORD)表示。部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUTI.DAT中讀入SOURCE開
始的內存單元中。運算結果要求從RESULT開始存放,由過程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的?段源程序使其完整(空白已用橫線標出,每行空白?般只需一條指令,但采用功能相當?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。對程序必須進行匯編,并與IO.OBJ鏈接產生PROG1.EXE執(zhí)行文件,最終運行程序產生結果(無結果或結果不正確者均不得分)。調試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU20STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?)RESULTDWNDUP(O)NAMEODB'INPUT1.DAT',0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXLEADX,SOURCE ;數(shù)據(jù)區(qū)起始地址LEASI,NAMEO ;原始數(shù)據(jù)文件名MOVCX,N ;字節(jié)數(shù)CALLLOAD ;從'INPUT1.DAT'中讀取數(shù)據(jù);****begin****LEASI,SOURCELEACLDDI,RESULTMOVCX,NMOVBL,70MOVBH,100NEXT:MOVDL,150CMPAL,5J GT5JMPSTOREGT5:CMPAL,20J GT20JMPSTORE
GT20: STORE:MOV[DI],AXLOOPNEXT;****ENI)****LEADX,RESULT;結果數(shù)據(jù)區(qū)首址LEASI,NAME1;結果文件名MOVCX,N*2;字節(jié)數(shù)CALLSAVE;保存結果到文件RETSTARTENDPCODEENDSENDSTART第十三題:一、請編制程序,其功能是:內存中連續(xù)存放的20個八位無符號數(shù)是一個自動抄表儀抄錄的20個用戶某月的用水量(立方米),為了控制用水量,水費計算公式如下(X表示用水量;丫表示水費,單位為分):Y=X*70 X<=5Y=10*70+(X-10)*120 X>10例如:用水量(X): 04H,OFH,18H-水費(Y):0118H,0514H,094cH…試計算出這20個用戶應繳納的水費,結果用字(WORD)表示。部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內存單元中。運算結果要求從RESULT開始存放,由過程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標出,每行空白一般只需一條指令,但采用功能相當?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。對程序必須進行匯編,并與IO.OBJ鏈接產生PROG1.EXE執(zhí)行文件,最終運行程序產生結果(無結果或結果不正確者均不得分)。調試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU20RATE1EQU70RATE2EQU120DELTAEQU10STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?)RESULTDWNDUP(O)NAMEODB'INPUTLDAT',0NAME1DB'OUTPUT1.DAT',0
DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROC FARPUSH DSXOR AX, AXPUSH AXMOV AX, DATAMOV DS, AXLEA DX, SOURCE ;數(shù)據(jù)區(qū)起始地址LEA SI,NAMEO ;原始數(shù)據(jù)文件名MOV CX.N ;字節(jié)數(shù)CALL LOAD ;從’INPUT1.DAT'中讀取數(shù)據(jù);****begin****LEA SI,SOURCELEA DI,RESULTCLDMOV CX,NMOV BL,RATE1MOV BH,RATE2NEXT: CMP AL,DELTAJ GREATMUL BLJMP STOREGREAT: MUL BHSTORE: INC SILOOP NEXT;****end****LEA DX,RESULT ;結果數(shù)據(jù)區(qū)首址LEA SI,NAME1 ;結果文件名MOV CX,N*2 ;字節(jié)數(shù)CALL SAVE ;保存結果到文件STARTCODERETENDPENDSENDSTART第十四題:一、請編制程序,其功能是:對一個由可打印ASCII字符(ASCII碼20H~7FH)組成的字符串可采用下列方法進行壓縮:從串首開始向后掃描,如某字符單獨出現(xiàn)該字符不變,如某字符連續(xù)出現(xiàn)n次,則該字符用ESC(1BH),n,〈原字符〉三個字節(jié)來代替(假定n不超過255)。例如:原串:壓縮后:41H,43H,43H,43H,43H,43H,43H,61H,00H(“ACCCCCCa”)41HJBH,06H,43H,61H,00H設內存中從SOURCE開始有一字符串,其以00H結束,長度不超過100。試編程對其進行壓縮,結果存入RESULT開始的內存單元。部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內存單元中。運算結果要求從RESULT開始存放,由過程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的?段源程序使其完整(空白已用橫線標出,每行空白?般只需一條指令,但采用功能相當?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。對程序必須進行匯編,并與IO.OBJ鏈接產生PROG1.EXE執(zhí)行文件,最終運行程序產生結果(無結果或結果不正確者均不得分)。調試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU100ESC_CODEEQU27STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?)RESULTDBNDUP(O)NAMEODB'INPUT1.DAT',0NAME1DB'OUTPUT1.DAT*,0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS::STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVES,AX;置附加段寄存器LEADX,SOURCE;數(shù)據(jù)區(qū)起始地址LEASI,NAMEO;原始數(shù)據(jù)文件名MOVCX,N;字節(jié)數(shù)CALLLOAD;從'INPUT1.DAT中讀取數(shù)據(jù);****begin****LEASI,SOURCELEADI,RESULTCLDINCDILO:CMPAL,0JEQUITMOVCX,OFFFFH;SETTHECOUNTERTOOFFFFH;字符串幣:復搜索,CX=OFFFFH-nNEGex;10000H-CX-*CX;獲得重復次數(shù)n
CMPCX,1JCOMPRESSMOV[SI],ALINCSIJMPCOMPRESS:MOV[SI],BYTEPTRESC_CODEMOV[SI+1],CLMOV[SI+2],ALJMPLOQUIT:MOV[SI],AL;STORETHE'OOH';****end****LEADX,RESULT;結果數(shù)據(jù)區(qū)首址LEASI,NAME1;結果文件名MOVCX,N;字節(jié)數(shù)CALLSAVE;保存結果到文件RETSTARTENDPCODEENDSENDSTART第十五題:一、請編制程序,其功能是:對一個由可打印ASCII字符(ASCII碼20H?7FH)組成的字符串可采用下列方法進行壓縮:從串首開始向后掃描,如某字符單獨出現(xiàn)該字符不變,如某字符連續(xù)出現(xiàn)n次,則該字符用ESC(1BH),n,〈原字符》三個字節(jié)來代替(假定n不超過255)(>例如:設內存中從SOURCE開始有一用上述方法壓縮的字符串,其以00H結束,長度不超過100。試編程對其進行解壓縮,結果存入RESULT開始的內存單元。原串: 41H,1BH,O6H,43H,61H,OOH解壓后: 41H,43H,43H,43H,43H,43H,43H,61H,00H(“ACCCCCCa”)部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內存單元中。運算結果要求從RESULT開始存放,由過程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標出,每行空白「般只需一條指令,但采用功能相當?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。對程序必須進行匯編,并與IO.OBJ鏈接產生PROG1.EXE執(zhí)行文件,最終運行程序產生結果(無結果或結果不正確者均不得分)。調試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU100ESCCODE:EQU27STACSEGMENTSTACKDB128DUP(?)STACENDS
DATASEGMENTSOURCEDBNDUP(?)RESULTDBNDUP(O)NAMEODB'INPUTI.DAT',0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SSSTACSTARTPROCFARPUSHDSXORAX,AXpushAXMOVAX,DATAMOVDS,AXMOVES,AX;置附加段寄存器LEADX,SOURCE;數(shù)據(jù)區(qū)起始地址LEASI,NAMEO;原始數(shù)據(jù)文件名MOVCX,N;字節(jié)數(shù)CALLLOAD;從'INPUT1.DAT'中讀取數(shù)據(jù);****begin****LEASI,SOURCELEADI,RESULTCLDLO:LODSBCMPAL,0JEQUITCMPAL,ESCCODEJEXPANDJMPLOEXPAND:;解壓XORex,exJMPLOQUIT:STOSB;STORETHE'OOH';****EN[)****LEADX,RESULT;結果數(shù)據(jù)區(qū)首址LEASI,NAME1;結果文件名MOVCX,N;字節(jié)數(shù)CALLSAVE;保存結果到文件RETSTARTENDPCODEENDSENDSTART第十六題:-、請編制程序,其功能是:對經常上下波動的數(shù)據(jù)可采用只記錄峰值的數(shù)據(jù)壓縮方法。即每次將采樣到的當前值和前一次值比較,如數(shù)據(jù)變化方向改變(原變大現(xiàn)變小或原變小現(xiàn)變大),說明已過峰值,這時就將前一值(峰值)記錄下來。例如(下例數(shù)據(jù)均為無符號數(shù)):原數(shù)據(jù): 23H,45H,89H,67H,5CH,36H,3cH…壓縮后: 23H,89H,36H…內存中從SOURCE連續(xù)存放著48個八位無符號數(shù),假定無相鄰兩數(shù)相等的情況,編程按上述方法進行壓縮,結果保存在RESULT開始的內存單元中。部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內存單元中。運算結果要求從RESULT開始存放,由過程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的?段源程序使其完整(空白已用橫線標出,每行空白一般只需一條指令,但采用功能相當?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。對程序必須進行匯編,并與IO.OBJ鏈接產生PROG1.EXE執(zhí)行文件,最終運行程序產生結果(無結果或結果不正確者均不得分)。調試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU40STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?)RESULTDBNDUP(O)NAMEODB'INPUT1.DAT',0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVES,AX;置附加段寄存器LEADX,SOURCE;數(shù)據(jù)區(qū)起始地址LEASI,NAMEO;原始數(shù)據(jù)文件名MOVCX,N;字節(jié)數(shù)CALLLOAD;從'INPUT1.DAT'中讀取數(shù)據(jù);****begin****LEASI,SOURCELEADI,RESULTCLDMOVSBXORAX,AXXORBX,BXLODSB
MOVBL,[SI-2]SUBAX,BXMOVDX,AXMOVCX,N-2FILTER:XORAX,AXXORBX,BXLODSB;X[n]MOVBL,[SI-2];X[n-l]SUBAX,BX;X[n]-X[n-l];相鄰兩差值(AX,DX)符號位是否相同J _SKIP;相同,數(shù)據(jù)方向未變;不同,數(shù)據(jù)變化,保存峰值STOSBSKIP:LOOPFILTER;****end****LEADX,RESULT;結果數(shù)據(jù)區(qū)首址LEASI,NAME1;結果文件名MOVCX,N;字節(jié)數(shù)CALLSAVE;保存結果到文件RETSTARTENDPCODEENDSENDSTART第十七題:一、請編制程序,其功能是:從10個有符號字節(jié)數(shù)據(jù)中取出負數(shù)并計算其絕對值之和(字型),然后存放在指定的內存區(qū)中,多余的空間填0。例如:內存中有: 80H,01H,02H,00H,FFH,7CH,FEH,7BH,FDH,81H結果為: 8OH,FFH,FEH,FDH,81H,O5H,01H,0OH,OOH,OOH部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內存單元中。運算結果要求從RESULT開始存放,由過程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標出,每行空白一般只需一條指令,但采用功能相當?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。對程序必須進行匯編,并與IO.OBJ鏈接產生PROG1.EXE執(zhí)行文件,最終運行程序產生結果(無結果或結果不正確者均不得分)。調試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU10DSEGSEGMENTSOURCEDBNDUP(?)RESULTDBNDUP(O)NAMEODB'INPUT1.DAT(,0
NAME1DB'OUTPUT1.DAT),0DSEGENDSSSEGSEGMENTSTACKDB256DUP(?)SSEGENDSCSEGSEGMENTASSUMECS:CSEG,SS:SSEG,DS::DSEGSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DSEGMOVDS,AXMOVES,AX;置附加段寄存器LEADX,SOURCE;數(shù)據(jù)區(qū)起始地址LEASI,NAMEO;原始數(shù)據(jù)文件名MOVCX,N;字節(jié)數(shù)CALLLOAD;從'INPUn.DAT中讀取數(shù)據(jù);****begin****LEASI,SOURCELEADI,RESULTMOVDX,0MOVCX,NCLDCONT:LODSBJGEMOV[DI],ALINCDIADDDL,ALNEXT:LOOPCONTMOV[DI],DXADDDI,2MOVCX,20SUBCX,DIMOVAL,0;****END****LEADX,RESULT;結果數(shù)據(jù)區(qū)首址LEASI,NAME1;結果文件名MOVCX,N;字節(jié)數(shù)CALLSAVE;保存結果到文件RETSTARTENDPCSEGENDSENDSTART第十八題:一、請編制程序,其功能是:以SOURCE開始的內存區(qū)域存放著20個字節(jié)的信息,其中有ASCH字符和漢字機內碼。若一個字節(jié)中最高位為0,則表示ASCII字符,若連續(xù)兩個字節(jié)的每個字節(jié)最高位均為1,則為漢字機內碼(表示-一個漢字)。將ASCII字符個數(shù)存入RESULT指示的單元,表示漢字的個數(shù)存入下一個單元,其后存放原來20個字節(jié)的信息。例如:內存中有30H,38H,89H,A9H,E0H,97H,61H,4AH結果為04H,02H,30H,38H,89H,A9H,E0H,97H,61H,4AH部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內存單元中。運算結果要求從RESULT開始存放,由過程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的?段源程序使其完整(空白已用橫線標出,每行空白一般只需一條指令,但采用功能相當?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。對程序必須進行匯編,并與IO.OBJ鏈接產生PROG1.EXE執(zhí)行文件,最終運行程序產生結果(無結果或結果不正確者均不得分)。調試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU20ESC_CODIEEQU27STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?)RESULTDBN+2DUP(O)NAMEODB'INPUTLDAT,0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS::STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVES,AX;置附加段寄存器LEADX,SOURCE;數(shù)據(jù)區(qū)起始地址LEASI,NAMEO;原始數(shù)據(jù)文件名MOVCX,N;字節(jié)數(shù)CALLLOAD;從'INPUTLDAT中讀取數(shù)據(jù);****begin****LEASI,SOURCEMOVDI,OFFSETRESULT+2MOVCX,NMOVDX,0;ASCII字符個數(shù)在DL中,漢字個數(shù)在DH中LPST:MOVAL,[SI]MOV[DI],AL
_ AL,80HJZ LASCIIINC SIDECCXJZMOVAL,[SI]MOV[DI],ALTESTAL,80HJZINCDHJMPLPC0M1LASCII:LPC0M1:INCSIINCDILOOPLPSTREST11:LEADI,RESULTMOV,DLINCDIMOV[DI], ;****end****LEADX,RESULT ;結果數(shù)據(jù)區(qū)首址LEASI,NAME1 ;結果文件名MOVCX,N+2 ;字節(jié)數(shù)CALLSAVE ;保存結果到文件RETSTARTENDPCODEENDSENDSTART第十九題:一、請編制程序,其功能是:一故障報警系統(tǒng)連續(xù)集20個字節(jié)數(shù)據(jù)存于SOURCE開始的內存區(qū)域,如果數(shù)據(jù)字節(jié)中有二進制位0(0代表有故障),則記錄該數(shù)據(jù)字節(jié)中0的個數(shù),并按數(shù)據(jù)字節(jié)在前,0的個數(shù)在后的順序存放到RESULT開始的內存區(qū)域。例如:內存中有: FEH,90H,FFH,DDH…結果為: FEH,01H,90H,06H,FFH,00H,DDH,02H-部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內存單元中。運算結果要求從RESULT開始存放,由過程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標出,每行空白一般只需一條指令,但采用功能相當?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。對程序必須進行匯編,并與IO.OBJ鏈接產生PROG1.EXE執(zhí)行文件,最終運行程序產生結果(無結果或結果不正確者均不得分)。調試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU20ESCCODEEQU27STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?)RESULTDBN*2DUP(O)NAMEODB'INPUT1.DAT',0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVES.AX ;置附加段寄存器LEADX,SOURCE ;數(shù)據(jù)區(qū)起始地址LEASI,NAMEO ;原始數(shù)據(jù)文件名MOVCX.N ;字節(jié)數(shù)CALLLOAD ;從'INPUT1.DAT,中讀取數(shù)據(jù);****begin****LEASI,SOURCEMOVDI,OFFSETRESULTCLDMOVDL,NLP1:;字節(jié)數(shù)計數(shù)器DLMOV[DI],ALMOVex, MOVDH,0LP2:AL,1JCINCDHLP3:LP2INCDIMOV[DI], JNZ;****END****LEADX,RESULT;結果數(shù)據(jù)區(qū)首址LEASI,NAME1;結果文件名MOVCX,N*2;字節(jié)數(shù)CALLSAVE;保存結果到文件RETSTARTENDPCODEENDSENDSTART第二十題:一、請編制程序,其功能是:有一抄表系統(tǒng)采集的數(shù)據(jù)中包括8位的竊水狀態(tài)字節(jié)(一個字節(jié)記錄4塊水表狀態(tài)),格式為:D7D6D5D4D3D2DIDOS4S3S2SIX4X3X2XI其中Si,Xi(i=l,2,3,4)分別表示第i塊水表短路和斷路狀態(tài)位,1表示有短路或斷路情況發(fā)生(表示有偷水情況),現(xiàn)共采集了5個字節(jié)的竊水狀態(tài),如果有竊水情況,則記錄在RESULT中,記錄格式為:表號,狀態(tài),表號,狀態(tài)……沒有短斷路,則記錄EOH,斷路記錄E1H,短路記錄E2H,如0血日乩02比£014,0311E2比04凡£0}1表示第一塊表斷路,第二塊表無竊水狀態(tài),第三塊表短路,第四塊表也無竊水發(fā)生。例如:內存中有:83H-結果為: 01H,E1H,O2H,E1H,03H,E0H,04H,E2H-該內存中從SOURCE開始有一字符串,其以00H結束,長度不超過100。試編程對其進行壓縮,結果存入RESULT開始的內存單元。部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內存單元中。運算結果要求從RESULT開始存放,由過程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標出,每行空白「般只需一條指令,但采用功能相當?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。對程序必須進行匯編,并與IO.OBJ鏈接產生PROG1.EXE執(zhí)行文件,最終運行程序產生結果(無結果或結果不正確者均不得分)。調試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU5ESC_CODEEQU27STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?)RESULTDBN*8DUP(O)NAMEODB'INPUT1.DAT',0NAME1DB(OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVES,AX;置附加段寄存器LEADX,SOURCE;數(shù)據(jù)區(qū)起始地址
LEASI,NAMEO;原始數(shù)據(jù)文件名MOVCX,N;字節(jié)數(shù)CALLLOAD;從'INPUT1.DAT'中讀取數(shù)據(jù);****BEGIN****LEASI,SOURCEMOVDI,OFFSETRESULTMOVDH,NLPM: MOVAL,[SI]MOVBL,ALINCSIMOVCL,SHRBL,CLMOVCX,4MOVBH,0LPO: SHRAL,1;BH放水表號INCBHMOV[DI],BHJCLP1SHRBL,1JCLP2MOVDL,OEOHJMPLPCOMLPLP:LOOPJMPRET1LP1: SHRBL,1MOVDL,JMPLPCOMLP2: MOVDL,0E2HLPCOM:MOV[DI],DLJMPLPLPRET1:DECDHLPM;****end****LEADX,RESULT;結果數(shù)據(jù)區(qū)首址LEASI,NAME1;結果文件名MOVCX,N*2;字節(jié)數(shù)CALLSAVE;保存結果到文件RETSTARTENDPCODEENDS第二十--題:一、請編制程序,其功能是:以SOURCE開始的內存區(qū)域存放著若干字節(jié)的數(shù)據(jù),以#作為數(shù)據(jù)的結束標志。將其中的空格濾除,對每個非空格數(shù)據(jù)的最高位清0后依次存放到RESULT指示的區(qū)域,其后存放一個空格符(20H),然后存放原來的空格個數(shù),最后仍以‘#'結束。內存中有45H,20H,87H,20H,A5H,32H,20H,20H,20H,23H結果為45H,07H,25H,32H,20H,05H,23H部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUTI.DAT中讀入SOURCE開
始的內存單元中。運算結果要求從RESULT開始存放,由過程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的?段源程序使其完整(空白已用橫線標出,每行空白?般只需一條指令,但采用功能相當?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。對程序必須進行匯編,并與IO.OBJ鏈接產生PROG1.EXE執(zhí)行文件,最終運行程序產生結果(無結果或結果不正確者均不得分)。調試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU20ESCCODEEQU27STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?)RESULTDBNDUP(O)NAMEODB)INPUT1.DAT',0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVES,AX ;置附加段寄存器LEADX,SOURCE ;數(shù)據(jù)區(qū)起始地址LEASI,NAMEO ;原始數(shù)據(jù)文件名MOVCX.N ;字節(jié)數(shù)CALLLOAD ;從'INPUT1.DAT'中讀取數(shù)據(jù);****begin****LEASI,SOURCEMOVDI,OFFSETRESULTXORBL,BLAGNI:MOVAL,[SI]INCSICMPJEAL,,,JMPAGN2AGN11:INCBLJMPAGNIAGN2:CMPAL, JEDONEANDAL,7FHMOV[DI],AL
DONE:MOVAL, MOV[DI],ALINCDIMOV[DI],BLINCDIMOVAL,'#'MOV,AL;****END****LEADX,RESULT;結果數(shù)據(jù)區(qū)首址LEASI,NAME1;結果文件名MOVCX,N;字節(jié)數(shù)CALLSAVE;保存結果到文件RETSTARTENDPCODEENDSENDSTART第二十二題:一、請編制程序,其功能是:內存中連續(xù)存放著9個ASCH字符(8位二進制數(shù)表示,最高位為零),把它們轉換成串行通訊中偶校驗碼,并計算9個偶校驗碼的累加碼(累加值的低8位二進制數(shù)),將九個偶校驗碼按原序存入內存,累加碼存放在此序最后。例如:內存中有:37H,38H,39H…結果為:B7H,B8H,39H…累加碼部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內存單元中。運算結果要求從RESULT開始存放,由過程SAVE保存到文件OUTPUT1.DAT填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標出,每行空白一般只需一條指令,但采用功能相當?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。對程序必須進行匯編,并與1O.OBJ鏈接產生PROG1.EXE執(zhí)行文件,最終運行程序產生結果(無結果或結果不正確者均不得分)。調試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU10STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDB9DUP(?) ;順序存放9個ASCII字符RESULTDBNDUP(O) ;存放結果NAMEODB'INPUT1.DAT',0NAME1DB'OUTPUT1.DAT',0DATAENDSCODESEGMENT
ASSUMECS:CODE,DS:DATA,SS:STACSTARTP
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度綠色建筑設計與施工一體化合同范本-@-1
- 2025年口腔診所醫(yī)療廢物收集處理合同標準版
- 2025年度交通事故賠償協(xié)議傷殘等級評定合同
- 2025年度城市軌道交通建設項目工程合同范本
- 2025年度國際貿易融資貸款合同范本及還款條款
- 2025合同模板教師聘用合同范本
- 2025工程監(jiān)理勞動合同范本
- 甲乙雙方合同模板
- 2025年個人委托代理合同常用版(2篇)
- 廚房承包合同
- 2024年四川省成都市高新區(qū)中考數(shù)學二診試卷
- 礦井主要災害事故防治應急避災知識培訓課件
- 不老莓行業(yè)分析
- STARCCM基礎培訓教程
- 地理標志專題通用課件
- 《小英雄雨來》讀書分享會
- 中央導管相關血流感染防控
- 產時子癇應急演練文檔
- 小學美術-《神奇的肥皂粉》教學設計學情分析教材分析課后反思
- 測量管理體系內審檢查表
- 班組月度考核評分表
評論
0/150
提交評論