計(jì)算機(jī)等級(jí)考試PC技術(shù)上機(jī)南開(kāi)100題-附三份答案_第1頁(yè)
計(jì)算機(jī)等級(jí)考試PC技術(shù)上機(jī)南開(kāi)100題-附三份答案_第2頁(yè)
計(jì)算機(jī)等級(jí)考試PC技術(shù)上機(jī)南開(kāi)100題-附三份答案_第3頁(yè)
計(jì)算機(jī)等級(jí)考試PC技術(shù)上機(jī)南開(kāi)100題-附三份答案_第4頁(yè)
計(jì)算機(jī)等級(jí)考試PC技術(shù)上機(jī)南開(kāi)100題-附三份答案_第5頁(yè)
已閱讀5頁(yè),還剩166頁(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í)PC南開(kāi)100題第一題:-、請(qǐng)編制程序,其功能是:將內(nèi)存中由SOURCE指示的40個(gè)字節(jié)有符號(hào)數(shù)組成的數(shù)組分成正數(shù)和負(fù)數(shù)兩個(gè)數(shù)組,并求這兩個(gè)數(shù)組的數(shù)據(jù)個(gè)數(shù),結(jié)果存放在RESULT指示的內(nèi)存區(qū)域,存放形式為正數(shù)個(gè)數(shù)在前,其后跟正數(shù)數(shù)組元素,然后是負(fù)數(shù)個(gè)數(shù)及負(fù)數(shù)數(shù)組元素。例如:內(nèi)存中有1EH,91H,74H,91H,42H,30H,81H,F3H,18H,25H結(jié)果為 O6H,1EH,74H,42H,3OH,18H,25H,04H,91H,91H,81H,F3H部分程序已給出,其中原始數(shù)據(jù)由過(guò)程LOAD從文件INPUT1.DAT中讀入SOURCE開(kāi)始的內(nèi)存單元中。運(yùn)算結(jié)果要求從RESULT開(kāi)始存放,由過(guò)程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標(biāo)出,每行空白一般只需一條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來(lái)完成要求的功能。對(duì)程序必須進(jìn)行匯編,并與IO.OBJ鏈接產(chǎn)生PROG1.EXE執(zhí)行文件,最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(jié)果或結(jié)果不正確者均不得分)。調(diào)試中若發(fā)現(xiàn)整個(gè)程序中存在錯(cuò)誤之處,請(qǐng)加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU40STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(O)RESULTDBN+2DUP(O)NAMEODB'INPUTl.DAT,0NAME1DB'outputldaT,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ū)首址

MOVBX,OFFSETNDATA ;NDATA為負(fù)數(shù)數(shù)組存放緩沖區(qū)首址XORDX,DXMOVCX,NCLDMAIN1:LODSBTESTAL, JZMAIN2INCDH?一MOV[BX],ALINCBXMAIN2:INCDLMOV[DI],AL;十INCDIMAIN3:MAIN1LEASI,PDATALEADI,RESULTMOV[DlJ.DLINCDIXORex,exMOVCL,DLMAIN4:MOVAL, MOV[DI],ALINCDIINCSILOOPMOV[DI],DHINCDIXORex,exMOVCL,DHMOVBX,OFFSETNDATAMAIN5:MOVAL,[BX]MOV[DI],ALINCDILOOPMA1N5;****END****LEADX,RESULT;結(jié)果數(shù)據(jù)區(qū)首址LEASI,NAME1;結(jié)果文件名MOVCX,N+2;字節(jié)數(shù)CALLSAVE;保存結(jié)果到文件RETSTARTENDPCODEENDSENDSTART第二題:一、請(qǐng)編制程序,其功能是:內(nèi)存中連續(xù)存放著10個(gè)無(wú)符號(hào)8位格宙碼表示的數(shù),現(xiàn)將此十個(gè)數(shù)轉(zhuǎn)換成十個(gè)8位二進(jìn)制數(shù),結(jié)果存入內(nèi)存,其轉(zhuǎn)換方法為二進(jìn)制數(shù)的最高位D7與格雷碼的最高位G7相同,二進(jìn)制數(shù)的其余七位DK(k=6,…,0)分別為格雷碼的位GMk=6,…,0)與二進(jìn)制數(shù)的位Dk+i(k=6,…,0)異或的結(jié)果。例如:內(nèi)存中有 OOH,03H,2BH,67H,OCH,15H,54H,02H,D8H,C7H結(jié)果為 OOH,02H,32H,45H,08H,19H,67H,03H,90H,85H部分程序已給出,其中原始數(shù)據(jù)由過(guò)程LOAD從文件INPUT1.DAT中讀入SOURCE開(kāi)始的內(nèi)存單元中。運(yùn)算結(jié)果要求從RESULT開(kāi)始存放,由過(guò)程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的源程序使其完整(空白已用橫線標(biāo)出,每行空白一般只需一條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來(lái)完成要求的功能。對(duì)程序必須進(jìn)行匯編,并與10.OBJ鏈接產(chǎn)生PR0G1.EXE執(zhí)行文件,最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(jié)果或結(jié)果不正確者均不得分)。調(diào)試中若發(fā)現(xiàn)整個(gè)程序中存在錯(cuò)誤之處,請(qǐng)加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU10STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?);順序存放10個(gè)字節(jié)數(shù)RESULTDBNDUP(O);存放結(jié)果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,SOURCELEADI,RESULTMOVCX,10AGNO:MOVAL,[SI]MOVCX,8MOVBX,0AGNI:MOVAH,0SULBL,1AL,1RCLAH,1CMPAH,

JMP NEXTSET_ONE:OR BL,01HNEXT:MOV,BLLOOPAGNIMOV[DI],BLSIDIAGNOINCINCLOOP;****END****LEADX,RESULT ;結(jié)果數(shù)據(jù)區(qū)首址LEASI.NAMEl ;結(jié)果文件名MOVCX,N ;結(jié)果字節(jié)數(shù)CALLSAVE ;保存結(jié)果到文件RETSTARTENDPCODEENDSEND第三題:一、請(qǐng)編制程序,START其功能是:內(nèi)存中連續(xù)存放著20個(gè)十六位二進(jìn)制無(wú)符號(hào)數(shù)序列,請(qǐng)將它們排成升序(從小到大)。例如:內(nèi)存中有 7001H,7004H,7002H-(假設(shè)后17個(gè)字均大與7004H)結(jié)果為7001H,7002H,700仙…(后跟17個(gè)字,按從小到大的順序排列)部分程序已給出,其中原始數(shù)據(jù)由過(guò)程LOAD從文件INPUTLDAT中讀入SOURCE開(kāi)始的內(nèi)存單元中。運(yùn)算結(jié)果要求從RESULT開(kāi)始存放,由過(guò)程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的源程序使其完整(空白已用橫線標(biāo)出,每行空白般只需一條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來(lái)完成要求的功能。對(duì)程序必須進(jìn)行匯編,并與10.OBJ鏈接產(chǎn)生PR0G1.EXE執(zhí)行文件,最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(jié)果或結(jié)果不正確者均不得分)。調(diào)試中若發(fā)現(xiàn)整個(gè)程序中存在錯(cuò)誤之處,請(qǐng)加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU20STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDWNDUP(?)RESULTDWNDUP(O)NAMEODB*INPUT1.DAT,0NAME1DB'0UTPUT1.DAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AX

PUSHAXMOVAX,DATAMOVDS,AXLEADX,SOURCE ;數(shù)據(jù)區(qū)起始地址LEASI.NAMEO ;原始數(shù)據(jù)文件名MOVCX,N*2 ;字?jǐn)?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 ;結(jié)果數(shù)據(jù)區(qū)首址LEASI.NAMEl ;結(jié)果文件名MOVCX,N*2 ;結(jié)果字節(jié)數(shù)CALLSAVE ;保存結(jié)果到文件RETSTARTENDPCODEENDSENDSTART第四題:一、請(qǐng)編制程序,其功能是:內(nèi)存中連續(xù)存放著24個(gè)無(wú)符號(hào)二進(jìn)制字序列,字的最高位為000,此序列對(duì)應(yīng)某一信號(hào)在一段時(shí)間內(nèi)的連續(xù)變化,現(xiàn)對(duì)第21個(gè)二進(jìn)制字前的20個(gè)二進(jìn)制字進(jìn)行移動(dòng)平均處理,其方法為:將要處理的字X;用以它為開(kāi)始的連續(xù)五個(gè)字的平均數(shù)(%+X,“XUQ/5代替(余數(shù)舍去),得到新的20個(gè)無(wú)符號(hào)二進(jìn)制字序列,結(jié)果存入內(nèi)存。例如:內(nèi)存中有 0100H,0200H,0300H,0400H,0500H,0600H—結(jié)果為 0300H,0400H…部分程序已給出,其中原始數(shù)據(jù)由過(guò)程LOAD從文件INPUT1.DAT中讀入SOURCE開(kāi)始的內(nèi)存單元中。運(yùn)算結(jié)果要求從RESULT開(kāi)始存放,由過(guò)程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的源程序使其完整(空白已用橫線標(biāo)出,每行空白一般只需一條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來(lái)完成要求的功能。

對(duì)程序必須進(jìn)行匯編,并與10.OBJ鏈接產(chǎn)生PR0G1.EXE執(zhí)行文件,最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(jié)果或結(jié)果不正確者均不得分)。調(diào)試中若發(fā)現(xiàn)整個(gè)程序中存在錯(cuò)誤之處,請(qǐng)加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU24STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDWNDUP(?) ;順序存放24個(gè)字RESULTDW20DUP(O) ;存放結(jié)果NAMEODB'INPUT1.DAT',0NAME1DB'OUTPUTLDAT',0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXLEADX,SOURCE ;數(shù)據(jù)區(qū)起始地址LEASI,NAMEO ;原始數(shù)據(jù)文件名MOVCX,N*2 ;字?jǐn)?shù)CALLLOAD ;從‘INPUT1.DAT'中讀取數(shù)據(jù);****begin****MOVDI,0MOVSI,0MOVCX,20MOVBX, AGNO:MOVAX,SOURCE[SI]PUSHSIPUSHexMOVAGNI:INCSIINCSIADDAX,SOURCE[SI]LOOPAGNIDIVBXMOVRESULT[DI],AXINCDIPOPexPOPSIINCSILOOPAGNO;****end****LEADX,RESULT;結(jié)果數(shù)據(jù)區(qū)苜址LEASI,NAME1;結(jié)果文件名MOVCX,40;結(jié)果字節(jié)數(shù)CALLSAVE;保存結(jié)果到文件RETSTARTENDPCODEENDSENDSTART第五題:一、請(qǐng)編制程序,其功能是:內(nèi)存中從SOURCE開(kāi)始連續(xù)存放著21個(gè)八位有符號(hào)數(shù)(補(bǔ)碼),其相鄰兩數(shù)之間差值不超過(guò)-8至7。對(duì)這種變化緩慢的數(shù)據(jù)可采用差分方法進(jìn)行壓縮。即第一個(gè)數(shù)據(jù)不變,其后的數(shù)據(jù)取與前一數(shù)據(jù)的差值并用四位二進(jìn)制補(bǔ)碼表示,兩個(gè)差值拼成一個(gè)字節(jié),前一個(gè)差值放在高四位,后一個(gè)差值放在低四位。例如:原數(shù)據(jù)(X[n]):23H,27H,2AH,29H,22H…壓縮后(Y[n]):23H, 43H,F9H-編程按上述方法進(jìn)行壓縮,結(jié)果保存在RESULT開(kāi)始的內(nèi)存單元中。部分程序已給出,其中原始數(shù)據(jù)由過(guò)程LOAD從文件INPUT1.DAT中讀入SOURCE開(kāi)始的內(nèi)存單元中。運(yùn)算結(jié)果要求從RESULT開(kāi)始存放,由過(guò)程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標(biāo)出,每行空白一般只需?條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來(lái)完成要求的功能。對(duì)程序必須進(jìn)行匯編,并與IO.OBJ鏈接產(chǎn)生PROG1.EXE執(zhí)行文件,最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(jié)果或結(jié)果不正確者均不得分)。調(diào)試中若發(fā)現(xiàn)整個(gè)程序中存在錯(cuò)誤之處,請(qǐng)加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU10STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDB2*N+1DUP(?)RESULTDBN+lDUP(O)NAMEODB*INPUT1.DAT*,0NAME1DB'outputldaT,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二NOTFLAGJLOWHEXMOVCL,4AL,CLMOVAH,ALJMPNEXTLOW_HEX:ORAL,AHSTOSBNEXT:JNECOMPRESS;****END****LEADX,RESULT;結(jié)果數(shù)據(jù)區(qū)首址LEASI,NAME1;結(jié)果文件名MOVCX,N+l;字節(jié)數(shù)CALLSAVE;保存結(jié)果到文件RETSTARTENDPCODEENDSENDSTART第六題:一、請(qǐng)編制程序,其功能是:將內(nèi)存中存放著20個(gè)數(shù)字0?9之間的ASCII字符(包括數(shù)字0和9的ASCII字符)或SP字符(20H),請(qǐng)將數(shù)字0?9之間的ASCH字符(包括數(shù)字0和9的ASCII字符)轉(zhuǎn)換為相應(yīng)的八位二進(jìn)制數(shù),并將SP字符轉(zhuǎn)換為$字符(24H)?!否迳鲜龇椒ㄌ幚砗蟮玫降?0個(gè)字節(jié)存入內(nèi)存中。例如:內(nèi)存中有20H('SP'),30H內(nèi)0,),31H(T),31H(T),20H('SP'),32H('2'),…,39H(9)共20個(gè)ASCII字符)結(jié)果為24H('$'),00H,01H,01H,01H,24H('$'),02H('2'),-,09H('9')共20個(gè)字節(jié))部分程序已給出,其中原始數(shù)據(jù)由過(guò)程LOAD從文件:INPUT1.DAT中讀入SOURCE開(kāi)始的內(nèi)存單元中。運(yùn)算結(jié)果要求從RESULT開(kāi)始存放,由過(guò)程SAVE保存到文件OUTPUT1.DAT中。

填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標(biāo)出,每行空白一般只需一條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來(lái)完成要求的功能。對(duì)程序必須進(jìn)行匯編,并與IO.OBJ鏈接產(chǎn)生PROG1.EXE執(zhí)行文件,最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(jié)果或結(jié)果不正確者均不得分)。調(diào)試中若發(fā)現(xiàn)整個(gè)程序中存在錯(cuò)誤之處,請(qǐng)加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU20STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?)RESULTDBNDUP(O)NAMEODB(INPUT1.DAT',0NAME1DB'0UTPUT1.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],ALDECCXJZEXITJMPCHANCHANGE:MOVRESULT[DI],24HINCDIINCSIJMPEXIT:NOP;****end****LEADX,RESULT;結(jié)果數(shù)據(jù)區(qū)苜址LEASI,NAME1;結(jié)果文件名MOVCX,N;字節(jié)數(shù)CALLSAVE;保存結(jié)果到文件RETSTARTENDPCODEENDSENDSTART第七題:一、請(qǐng)編制程序,其功能是:內(nèi)存中共有30個(gè)字節(jié)型數(shù)據(jù),找出其中的兩個(gè)ASCII字符串并進(jìn)行校驗(yàn)。欲尋找ASCII字符串由13個(gè)字符組成:#(23H),7個(gè)ASCII字符,*(2AH),2個(gè)ASCII字符,回車(chē)符(0DH),換行符(0AH),校驗(yàn)方法為:對(duì)字符#及字符*之間的7個(gè)ASCII字符進(jìn)行異或操作,若異或操作結(jié)果的ASCCII字符表示(異或操作結(jié)果高4位的ASCII字符表示在前,低4位的ASCII字符表示在后)與原字符串中字符*之后的兩個(gè)ASCH字符相同,則將原字符串原樣保存;反之,則將原字符串中的所有字符(共13個(gè))均用字符?。?1H)代替。例如:內(nèi)存中有33H,35H,23H<?#,,第一個(gè)字符串開(kāi)始),46H,41H,30H,2EH,34H,3DH,31H,2AH() ,32H,31H,0DH,0AH,46H,23H ( #,第二個(gè)字符串開(kāi)始),46H,41H,30H,2EH,34H,3DH,30H,2AH('*'),32H,31H,0DH,0AH,55H結(jié)果為23H,46H,41H,30H,2EH,34H,3DH,31H,2AH('*'),32H,31H(校驗(yàn)正確,該字符串原樣保持),0DH,0AH,21H,21H,21H,21H,21H,21H,21H,21H,21H,21H,21H,21H21H(校驗(yàn)錯(cuò),整個(gè)字符串用字符'!'彳替).部分程序已給出,其中原始數(shù)據(jù)由過(guò)程LOAD從文件INPUT1.DAT中讀入SOURCE開(kāi)始的內(nèi)存單元中。運(yùn)算結(jié)果要求從RESULT開(kāi)始存放,由過(guò)程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標(biāo)出,每行空白一般只需一條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來(lái)完成要求的功能。對(duì)程序必須進(jìn)行匯編,并與IO.OBJ鏈接產(chǎn)生PROG1.EXE執(zhí)行文件,最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(jié)果或結(jié)果不正確者均不得分)。調(diào)試中若發(fā)現(xiàn)整個(gè)程序中存在錯(cuò)誤之處,請(qǐng)加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU26STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBN+4DUP(?)RESULTDBNDUP(O)HHDB2DUP(O)NAMEODB*INPUT1.DAT*,0NAME1DB,OUTPUT1.DAT,,0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SSSTARTPROCFAR

PUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXLEADX,SOURCE ;數(shù)據(jù)區(qū)起始地址LEASLNAMEO ;原始數(shù)據(jù)文件名MOVCX,N+4 ;字節(jié)數(shù)CALLLOAD ;從'INPUT1.DAT'中讀取數(shù)據(jù);****begin****MOVSI,0MOVDI,0MOVBX,2 ;兩個(gè)ASCH字符串REPEAT:MOVAH,0SEARCH:MOVAL,SOURCE[SI]INCSICMPAL,'#'_SEARCHMOVRESULT[DI],ALINCDISEARCHI:MOVAL,SOURCE[SI]INCSICMPAL, JEASCIIMOVRESULT[DI],ALINCDIXORJMPAH,ALASCII:MOVRESULT[DI],ALINCDIPUSHDIMOVDI,0MOVDH,2MOVDL.AH ;異或結(jié)果暫存在DL中MOVCL,4 ;先將異或結(jié)果高4位轉(zhuǎn)換成ASCII字符SHRAH,CL ;本行開(kāi)始的4行語(yǔ)句將一個(gè)十六進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼CHANGE:CMPAH,10JLADD_OADDAH,'A'-'O'-10ADD_O:ADDAH,'O'MOVHH[DI],AllINCDIDECDHJZEXTMOVAH.DL ;再將異或結(jié)果低4位轉(zhuǎn)換成ASCII字符ANDAH,OFHJMPCHANGEEXT: POPDIMOVAL,SOURCE[SI]MOVRESULT[DI],ALINCSI

INCDIMOVAH,SOURCE[SI]MOVRESULT[DI],AHINCSIINCDIMOVDL,HHMOVDH,HH+1CMPAX,DXERRMOVAL,ODH;校驗(yàn)正確MOVRESULT[DI],ALINCDIMOVAL,OAHMOVRESULT[DI],ALINCDIJMPLPERR:SUBDI,11;校驗(yàn)錯(cuò)誤MOVAL/!(MOVex, COVER:MOVRESULT[DI],ALINCDILOOPCOVERLP:JZEXITJMPREPEATEXIT:NOP;****END****LEADX,RESULT;結(jié)果數(shù)據(jù)區(qū)首址LEASI,NAME1;結(jié)果文件名MOVCX,N;字節(jié)數(shù)CALLSAVE;保存結(jié)果到文件RETSTARTENDPCODEENDSENDSTART第八題:一、請(qǐng)編制程序,其功能是:內(nèi)存中連續(xù)存放著10個(gè)十六位二進(jìn)制數(shù),每個(gè)數(shù)的序號(hào)依次定義為0,1,…,9。統(tǒng)計(jì)每個(gè)數(shù)中位為0的個(gè)數(shù)N0,Ni,…,N,(均用一個(gè)字節(jié)表示),然后按序定義將N。至N-存入內(nèi)存中,最后再用一個(gè)字節(jié)這10個(gè)數(shù)中為。的位的總數(shù)n(n=N°+Ni+…+NQ。例如:內(nèi)存中有 0000H,000FH,FFFFH—結(jié)果為 10H,OCH,00H…最后為n部分程序已給出,其中原始數(shù)據(jù)由過(guò)程LOAD從文件INPUT1.DAT中讀入SOURCE開(kāi)始的內(nèi)存單元中。運(yùn)算結(jié)果要求從RESULT開(kāi)始存放,由過(guò)程SAVE保存到文件0UTPUT1.DAT中。填空BEGIN和END之間已給出的源程序使其完整(空白已用橫線標(biāo)出,每行空白一般只需一條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來(lái)完成要求的功能。對(duì)程序必須進(jìn)行匯編,并與10.OBJ鏈接產(chǎn)生PR0G1.EXE執(zhí)行文件,最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(jié)果或結(jié)果不正確者均不得分)。調(diào)試中若發(fā)現(xiàn)整個(gè)程序中存在錯(cuò)誤之處,請(qǐng)加以修改。試題程序:

EXTRNLOAD:FAR,SAVE:FARNEQU10STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?) ;順序存放10個(gè)字節(jié)數(shù)RESULTDBN+lDUP(O) ;存放結(jié)果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 ;字節(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 ;結(jié)果數(shù)據(jù)區(qū)首址LEASI.NAMEl ;結(jié)果文件名MOVCX.N ;結(jié)果字節(jié)數(shù)CALLSAVE ;保存結(jié)果到文件STARTRETENDPCODEENDSENDSTART第九題:一、請(qǐng)編制程序,其功能是:內(nèi)存中有一個(gè)由16個(gè)十六位二進(jìn)制數(shù)組成的數(shù)組(SOURCE)和一個(gè)字變量L.試將L作為邏輯尺對(duì)數(shù)組SOURCE進(jìn)行下列處理:如L的第i位為0,則數(shù)組的第i個(gè)數(shù)不變;如L的第i位為1,則數(shù)組的第i個(gè)數(shù)按位取反。字L的位序從低到高依次為0至15,數(shù)組下標(biāo)依次從0到15。例如:L=0009H,數(shù)組為139CH,89C6H,5437H,8819H-變換為EC63H,89C6H,5437H,77E6H—部分程序已給出,其中原始數(shù)據(jù)由過(guò)程LOAD從文件INPUT1.DAT中讀入(L在前,SOURCE在后)。運(yùn)算結(jié)果要求從RESULT開(kāi)始存放,由過(guò)程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的源程序使其完整(空白已用橫線標(biāo)出,每行空白一般只需一條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來(lái)完成要求的功能。對(duì)程序必須進(jìn)行匯編,并與10.OBJ鏈接產(chǎn)生PR0G1.EXE執(zhí)行文件,最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(jié)果或結(jié)果不正確者均不得分)。調(diào)試中若發(fā)現(xiàn)整個(gè)程序中存在錯(cuò)誤之處,請(qǐng)加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU16STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTLDW?SOURCEDWNDUP(?)RESULTDWNDUP(O)NAMEODB'INPUT1.DAT',0NAME1DB'0UTPUT1.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 ;從'INPUT1.DAT'中讀取數(shù)據(jù);****begin****LEASI,SOURCEMOVCX,NMOVDX, L0:MOVAX,[SI]L,DXSTORE

NOTAXSTORE:MOV[DI],AXADDDI,2ADDSI,2LOOPLO;****end****LEADX,RESULT;結(jié)果數(shù)據(jù)區(qū)首址LEASI,NAME1;結(jié)果文件名MOVCX,2*N;結(jié)果字節(jié)數(shù)CALLSAVE;保存結(jié)果到文件RETSTARTENDPCODEENDSENDSTART第十題:一、請(qǐng)編制程序,其功能是:計(jì)算10個(gè)有符號(hào)字節(jié)數(shù)據(jù)的絕對(duì)值之和(字型),并找出絕對(duì)值最大的數(shù)及其所在的偏移地址,最后將它們依次存入指定的內(nèi)存中,結(jié)果以FFH結(jié)束。例如:內(nèi)存中有10H,01H,27H,00H,FEH,80H,00H,03H,FFH,01H結(jié)果為BFH,OOH,8OH,O5H,OOH,FFH部分程序已給出,其中原始數(shù)據(jù)由過(guò)程LOAD從文件INPUT1.DAT中讀入SOURCE開(kāi)始的內(nèi)存單元中。運(yùn)算結(jié)果要求從RESULT開(kāi)始存放,由過(guò)程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標(biāo)出,每行空白一般只需一條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來(lái)完成要求的功能。對(duì)程序必須進(jìn)行匯編,并與IO.OBJ鏈接產(chǎn)生PROG1.EXE執(zhí)行文件,最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(jié)果或結(jié)果不正確者均不得分)。調(diào)試中若發(fā)現(xiàn)整個(gè)程序中存在錯(cuò)誤之處,請(qǐng)加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU10DSEGSEGMENTSOURCEDBNDUP(?)RESULTDB6DUP(O)MAXDB?NAMEODB*INPUT1.DAT1,0NAME1DB*OUTPUT1.DAT1,0DSEGENDSSSEGSEGMENTSTACKDB256DUP(?)SSEGENDSCSEGSEGMENTASSUMECS:CSEG,SS:SSEG,DS:DSEGSTARTPROCFARPUSHDSXORAX,AXPUSHAX

MOVAX,DSEGMOVDS,AXMOVES,AX;置附加段寄存器LEADX,SOURCE;數(shù)據(jù)區(qū)起始地址LEASI,NAMEO;原始數(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], ;****END****LEADX,RESULT ;結(jié)果數(shù)據(jù)區(qū)首址LEASI.NAMEl ;結(jié)果文件名MOVCX,6 ;字節(jié)數(shù)CALLSAVE ;保存結(jié)果到文件RETSTARTENDPCSEGENDSENDSTART第十一題:一、請(qǐng)編制程序,其功能是:以SOURCE開(kāi)始的內(nèi)存區(qū)域存放著多個(gè)字節(jié)的數(shù)據(jù),其中有壓縮BCD碼和其他數(shù)據(jù)?,F(xiàn)按下列編碼規(guī)則進(jìn)行編碼:在第每個(gè)壓縮BCD碼前面加兩個(gè)字節(jié)前綴代碼BEH和CCH,并在其后加兩個(gè)字后綴代碼DDH和EDH:如果不是壓縮BCD碼,則該數(shù)據(jù)前后均加兩個(gè)代碼ODH和OEH。編碼后的數(shù)據(jù)存放到RESULT指示的內(nèi)存區(qū)域。例如:內(nèi)存中有12H,D9H,86H,54H-結(jié)果為BEH.CCH,12H,DDH,EDH,0EH,D9H,0DH,0EH,BEH.CCH,86H,DDH,EDH,BEH,CCH,86H,DDH,EDH-部分程序已給出,其中原始數(shù)據(jù)由過(guò)程LOAD從文件INPUT1.DAT中讀入SOURCE開(kāi)始的內(nèi)存單元中。運(yùn)算結(jié)果要求從RESULT開(kāi)始存放,由過(guò)程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標(biāo)出,每行空白一般只需一條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來(lái)完成要求的功能。對(duì)程序必須進(jìn)行匯編,并與IO.OBJ鏈接產(chǎn)生PROG1.EXE執(zhí)行文件,最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(jié)果或結(jié)果不正確者均不得分)。調(diào)試中若發(fā)現(xiàn)整個(gè)程序中存在錯(cuò)誤之處,請(qǐng)加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU10STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?)RESULTDB5*NDUP(O)NAMEODB'INPUT1.DAT",0NAME1DB'0UTPUT1.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,ALMOVAH,ALANDAL,OFOH

MOVCL,4POPCMPCXJACLP2CMPAH,9JAMOVCLP2INCDIMOVBYTEPTR[DI],OCCHINCDIMOVBYTEPTR[DI],BLINCDIMOVBYTEPTR[DI],ODDHINCDIMOVBYTEPTR[DI],OEDHJMPCLP3CLP2:MOVBYTEPTR[DI],ODHINCDIMOVBYTEPTR[DI],OEHINCDIMOVBYTEPTR[DI],BLINCDIMOVBYTEPTR[DI],ODHINCDIMOVBYTEPTR[DI],OEHCLP3:INCSIINCDI;****END****LEADX,RESULT ;結(jié)果數(shù)據(jù)區(qū)首址LEASI.NAMEl ;結(jié)果文件名MOVCX,N+2 ;字節(jié)數(shù)CALLRETSAVE ;保存結(jié)果到文件STARTENDPCODEENDSENDSTART第十二題:一、請(qǐng)編制程序,其功能是:內(nèi)存中連續(xù)存放的20個(gè)八位無(wú)符號(hào)數(shù)是一個(gè)自動(dòng)抄表儀抄錄的20個(gè)用戶某月的用水量(立方米),為了控制用水量,水費(fèi)計(jì)算公式如下(X表示用水量:Y表示水費(fèi),單位為分):KY=X*70X<=52、Y=X*1005<X<=53、Y=X*150X>20例如:用水量(X): 04H,10H, 18H水費(fèi)(Y):0118H,0640H,0E10H-試計(jì)算出這20個(gè)用戶應(yīng)繳納的水費(fèi),結(jié)果用字(WORD)表示。部分程序已給出,其中原始數(shù)據(jù)由過(guò)程LOAD從文件INPUT1.DAT中讀入SOURCE開(kāi)

始的內(nèi)存單元中。運(yùn)算結(jié)果要求從RESULT開(kāi)始存放,由過(guò)程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標(biāo)出,每行空白一般只需一條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來(lái)完成要求的功能。對(duì)程序必須進(jìn)行匯編,并與IO.OBJ鏈接產(chǎn)生PROG1.EXE執(zhí)行文件,最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(jié)果或結(jié)果不正確者均不得分)。調(diào)試中若發(fā)現(xiàn)整個(gè)程序中存在錯(cuò)誤之處,請(qǐng)加以修改。試題程序: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,5JGT5JMPSTOREGT5:CMPAL,20J—GT20JMPSTORE

GT20: STORE:MOV[DI],AXLOOPNEXT;****END****LEADX,RESULT;結(jié)果數(shù)據(jù)區(qū)首址LEASI,NAME1;結(jié)果文件名MOVCX,N*2;字節(jié)數(shù)CALLSAVE;保存結(jié)果到文件RETSTARTENDPCODEENDSENDSTART第十三題:一、請(qǐng)編制程序,其功能是:內(nèi)存中連續(xù)存放的20個(gè)八位無(wú)符號(hào)數(shù)是一個(gè)自動(dòng)抄表儀抄錄的20個(gè)用戶某月的用水量(立方米),為了控制用水量,水費(fèi)計(jì)算公式如下(X表示用水量;丫表示水費(fèi),單位為分):Y=X*70 X<=5Y=10*70+(X-10)*120 X>10例如:用水量(X): 04H,OFH,18H-水費(fèi)(Y):0118H,0514H,094cH…試計(jì)算出這20個(gè)用戶應(yīng)繳納的水費(fèi),結(jié)果用字(WORD)表示。部分程序已給出,其中原始數(shù)據(jù)由過(guò)程LOAD從文件INPUT1.DAT中讀入SOURCE開(kāi)始的內(nèi)存單元中。運(yùn)算結(jié)果要求從RESULT開(kāi)始存放,由過(guò)程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標(biāo)出,每行空白一般只需一條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來(lái)完成要求的功能。對(duì)程序必須進(jìn)行匯編,并與IO.OBJ鏈接產(chǎn)生PROG1.EXE執(zhí)行文件,最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(jié)果或結(jié)果不正確者均不得分)。調(diào)試中若發(fā)現(xiàn)整個(gè)程序中存在錯(cuò)誤之處,請(qǐng)加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU20RATE1EQU70RATE2EQU120DELTAEQU10STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?)RESULTDWNDUP(O)NAMEODBJINPUT1.DAT,0NAME1DB'OUTPUTLDAT',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 ;結(jié)果數(shù)據(jù)區(qū)首址LEA SI.NAMEl ;結(jié)果文件名MOV CX,N*2 ;字節(jié)數(shù)CALL SAVE ;保存結(jié)果到文件STARTCODERETENDPENDSENDSTART第十四題:一、請(qǐng)編制程序,其功能是:對(duì)一個(gè)由可打印ASCH字符(ASCII碼20H~7FH)組成的字符串可采用下列方法進(jìn)行壓縮:從串首開(kāi)始向后掃描,如某字符單獨(dú)出現(xiàn)該字符不變,如某字符連續(xù)出現(xiàn)n次,則該字符用ESC(1BH),n,〈原字符>三個(gè)字節(jié)來(lái)代替(假定n不超過(guò)255)。例如:原串: 41H,43H,43H,43H,43H,43H,43H,61H,00H(“ACCCCCCa”)壓縮后: 41H,lBH,06H,43H,61H,00H設(shè)內(nèi)存中從SOURCE開(kāi)始有一字符串,其以O(shè)OH結(jié)束,長(zhǎng)度不超過(guò)100。試編程對(duì)其進(jìn)行壓縮,結(jié)果存入RESULT開(kāi)始的內(nèi)存單元。部分程序已給出,其中原始數(shù)據(jù)由過(guò)程LOAD從文件INPUT1.DAT中讀入SOURCE開(kāi)始的內(nèi)存單元中。運(yùn)算結(jié)果要求從RESULT開(kāi)始存放,由過(guò)程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標(biāo)出,每行空白一般只需一條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來(lái)完成要求的功能。對(duì)程序必須進(jìn)行匯編,并與IO.OBJ鏈接產(chǎn)生PROG1.EXE執(zhí)行文件,最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(jié)果或結(jié)果不正確者均不得分)。調(diào)試中若發(fā)現(xiàn)整個(gè)程序中存在錯(cuò)誤之處,請(qǐng)加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU100ESCCODEEQU27STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?)RESULTDBNDUP(O)NAMEODB'INPUT1.DAT",0NAME1DB'OUTPUTLDAT',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,RESULTCLDINCDIL0:CMPAL,0JEQUITMOVCX,OFFFFH;SETTHECOUNTERTOOFFFFH;字符串重復(fù)搜索,CX=OFFFFH-nNEGex;10000H-CX-CX;獲得重復(fù)次數(shù)n

CMPCX,1J'COMPRESSMOV[SI],ALINCSIJMPCOMPRESS:MOV[SI],BYTEPTRESC_CODEMOV[SI+1],CLMOV[SI+2],ALJMPL0QUIT:MOV[SI],AL ;STORETHE'OOH';****END****LEADX,RESULT ;結(jié)果數(shù)據(jù)區(qū)首址LEASI.NAMEl ;結(jié)果文件名MOVCX.N ;字節(jié)數(shù)CALLSAVE ;保存結(jié)果到文件RETSTARTENDPCODEENDSENDSTART第十五題:->請(qǐng)編制程序,其功能是:對(duì)一個(gè)由可打印ASCII字符(ASCII碼20H~7FH)組成的字符串可采用下列方法進(jìn)行壓縮:從串首開(kāi)始向后掃描,如某字符單獨(dú)出現(xiàn)該字符不變,如某字符連續(xù)出現(xiàn)n次,則該字符用ESC(1BH),n,〈原字符〉三個(gè)字節(jié)來(lái)代替(假定n不超過(guò)255)。例如:設(shè)內(nèi)存中從SOURCE開(kāi)始有一用上述方法壓縮的字符串,其以00H結(jié)束,長(zhǎng)度不超過(guò)100。試編程對(duì)其進(jìn)行解壓縮,結(jié)果存入RESULT開(kāi)始的內(nèi)存單元。原串: 41H,1BH,06H,43H,61H.00H解壓后: 41H,43H,43H,43H,43H,43H,43H,61H,00H('*ACCCCCCa")部分程序已給出,其中原始數(shù)據(jù)由過(guò)程LOAD從文件INPUT1.DAT中讀入SOURCE開(kāi)始的內(nèi)存單元中。運(yùn)算結(jié)果要求從RESULT開(kāi)始存放,由過(guò)程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標(biāo)出,每行空白一般只需一條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來(lái)完成要求的功能。時(shí)程序必須進(jìn)行匯編,并與IO.OBJ鏈接產(chǎn)生PROG1.EXE執(zhí)行文件,最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(jié)果或結(jié)果不正確者均不得分)。調(diào)試中若發(fā)現(xiàn)整個(gè)程序中存在錯(cuò)誤之處,請(qǐng)加以修改。LOAD:FAR,SAVE:FAR10027LOAD:FAR,SAVE:FAR10027STACK128DUP(?)EXTRNNEQUESC_CODEEQUSTACSEGMENTDBSTACENDS

DATASEGMENTSOURCEDBNDUP(?)RESULTDBNDUP(0)NAMEODB1INPUT1.DAT',0NAME1DB'0UTPUT1.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,RESULTCLDLO:LODSBCMPAL,0JEQUITCMPAL,ESC_CODEJEXPANDJMPLOEXPAND:;解壓XORex,exJMPLOQUIT:STOSB;STORETHE'OOH';****END****LEADX,RESULT;結(jié)果數(shù)據(jù)區(qū)首址LEASLNAMEl;結(jié)果文件名MOVCX,N;字節(jié)數(shù)CALLSAVE;保存結(jié)果到文件RETSTARTENDPCODEENDSENDSTART第十六題:一、請(qǐng)編制程序,其功能是:刻經(jīng)常上下波動(dòng)的數(shù)據(jù)可采用只記錄峰值的數(shù)據(jù)壓縮方法。即每次將采樣到的當(dāng)前值和前?次值比較,如數(shù)據(jù)變化方向改變(原變大現(xiàn)變小或原變小現(xiàn)變大),說(shuō)明已過(guò)峰值,這時(shí)就將前一值(峰值)記錄下來(lái)。例如(下例數(shù)據(jù)均為無(wú)符號(hào)數(shù)):原數(shù)據(jù): 23H,45H,89H,67H,5CH,36H,3cH…壓縮后: 23H,89H,36H…內(nèi)存中從SOURCE連續(xù)存放著48個(gè)八位無(wú)符號(hào)數(shù),假定無(wú)相鄰兩數(shù)相等的情況,編程按上述方法進(jìn)行壓縮,結(jié)果保存在RESULT開(kāi)始的內(nèi)存單元中。部分程序已給出,其中原始數(shù)據(jù)由過(guò)程LOAD從文件INPUT1.DAT中讀入SOURCE開(kāi)始的內(nèi)存單元中。運(yùn)算結(jié)果要求從RESULT開(kāi)始存放,由過(guò)程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標(biāo)出,每行空白一般只需一條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來(lái)完成要求的功能。對(duì)程序必須進(jìn)行匯編,并與IO.OBJ鏈接產(chǎn)生PROG1.EXE執(zhí)行文件,最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(jié)果或結(jié)果不正確者均不得分)。調(diào)試中若發(fā)現(xiàn)整個(gè)程序中存在錯(cuò)誤之處,請(qǐng)加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU40STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?)RESULTDBNDUP(O)NAMEODB'INPUT1.DAT',0NAME1DB'0UTPUT1.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;從’INPUU.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)符號(hào)位是否相同J _SKIP;相同,數(shù)據(jù)方向未變;不同,數(shù)據(jù)變化,保存峰值STOSBSKIP:LOOPFILTER;****END****LEADX,RESULT;結(jié)果數(shù)據(jù)區(qū)首址LEASI,NAME1;結(jié)果文件名MOVCX,N;字節(jié)數(shù)CALLSAVE;保存結(jié)果到文件RETSTARTENDPCODEENDSENDSTART第十七題:一、請(qǐng)編制程序,其功能是:從10個(gè)有符號(hào)字節(jié)數(shù)據(jù)中取出負(fù)數(shù)并計(jì)算其絕對(duì)值之和(字型),然后存放在指定的內(nèi)存區(qū)中,多余的空間填0。例如:內(nèi)存中有: 80H,01H,02H,00H,FFH,7CH,FEH,7BH,FDH,81H結(jié)果為: 8OH,FFH,FEH,FDH,81H,05H,01H,00H,00H,00H部分程序已給出,其中原始數(shù)據(jù)由過(guò)程LOAD從文件INPUT1.DAT中讀入SOURCE開(kāi)始的內(nèi)存單元中。運(yùn)算結(jié)果要求從RESULT開(kāi)始存放,由過(guò)程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標(biāo)出,每行空白一般只需一條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來(lái)完成要求的功能。對(duì)程序必須進(jìn)行匯編,并與IO.OBJ鏈接產(chǎn)生PROG1.EXE執(zhí)行文件,最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(jié)果或結(jié)果不正確者均不得分)。調(diào)試中若發(fā)現(xiàn)整個(gè)程序中存在錯(cuò)誤之處,請(qǐng)加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU10DSEGSEGMENTSOURCEDBNDUP(?)RESULTDBNDUP(O)NAMEODB'INPUT1.DAT',0

NAME1DB'OUTPUTLDAT',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;從'INPUT1.DAT中讀取數(shù)據(jù);****BEGIN****LEASI,SOURCELEADI,RESULTMOVDX,0MOVCX,NCLDCONT:LODSBJGEMOV[DI],ALINCDIADDDL,ALNEXT:LOOPCONTMOV[DI],DXADDDI,2MOVCX,20SUBCX,DIMOVAL,0;****end****LEADX,RESULT;結(jié)果數(shù)據(jù)區(qū)首址LEASI,NAME1;結(jié)果文件名MOVCX,N;字節(jié)數(shù)CALLSAVE;保存結(jié)果到文件RETSTARTENDPCSEGENDSENDSTART第十八題:一、請(qǐng)編制程序,其功能是:以SOURCE開(kāi)始的內(nèi)存區(qū)域存放著20個(gè)字節(jié)的信息,其中有ASCII字符和漢字機(jī)內(nèi)碼。若一個(gè)字節(jié)中最高位為0,則表示ASCH字符,若連續(xù)兩個(gè)字節(jié)的每個(gè)字節(jié)最高位均為1,則為漢字機(jī)內(nèi)碼(表示一個(gè)漢字)。將ASCII字符個(gè)數(shù)存入RESULT指示的單元,表示漢字的個(gè)數(shù)存入下一個(gè)單元,其后存放原來(lái)20個(gè)字節(jié)的信息。例如:內(nèi)存中有30H,38H,89H,A9H,E0H,97H,61H,4AH結(jié)果為04H,02H,30H,38H,89H,A9H,E0H,97H,61H,4AH部分程序已給出,其中原始數(shù)據(jù)由過(guò)程LOAD從文件INPUT1.DAT中讀入SOURCE開(kāi)始的內(nèi)存單元中。運(yùn)算結(jié)果要求從RESULT開(kāi)始存放,由過(guò)程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標(biāo)出,每行空白一般只需一條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來(lái)完成要求的功能。對(duì)程序必須進(jìn)行匯編,并與IO.OBJ鏈接產(chǎn)生PROG1.EXE執(zhí)行文件,最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(jié)果或結(jié)果不正確者均不得分)。調(diào)試中若發(fā)現(xiàn)整個(gè)程序中存在錯(cuò)誤之處,請(qǐng)加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU20ESC_CODEEQU27STACSEGMENTSTACKDB128DUP(?)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,OFFSETRESULT+2MOVCX,NMOVDX,0;ASCII字符個(gè)數(shù)在DL中,漢字個(gè)數(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 ;結(jié)果數(shù)據(jù)區(qū)首址LEASI.NAMEl ;結(jié)果文件名MOVCX.N+2 ;字節(jié)數(shù)CALLSAVE ;保存結(jié)果到文件RETSTARTENDPCODEENDSENDSTART第十九題:一、請(qǐng)編制程序,其功能是:一故障報(bào)警系統(tǒng)連續(xù)集20個(gè)字節(jié)數(shù)據(jù)存于SOURCE開(kāi)始的內(nèi)存區(qū)域,如果數(shù)據(jù)字節(jié)中有二進(jìn)制位0(0代表有故障),則記錄該數(shù)據(jù)字節(jié)中0的個(gè)數(shù),并按數(shù)據(jù)字節(jié)在前,0的個(gè)數(shù)在后的順序存放到RESULT開(kāi)始的內(nèi)存區(qū)域。例如:內(nèi)存中有: FEH,90H,FFH,DDH…結(jié)果為: FEH,01H,90H,06H,FFH,00H,DDH,02H-部分程序已給出,其中原始數(shù)據(jù)由過(guò)程LOAD從文件INPUT1.DAT中讀入SOURCE開(kāi)始的內(nèi)存單元中。運(yùn)算結(jié)果要求從RESULT開(kāi)始存放,由過(guò)程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標(biāo)出,每行空白一般只需一條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來(lái)完成要求的功能。對(duì)程序必須進(jìn)行匯編,并與IO.OBJ鏈接產(chǎn)生PROG1.EXE執(zhí)行文件,最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(jié)果或結(jié)果不正確者均不得分)。調(diào)試中若發(fā)現(xiàn)整個(gè)程序中存在錯(cuò)誤之處,請(qǐng)加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU20ESC_CODEEQU27STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?)RESULTDBN*2DUP(O)NAMEODB'INPUT1.DAT',0NAME1DB'OUTPUTLDAT',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ù)計(jì)數(shù)器DLMOV[DI],ALMOVex, MOVdu,oLP2:JC_AL,1INCDHLP3:LP2INCDIMOV[DI], JNZ;****end****LEADX,RESULT ;結(jié)果數(shù)據(jù)區(qū)首址LEASI.NAMEl ;結(jié)果文件名MOVCX,N*2 ;字節(jié)數(shù)CALLSAVE ;保存結(jié)果到文件RETSTARTENDPCODEENDSENDSTART第二十題:一、請(qǐng)編制程序,其功能是:有一抄表系統(tǒng)采集的數(shù)據(jù)中包括8位的竊水狀態(tài)字節(jié)(一個(gè)字節(jié)記錄4塊水表狀態(tài)),格式為:D7D6D5D4D3D2DIDOS4S3S2SIX4X3X2XI其中Si,Xi(i=1,2,3,4)分別表示第i塊水表短路和斷路狀態(tài)位,1表示有短路或斷路情況發(fā)生(表示有偷水情況),現(xiàn)共采集了5個(gè)字節(jié)的竊水狀態(tài),如果有竊水情況,則記錄在RESULT中,記錄格式為:表號(hào),狀態(tài),表號(hào),狀態(tài)……沒(méi)有短斷路,則記錄EOH,斷路記錄E1H,短路記錄E2H,如0111曰乩02凡£0吐0311上2乩04乩£(m表示第一塊表斷路,第二塊表無(wú)竊水狀態(tài),第三塊表短路,第四塊表也無(wú)竊水發(fā)生。例如:內(nèi)存中有:83H-結(jié)果為: O1H,E1H,O2H,E1H,03H,E0H,04H,E2H-該內(nèi)存中從SOURCE開(kāi)始有一字符串,其以00H結(jié)束,長(zhǎng)度不超過(guò)100。試編程對(duì)其進(jìn)行壓縮,結(jié)果存入RESULT開(kāi)始的內(nèi)存單元。部分程序已給出,其中原始數(shù)據(jù)由過(guò)程LOAD從文件INPUT1.DAT中讀入SOURCE開(kāi)始的內(nèi)存單元中。運(yùn)算結(jié)果要求從RESULT開(kāi)始存放,由過(guò)程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標(biāo)出,每行空白一般只需一條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來(lái)完成要求的功能。對(duì)程序必須進(jìn)行匯編,并與IO.OBJ鏈接產(chǎn)生PROG1.EXE執(zhí)行文件,最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(jié)果或結(jié)果不正確者均不得分)。調(diào)試中若發(fā)現(xiàn)整個(gè)程序中存在錯(cuò)誤之處,請(qǐng)加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU5ESC_CODEEQU27STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(?)RESULTDBN*8DUP(O)NAMEODB*INPUT1.DAT',0NAME1DB'0UTPUT1.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放水表號(hào)INCBHMOV[DI],BHJCLP1SHRBL,1JCLP2MOVDL,OEOIIJMPLPCOMLPLP:LOOPJMPRET1LP1: SHRBL,1MOVDL, JMPLPCOMLP2: MOVDL,0E2HLPCOM:MOV[DI],DLJMPLPLPRET1:DECDHLPM;****END****LEADX,RESULT;結(jié)果數(shù)據(jù)區(qū)首址LEASLNAMEl;結(jié)果文件名MOVCX,N*2;字節(jié)數(shù)CALLSAVE;保存結(jié)果到文件RETSTARTENDPCODEENDS第二十一題:一、請(qǐng)編制程序,其功能是:以SOURCE開(kāi)始的內(nèi)存區(qū)域存放著若干字節(jié)的數(shù)據(jù),以#作為數(shù)據(jù)的結(jié)束標(biāo)志。將其中的空格濾除,對(duì)每個(gè)非空格數(shù)據(jù)的最高位清0后依次存放到RESULT指示的區(qū)域,其后存放一個(gè)空格符(20H),然后存放原來(lái)的空格個(gè)數(shù),最后仍以#結(jié)束。內(nèi)存中有45H,20H,87H,20H,A5H,32H,20H,20H,20H,23H結(jié)果為45H,07H,25H,32H,20H,05H,23H部分程序已給出,其中原始數(shù)據(jù)由過(guò)程LOAD從文件INPUT1.DAT中讀入SOURCE開(kāi)

始的內(nèi)存單元中。運(yùn)算結(jié)果要求從RESULT開(kāi)始存放,由過(guò)程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標(biāo)出,每行空白一般只需一條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來(lái)完成要求的功能。對(duì)程序必須進(jìn)行匯編,并與IO.OBJ鏈接產(chǎn)生PROG1.EXE執(zhí)行文件,最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(jié)果或結(jié)果不正確者均不得分)。調(diào)試中若發(fā)現(xiàn)整個(gè)程序中存在錯(cuò)誤之處,請(qǐng)加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU20ESC_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,SOURCEMOVDI,OFFSETRESULTXORBL,BLAGNI:MOVAL,[SI]INCSICMPALJ,JEJMPAGN2AGN11:INCBLJMPAGNIAGN2:CMPAL, JEDONEANDAL,7FHMOV[DI],AL

DONE:MOVAL, MOV[DI],ALINCDIMOV[DI],BLINCDIMOVAL,'#'MOV_,AL;****end****LEADX,RESULT;結(jié)果數(shù)據(jù)區(qū)苜址LEASI,NAME1;結(jié)果文件名MOVCX,N;字節(jié)數(shù)CALLSAVE;保存結(jié)果到文件RETSTARTENDPCODEENDSENDSTART第二十二題:一、請(qǐng)編制程序,其功能是:內(nèi)存中連續(xù)存放著9個(gè)ASCII字符(8位二進(jìn)制數(shù)表示,最高位為零),把它們轉(zhuǎn)換成串行通訊中偶校驗(yàn)碼,并計(jì)算9個(gè)偶校驗(yàn)碼的累加碼(累加值的低8位二進(jìn)制數(shù)),將九個(gè)偶校驗(yàn)碼按原序存入內(nèi)存,累加碼存放在此序最后。例如:內(nèi)存中有:37H,38H,39H…結(jié)果為:B7H,B8H,39H…累加碼部分程序已給出,其中原始數(shù)據(jù)由過(guò)程LOAD從文件INPUT1.DAT中讀入SOURCE開(kāi)始的內(nèi)存單元中。運(yùn)算結(jié)果要求從RESULT開(kāi)始存放,由過(guò)程SAVE保存到文件OUTPUT1.DAT中。填空BEGIN和END之間已給出的一段源程序使其完整(空白已用橫線標(biāo)出,每行空白一般只需一條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦可),或刪除BEGIN和END之間原有的代碼并自行編程來(lái)完成要求的功能。對(duì)程序必須進(jìn)行匯編,并與IO.OBJ鏈接產(chǎn)牛PROG1.EXE執(zhí)行文件,最終運(yùn)行程序產(chǎn)生結(jié)果(無(wú)結(jié)果或結(jié)果不正確者均不得分)。調(diào)試中若發(fā)現(xiàn)整個(gè)程序中存在錯(cuò)誤之處,請(qǐng)加以修改。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU10STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDB9DUP(?) ;順序存放9個(gè)ASCII字符RESULTDBNDUP(O) ;存放結(jié)果NAMEODB'INPUTl.DAT',0NAME1DB'0UTPUT1.DAT',0DATAENDSCODESEGMENT

ASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXLEADX,SOURCE;數(shù)據(jù)區(qū)起始地址LEASI,NAMEO;原始數(shù)據(jù)文件名MOVCX,N-l;字節(jié)數(shù)CALLLOAD;從'INPUT1.DAT

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論