版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
PC技術(shù)機(jī)試模擬試卷4(共9套)(共9題)PC技術(shù)機(jī)試模擬試卷第1套一、程序設(shè)計題(本題共1題,每題1.0分,共1分。)1、請編制程序PROG1.ASM,其功能是:對一個由可打印ASCII字符(ASCII碼20H-7FH)組成的字符串可采用下列方法進(jìn)行壓縮:從串首開始向后掃描,如某字符單獨出現(xiàn)則該字符不變,如某字符連續(xù)出現(xiàn)n次,則該字符用ESC(1BH),n,〈原字符〉三個字節(jié)來代替(假定n不超過255)。設(shè)內(nèi)存中從SOURCE開始有一用上述方法壓縮的字符串,其以00H結(jié)束,解壓后長度不超過100。試編程對其解壓縮,結(jié)果存入RESULT開始的內(nèi)存單元。例如:原串:41H,1BH,06H,43H,61H,00H解壓后:41H,43H,43H,43H,43H,43H,43H,61H,00H("ACCCCCCa")部分程序已在PROG1.ASM中給出,請?zhí)羁誃EGIN和END之間已給出的源程序使其完整(空白已用橫線標(biāo)出,每行空白一般只需一條指令,但功能相當(dāng)?shù)亩鄺l指令亦可)或刪除BEGIN和END之間原有的代碼并自行編寫程序片段來完成要求的功能。原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內(nèi)存單元中,結(jié)果要求從RESULT開始存放,由過程SAVE保存到文件OUTPUT1.DAT中。對程序必須進(jìn)行匯編,并與IO.OBI鏈接產(chǎn)生PROG1.EXE執(zhí)行文件,最終運行程序產(chǎn)生結(jié)果(無結(jié)果或結(jié)果不正確者均不得分)。PROG1.ASM文件內(nèi)容如下:EXTRNLOAD:FAR,SAVE:FARNEQU100ESC_CODEEQU27STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCEDBNDUP(0)RESULTDBNDUP(0)NAME0DB’INPUT1.DAT’,0NAME1DB’OUTPUT1.DAT’,0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVES,AX;置附加段寄存器LEADX,SOURCE;數(shù)據(jù)區(qū)起始地址LEASI,NAME0;原始數(shù)據(jù)文件名MOVCX,N;字節(jié)數(shù)CALLLOAD;從’input1.DAT’中讀取數(shù)據(jù);****BEGIN****LEASI,SOURCELEADI,RESULTCLDLO:LODSBCMPAL,0JEQUITCMPAL,ESC_CODE_____EXPAND__________JMPLOEXPAND:__________;解壓XORCX,CX________________________________________JMPLOQUIT:STOSB;STORETHE’00H’;****END****LEADX,RESULT;結(jié)果數(shù)據(jù)區(qū)首址LEASI,NAME1;結(jié)果文件名起始地址MOVCX,N;字節(jié)數(shù)CALLSAVE;保存結(jié)果到’OUTPUT1.DAT’文件中RETSTARTENDPCODEENDSENDSTART標(biāo)準(zhǔn)答案:;****BEGIN****LEASI,SOURCELEADI,RESULTCLDLO:LODSB;從源數(shù)據(jù)區(qū)取一個字節(jié)放入ALCMPAL,0;判斷AL中是否是可打印ASCII字符JEQUIT;若不是,則退出CMPAL,ESC_CODE判斷是否是ESCJZEXPAND;若是,則進(jìn)行解壓MOV[DI],AL;若不是,則保存,接著取下一個字節(jié)INCDIJMPLOEXPAND:MOVAL,[SI];解壓,取出該字符的個數(shù),放入CX中XORCX,CXMOVCL,ALINCSIAGAIN:MOVAL,[SI]MOV[DI],ALINCDILOOPAGAININCSIJMPLOQUIT:STOSB;STORETHE’00H’;****END****輸入數(shù)據(jù)411B0342651B1942431B0344451B2348494A4C1B0C471B0E4D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000輸出結(jié)果:41424242654242424242424242424242424242424242424242424242424243444444454848484848484848484848484848484848484848484848484848484848484848484848494A4C4747474747474747474747474D4D4D4D4D4D4D4D4D4D4D4D4D4D00知識點解析:暫無解析PC技術(shù)機(jī)試模擬試卷第2套一、程序設(shè)計題(本題共1題,每題1.0分,共1分。)1、請編制程序PROG1.ASM,其功能是:對內(nèi)存中連續(xù)存放著20個補(bǔ)碼表示的無符號整數(shù)進(jìn)行從大到小的排序,結(jié)果存放在RESULT開始的內(nèi)存單元中。部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT中讀入SOURCE開始的內(nèi)存單元中。運算結(jié)果要求從RESULT開始存放,由過程SAVE保存到文刊:OUTPUT1.DAT中。請在BEGIN和END之間補(bǔ)充一段源程序,完成要求的功能。對程序必須進(jìn)行匯編,并與IO.OBJ鏈接產(chǎn)生PROG1.EXE執(zhí)行文件,最終運行程序產(chǎn)生結(jié)果(無結(jié)果或結(jié)果不正確者均不得分)。試題程序:EXTRNLOAD:FAR,SAVE:FARNEQU20DSEGSEGMENTSOURCEDWNDUP(?);存放原始數(shù)據(jù)RESULTDWNDUP(0);存放運算結(jié)果NAME0DB’INPUT1.DAT’,0NAME1DB’OUTPUT1.DAT’,0DSEGENDSSSEGSEGMENTSTACKDB128DUP(?)SSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEG,SS:SSEGSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DSEGMOVDS,AXMOVES,AXLEADX,SOURCE;數(shù)據(jù)區(qū)起始地址LEASI,NAMEO;原始數(shù)據(jù)文件名MOVCX.N;字節(jié)數(shù)CALLLOAD;從’INPUT1.DAT中讀取數(shù)據(jù)’;****BEGIN****………………;****END****LEADX,RESULT;結(jié)果數(shù)據(jù)區(qū)首址LEASI,NAME1;結(jié)果文件名MOVCX,N;結(jié)果字節(jié)數(shù)CALLSAVE;保存結(jié)果到文件RETSTARTENDPCSEGENDSENDSTART標(biāo)準(zhǔn)答案:;****BEGIN****MOVDX,NDECDXL1:LEASI,SOURCEMOVCX,DXMOVBX,0L2:MOVAL,[SI]INCSICMPAL,[SI]JAEL3MOVAH,[SI]MOV[SI],ALMOV[SI-1],AHMOVBX,IL3:LOOPL2CMPBX,0JZSTOREDECDXJNZL1STORE:MOVCX,NLEASI,SOURCELEADI,RESULTCLDREPMOVSB;****END****知識點解析:本題可采用冒泡排序算法。對于SOURCE開始的20個內(nèi)存單元中的無符號數(shù),依次將相鄰的兩個數(shù)進(jìn)行比較,每次將較小的數(shù)調(diào)整到后面。經(jīng)過一輪比較后,最小的數(shù)排到第20個位置;再將剩下的19個數(shù)兩兩進(jìn)行比較,排在第19個位置上的數(shù)為次小數(shù);重復(fù)比較共19遍,完成排序操作。PC技術(shù)機(jī)試模擬試卷第3套一、程序設(shè)計題(本題共1題,每題1.0分,共1分。)1、編制一個程序,其功能是:計算內(nèi)存中連續(xù)存放的20個字節(jié)無符號數(shù)據(jù)的相鄰兩個數(shù)據(jù)之間的和,并找出和的最大值,和的最大值存放在結(jié)果的最后一個字單元,和為字?jǐn)?shù)據(jù)。例如:內(nèi)存中有:20H,04H,58H,34H,35H,4DH……,則結(jié)果為:0024H,008CH,0082H……部分程序已經(jīng)給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT.DAT中讀入以SOURCE開始的內(nèi)存單元中。運算結(jié)果要求從RESULT開始的內(nèi)存單元存放,由過程SAVE保存到文件OUTPUT.DAT中。請?zhí)羁誃EGIN和END之間已給出的源程序使其完整,空白已經(jīng)用橫線標(biāo)出,每行空白一般只需要—條指令,但采用功能相當(dāng)?shù)亩鄺l指令也行,考生也可以刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。對程序必須進(jìn)行匯編,并與IO.OBJ鏈接產(chǎn)生可執(zhí)行文件,最終運行程序產(chǎn)生結(jié)果。調(diào)試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改?!驹囶}程序】TRNOAD:FAR,SAVE:FARNEQU10SSEGSEGMENTTACKB256DUP(?)SSEGNDSDSEGEGMENTSOURCEDBN*2DUP(?)RESULTDWN+1DUP(0)NAME0DB’INPUT.DAT’,0NAME1DB’OUTPUT.DAT’,0DSEGDSCSEGEGMENTSSUMECS:CSEG,DS:DSEG,SS:SSEGSTARTPROCFARUSHSORAX,AXUSHXOVAX,DSEGOVDS,AXEADX,SOURCEEASI,NAME0OVCX,N*2ALLGAD;********BEGIN********EASI,SOURCEEADI,RESULTOVCX,NAGAIN0:(1)OVAL,[SI]DDAL,[SI+1]DCAH,0OV[DI],AXDDSI,(2)(3)OOPGAIN0OVBX,N-1OVSI,OFFSETRESULTOVAX,[SI]AGAIN1:ADDSI,2MPAX,[SI](4)OVAX,[SI]NEXT:DECBXNZAGAIN1(5);********END********EADX,RESULTEASI,NAME1OVCX,N+1ALLAVEETSTARTENDPCSEGENDSENDSTART標(biāo)準(zhǔn)答案:(1)MOVAX,0(2)2(3)ADDDI,2(4)JAENEXT(5)MOV[SI+2],AX知識點解析:從程序的整體結(jié)構(gòu)可以看出程序首先進(jìn)行的是求和運算,并將結(jié)果存入從RESULT開始的存儲單元中。求和結(jié)束以后,再求RESULT中數(shù)據(jù)的最大值。第一個循環(huán)AGAIN0用來對SOURCE中相鄰的數(shù)據(jù)求和,并存入RESULT中。為了使上一次的相加結(jié)果不影響后面的運算,需要在每一次進(jìn)入循環(huán)的時候?qū)X寄存器清零,因此第一個空白處應(yīng)該填寫的內(nèi)容為MOVAX,0(或XORAX,AX或SUBAX,AX)。本程序的加法運算過程中,指針的變化要特別注意。由于是對相鄰兩個數(shù)據(jù)進(jìn)行求和,所以盡管SOURCE中的數(shù)據(jù)是字節(jié)類型,但由于一次操作需要使用兩個數(shù)據(jù),所以SI指針的變化每次應(yīng)該是2,也就是說一次加法使用兩個數(shù)據(jù)以后,下一次要從第三個數(shù)據(jù)開始,所以第二個空白處應(yīng)填2。指向RESULT的指針也要變化,由于RESULT是字類型,因此指針的變化也應(yīng)該是2,所以第三個空白處應(yīng)該是DI增加2,即ADDDI,2。尋找最大值采用的算法是逐個比較法,即將存儲單元中的第一個數(shù)取到AX寄存器中,然后逐個與存儲單元的內(nèi)容進(jìn)行比較,如果AX寄存器中的數(shù)據(jù)大,則進(jìn)行下一次比較,否則將存儲單元中的內(nèi)容傳送到AX中,這樣在比較結(jié)束時,AX中的內(nèi)容便是這一組數(shù)中的最大值。在程序中,首先將用米控制循環(huán)次數(shù)的內(nèi)容送到BX寄存器中,然后將存儲單元的偏移地址送到寄存器SI中。將第一個數(shù)據(jù)取入AX寄存器后,便開始比較,顯然第四個空白處應(yīng)該填寫的內(nèi)容是一個跳轉(zhuǎn)語句,從下面MOVAX,[SI]可以知道跳轉(zhuǎn)的條件應(yīng)該是AX中的數(shù)據(jù)大于[SI]中的數(shù)據(jù),所以應(yīng)使用JAE指令。由于需要修改指針并且判斷比較是否結(jié)束,因此應(yīng)該跳轉(zhuǎn)到NEXT處,即第四個空白處的程序是JAENEXT。最后一個語句實現(xiàn)的是將最大值存入RESULT的最后一個存儲單元,由于在比較時,SI已經(jīng)指到了RESULT中的最后一個數(shù)據(jù),所以只需要將指針SI再加2就指向了RESULT的最后一個存儲單元,即第五個空應(yīng)填的內(nèi)容為MOV[SI+2],AX。PC技術(shù)機(jī)試模擬試卷第4套一、程序設(shè)計題(本題共1題,每題1.0分,共1分。)1、編制一個程序,實現(xiàn)如下功能:將內(nèi)存中連續(xù)存放的10個八位二進(jìn)制無符號數(shù)按照從大到小的順序排列。例如:內(nèi)存中有:3EH,0FEH,5DH……(假設(shè)后面的7個數(shù)都小于3EH)結(jié)果為:0FEH,5DH,3EH……(后面跟7個字,按照從大到小的順序排列)。部分程序已經(jīng)給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT.DAT中讀入以SOURCE開始的內(nèi)存單元中。運算結(jié)果要求從RESULT開始的內(nèi)存單元存放,由過程SAVE保存到文件OUTPUT.DAT中。請?zhí)羁誃EGIN和END之間已給出的源程序使其完整,空白已經(jīng)用橫線標(biāo)出,每行空白一般只需要一條指令,但采用功能相當(dāng)?shù)亩鄺l指令也行,考生也可以刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。對程序必須進(jìn)行匯編,并與IO.OBJ鏈接產(chǎn)生可執(zhí)行文件,最終運行程序產(chǎn)生結(jié)果。調(diào)試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改?!驹囶}程序】EXTRNLOAD:FAR,SAVE:FARNEQU10SSEGSEGMENTSTACKDB256DUP(?)SSEGENDSDSEGSEGMENTSOURCEDBNDUP(?)RESULTDBNDUP(0)NAME0DB’INPUT.DAT’,0NAME1DB’OUTPUT.DAT’,0DSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEG,SS:SSEGSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DSEGMOVDS,AXLEADX,SOURCELEASI,NAME0MOVCX,NCALLLOAD;********BEGIN********MOVSI,OFFSETSOURCEMOVDI,OFFSETRESULTMOVCX,NAGAIN0:MOVAX,[SI]MOV[DI],AXADDSI,(1)(2)LOOPAGAIN0CLDMOVBX,N-1AGAIN1:MOVSI,OFFSETRESULTMOVCX,BXAGAIN2:LODSBCMP[SI],AX(3)XCHG[SI],AX(4)NEXT:LOOPAGAIN2(5)JNZAGAIN1;********END********LEADX,RESULTLEASI,NAME1MOVCX,NCALLSAVERETSTARTENDPCSEGENDSENDSTART標(biāo)準(zhǔn)答案:(1)1(2)ADDDI,1(3)JBENEXT(4)MOV[SI-1],AX(5)DECBX知識點解析:本題是一道降序排列題,程序首先是將以SOURCE開始的內(nèi)存單元中的數(shù)據(jù)傳送到RESULT中,利用循環(huán)AGAIN0實現(xiàn)。在循環(huán)中,需要不斷地改變指針,但由于題中的變量為字節(jié)型,因此指針的改變?yōu)?,即第一個空白處應(yīng)填1。指向SOURCE的指針增加1的時候,指向RESULT的指針也應(yīng)該增加1,所以第二個空白處應(yīng)填A(yù)DDDI,1。接下來的程序便是對數(shù)據(jù)進(jìn)行從大到小排列,CLD使指針向著增加的方向移動。在對兩個數(shù)據(jù)進(jìn)行比較后,因為要求從大到小排列,所以小的數(shù)據(jù)要往后移,若后面的數(shù)據(jù)較小,則不需要交換,直接進(jìn)行下一次比較,所以第三個空白處應(yīng)填JBENEXT。若后面的數(shù)據(jù)大,則在進(jìn)行數(shù)據(jù)交換以后需要將大的數(shù)據(jù)裝入前面的存儲單元,因此第四個空白處應(yīng)填MOV[SI-1],AX。每一輪比較后,參加比較的數(shù)據(jù)的較小者都被放到了最后,這樣只需要N-1輪比較就可以得到正確的排序。排序輪次的控制由BX寄存器來實現(xiàn),因此最后一個空白處應(yīng)填DECBX。PC技術(shù)機(jī)試模擬試卷第5套一、程序設(shè)計題(本題共1題,每題1.0分,共1分。)1、編制一個程序,其實現(xiàn)的功能為:將內(nèi)存中從SOURCE開始的區(qū)域里存放的20個字節(jié)的壓縮BCD碼轉(zhuǎn)換為ASCⅡ碼,每個壓縮的BCD碼轉(zhuǎn)換為兩個ASCⅡ碼,并在最高位加上奇校驗位,結(jié)果存放到RESULT開始的內(nèi)存區(qū)域。例如:內(nèi)存中有:73H,45H……則結(jié)果為:37H,B3H,34H,B5H……部分程序已經(jīng)給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT.DAT中讀入以SOURCE開始的內(nèi)存單元中。運算結(jié)果要求從RESULT開始的內(nèi)存單元存放,由過程SAVE保存到文件OUTPUT.DAT中。請?zhí)羁誃EGIN和END之間已給出的源程序使其完整,空白已經(jīng)用橫線標(biāo)出,每行空白一般只需要一條指令,但采用功能相當(dāng)?shù)亩鄺l指令也行,考生也可以刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。對程序必須進(jìn)行匯編,并與IO.OBJ鏈接產(chǎn)生可執(zhí)行文件,最終運行程序產(chǎn)生結(jié)果。調(diào)試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改?!驹囶}程序】EXTRNLOAD:FAR,SAVE:FARNEQU20DSEGSEGMENTSOURCEDBNDUP(?)RESULTDBN*2DUP(0)NAME0DB’INPUT.DAT’,0NAME1DB’OUTPUT.DAT’,0DSEGENDSSSEGSEGMENTSTACKDB256DUP(?)SSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEG,SS:SSEGSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DSEGMOVDS,AXLEADX,SOURCELEASI,NAME0MOVCX,NCALLLOAD;********BEGIN********LEASI,SOURCELEADI,RESULTMOVCX,NAGAIN:MOVAL,[SI]MOVAH,AL(1)ANDAH,0FOH(2)MOVCL,4(3)POPCXADDAL,30H(4)NEXTORAL,80HNEXT:MOV[DI],ALINCDIADDAH,30H(5)NEXT1ORAH,80HNEXT1:MOV[DI],AHINCDIINCSILOOPAGAIN;********END********LEADX,RESULTLEASI,NAME1MOVCX,N*2CALLSAVERETSTARTENDPCSEGENDSENDSTART標(biāo)準(zhǔn)答案:(1)ANDAL,0FH(2)PUSHCX(3)SHRAH,CL(4)JNP(5)JNP知識點解析:題目要求將壓縮的BCD碼轉(zhuǎn)換為兩個ASCⅡ碼,則首先要將BCD碼分離出來,轉(zhuǎn)換為非壓縮的BCD碼,然后轉(zhuǎn)換為ASCⅡ碼。最高位要求加奇校驗位,所以要對轉(zhuǎn)換以后的數(shù)據(jù)進(jìn)行判斷,如果數(shù)據(jù)中1的個數(shù)為奇數(shù)的話,則直接將其存儲到結(jié)果存儲區(qū),否則要將數(shù)據(jù)的最高位變?yōu)?。程序中,已經(jīng)將數(shù)據(jù)的高4位分離到AH寄存器中,所以還需要將低4位的數(shù)據(jù)分離到一個寄存器中,有后面的程序可以看出應(yīng)該分離到AL寄存器中,所以第一個空白處應(yīng)填寫ANDAL,0FH。高4位數(shù)據(jù)分離到AH寄存器以后,需要將數(shù)據(jù)從高4位移到低4位來,變成非組合的BCD碼。由于移動的位數(shù)為4,所以需要使用CL寄存器,而CX寄存器被用來作為程序循環(huán)次數(shù)的控制器,所以需要在使用CL寄存器之前對CX進(jìn)行入棧和出棧操作,即第二個空白處應(yīng)填PUSHCX。第三個空白處執(zhí)行的是右移操作,所以應(yīng)填為SHRAH,CL。執(zhí)行完數(shù)據(jù)分離以后,將非組合的BCD碼轉(zhuǎn)換為ASCⅡ碼,轉(zhuǎn)換的時候只需要將非組合的BCD碼與30H執(zhí)行與操作即可。轉(zhuǎn)換完成后,要在量高位加奇校驗位,即要對轉(zhuǎn)換后數(shù)據(jù)中1的個數(shù)進(jìn)行判斷,所以最后兩個空應(yīng)填JNP,表示當(dāng)數(shù)據(jù)中1的個數(shù)為奇數(shù)時跳轉(zhuǎn)到數(shù)據(jù)存儲的程序段執(zhí)行,否則將數(shù)據(jù)的最高位變?yōu)?,然后再進(jìn)行存儲。PC技術(shù)機(jī)試模擬試卷第6套一、程序設(shè)計題(本題共1題,每題1.0分,共1分。)1、請編制程序,其功能是:從第0行第0列開始,依次取出N階矩陣中對角線上的元素(字節(jié)型)并計算累加和(字型),然后將其存放在指定的內(nèi)存區(qū)中。例如:內(nèi)存中有:01H,01H,01H,02H,02H,02H,03ff,03H,03H結(jié)果為:01H,02H,03H,06H,00H部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT.DAT中讀入SOURCE開始的內(nèi)存單元中,轉(zhuǎn)換結(jié)果要求從RESULT開始存放,由過程SAVE保存到文件OUTPUT.DAT中。請?zhí)羁誃EGIN和END之間已經(jīng)給出的一段源程序使其完整,需填空處已經(jīng)用橫線標(biāo)出,每個空白一般只需要填一條指令或指令的一部分(指令助記符或操作數(shù)),也可以填入功能相當(dāng)?shù)亩鄺l指令,或刪去BEGIN和END之間原有的代碼并自行編程來完成所要求的功能。對程序必須進(jìn)行匯編,并與IO.OBJ鏈接產(chǎn)生可執(zhí)行文件,最終運行程序產(chǎn)生結(jié)果。調(diào)試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。【試題程序】EXTRNLOAD:FAR,SAVE:FARNEQU10DSEGSEGMENTSOURCEDBN*10DUP(?)RESULTDB(N+2)DUP(0)NAME0DB’INPUT.DAT’,0NAME1DB’OUTPUT.DAT’,0DSEGENDSSSEGSEGMENTSTACKDB256DUP(?)SSEGENDSCSEGSEGMENTASSUMECS:CSEG,SS:SSEG,DS:DSEGSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DSEGMOVDS,AXMOVES,AXLEADX,SOURCELEASI,NAME0MOVCX,N*10CALLLOAD********BEGIN********LEADI,RESULTMOVCX,0MOVDH,0;行MOVDL,0;行NEXT:MOVAL,NMUL(1)MOVBX,AXMOVAL,DL(2)MOVSI,AX;列號送SIMOVAL,(3)[BX+SI]MOV[DI],ALADDCL,AL(4)INCDIINCDHINCDLCMPDL,(5)JNENEXTMOV[DI],CX;********END********LEADX,RESULTLEASI,NAME1MOVCX,N+2CALLSAVERETSTARTENDPCSEGENDSENDSTART標(biāo)準(zhǔn)答案:(1)DH(2)MOVAH,0(3)SOURCE(4)ADCCH,0(5)N知識點解析:本題是一道矩陣計算題,解決此類題型除了要注意數(shù)據(jù)范圍、類型等方面的問題,還要對計算方法進(jìn)行比較分析。本題的數(shù)據(jù)范圍在題目中并沒有明確給出,但從程序的數(shù)據(jù)段定義中可以看出,N的取值為10,即本題的程序要求計算的是10階矩陣,10×10=100個字節(jié)數(shù)據(jù),共占100個存儲單元。而需要計算的原始數(shù)據(jù)為字節(jié)數(shù),同時累加運算結(jié)果以字的形式連續(xù)存放在對角線數(shù)據(jù)之后。題目要求首先依次取出矩陣對角線上的元素存放到結(jié)果數(shù)據(jù)區(qū),并累加求和這些數(shù)據(jù)的和,將運算結(jié)果以字?jǐn)?shù)據(jù)的形式保存到對角線元素的后面,由于對角線上的元素有一個特點就是行和列的序號是相同的,因此尋找對角線上的元素就比較容易了。PC技術(shù)機(jī)試模擬試卷第7套一、程序設(shè)計題(本題共1題,每題1.0分,共1分。)1、編制一個程序,其功能為:內(nèi)存中以8位無符號數(shù)形式連續(xù)存放著10個數(shù)據(jù),這數(shù)據(jù)來自于一個自動抄表系統(tǒng)記錄的10個用戶某月天然氣的使用量(立方米),天然氣費計算公式如下(其中,X表示天然氣用量,Y表示應(yīng)交天然氣費):a)Y=X×80X≤6b)Y=X×1206<X≤10c)Y=X×160X>10計算每個用戶需要交的天然氣費,結(jié)果用字表示,并將結(jié)果存入指定單元。例如:用天然氣量:05H,07H,12H……天然氣費:0190H,0348H,0780H……部分程序已經(jīng)給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT.DAT中讀入以SOURCE開始的內(nèi)存單元中。運算結(jié)果要求從RESULT開始的內(nèi)存單元存放,由過程SAVE保存到文件OUTPUT.DAT中。請?zhí)羁誃EGIN和END之間已給出的源程序使其完整,空白已經(jīng)用橫線標(biāo)出,每行空白一般只需要一條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦可,考生也可以刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。對程序必須進(jìn)行匯編,并與IO.OBJ鏈接產(chǎn)生執(zhí)行文件,最終運行程序產(chǎn)生結(jié)果。調(diào)試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。[試題程序]EXTRNLOAD:FAR,SAVE:FARNEQU10DSEGSEGMENTSOURCEDBNDUP(?)RESULTDWNDUP(0)ADB80BDB120CDB160NAME0DB’INPUT.DAT’,0NAME1DB’OUTPUT.DAT’,0DSEGENDSSSEGSECMENTSTACKDB256DUP(?)SSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEG,SS:SSEGSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DSEGMOVDS,AXLEADX,SOURCELEASI,NAME0MOVCX,NCALLLOAD;********BEGIN*********LEASI,SOURCELEADI,RESULTCLDMOVCX,NAGAIN:MOVAL,[SI]CMPAL,6JA(1)(2)JMPNEXTLIMIT6:CMPAL,10JA(3)(4)JMPNEXTLIMIT10:(5)NEXT:MOV[DI],AXINCSIADDDI,2LOOPAGAIN;********END********LEADX,RESULTLEASI,NAME1MOVCX,N*2CALLSAVERETSTARTENDPCSEGENDSENDSTART標(biāo)準(zhǔn)答案:(1)LIMIT6(2)MULA(3)LMIT10(4)MULB(5)MULC知識點解析:本題一個分段函數(shù)的問題,根據(jù)數(shù)據(jù)大小的不同,再采用不同的計算方法求出結(jié)果。其中所需要的一些常量在數(shù)據(jù)段中已經(jīng)進(jìn)行了定義,在程序中直接使用即可。但由于對每個數(shù)據(jù)進(jìn)行處理的算法是相同的,因此用一個循環(huán)即可實現(xiàn)對所有數(shù)據(jù)的處理。另外,由于要分成不同的情況進(jìn)行計算,所以循環(huán)中采用的是分支程序來實現(xiàn)。進(jìn)入循環(huán)以后,將數(shù)據(jù)取入AL中,并將其與6進(jìn)行比較,如果大于6的話就需要進(jìn)行跳轉(zhuǎn),否則將執(zhí)行下面的操作。由于小于6時天然氣費計算的方法是乘以80,因此第二個空白處應(yīng)該填的內(nèi)容是MULA。第一個空白處應(yīng)填跳轉(zhuǎn)到哪條語句繼續(xù)執(zhí)行,有兩個選擇LMIT6或LIMIT10,但由于當(dāng)數(shù)據(jù)大于6的時候,還有一個上限10需要比較,因此跳轉(zhuǎn)的方向應(yīng)該是和10進(jìn)行比較的語句,從程序中可以知道應(yīng)該是LIMIT6。第三個和第四個空白是數(shù)據(jù)和10進(jìn)行比較后所需要的處理,大于10的時候跳轉(zhuǎn),小于10的時候繼續(xù)執(zhí)行。前面已經(jīng)與6進(jìn)行過比較,大于6的數(shù)才執(zhí)行到這里,而數(shù)據(jù)又小于10,因此此時的天然氣費計算方法是乘以120,即第四個空白處應(yīng)填MUlB。由于大于10的時候天然氣費的計算方法為乘以160,因此最后一個空白處的語句是MULC。PC技術(shù)機(jī)試模擬試卷第8套一、程序設(shè)計題(本題共1題,每題1.0分,共1分。)1、編制一個程序,其實現(xiàn)的功能為:內(nèi)存中連續(xù)的10個無符號字節(jié)數(shù),對其執(zhí)行(X×7-5)÷8操作(X為內(nèi)存中的數(shù)據(jù),且X不等于0),將結(jié)果存入指定的內(nèi)存區(qū)中。例如:內(nèi)存中為:4FH,83H,34H…則結(jié)果為:26H,40H,18H…部分程序已經(jīng)給出,原始數(shù)據(jù)由過程LOAD從文件INPUT.DAT中讀入以SOURCE開始的內(nèi)存單元中。運算結(jié)果要求從RESULT開始的內(nèi)存單元存放,由過程SAVE保存到文件OUTPUT.DAT中。請?zhí)羁誃EGIN和END之間已給出的源程序使其完整,空缺處已經(jīng)用橫線標(biāo)出,空缺處一般只需要一條指令,但采用功能相當(dāng)?shù)亩鄺l指令也可以,考生也可以刪除BEGIN和END之間原有的代碼并自行編程來完成要求的功能。對程序必須進(jìn)行匯編,并與IO.OBJ鏈接產(chǎn)生可執(zhí)行文件,最終運行程序產(chǎn)生結(jié)果。調(diào)試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。[試題程序]EXTRNLOAD:FAR,SAVE:FARNEQU10DSEGSEGMENTSOURCEDBNDUP(?)RESULTDBNDUP(0)NAME0DB’INPUT.DAT’,0NAME2DB’OUTPUT.DAT’,0DSEGENDSSSEGSEGMENTSTACKDB256DUP(?)SSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEG,SS:SSEGSTARTPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DSEGMOVDS,AXLEADX,SOURCELEASI,NAME0MOVCX,NCALLLOAD;********BEGIN********LEASI,SOURCELEADI,RESULTMOVBX,NAGAIN:MOVAL,[SI]MOVDX,0MOVDL,ALANDAX,(1)MOVCL,3(2)AX,CL(3)SUBAX,5MOVCL,3(4)AX,CLMOV[DI],ALINCSIINCDIDECBX(5);****+****END********LEADX,RESULTLEASI,NAME1MOVCX,NCALLSAVERETSTARTENDPCSEGENDSENDSTART標(biāo)準(zhǔn)答案:(1)0FFH(2)SHL(3)SUBAX,DX(4)SHR(5)JNZAGAIN知識點解析:由于所有的數(shù)據(jù)都執(zhí)行同樣的操作,因此用一個循環(huán)即可完成要求的功能。程序首先將源數(shù)據(jù)存儲區(qū)SOURCE的偏移地址送到SI,再將結(jié)果存儲區(qū)RESULT的偏移地址送到DI。從已有的程序可以看出,循環(huán)是用BX寄存器宋控制的。需要注意的是;程序中并不是采用乘法或者除法指令來完成表達(dá)式中的乘、除法操作,而采取的是移位指令。程序進(jìn)入循環(huán),首先將數(shù)據(jù)取入AL中,由于需要進(jìn)行乘法操作,所以數(shù)據(jù)有可能超出AL的范圍,進(jìn)入AH中,所以要對AH進(jìn)行清零,這就是第一個空所在語句需要完成的操作。由于采用的是AND指令,因此只需要用立即數(shù)0屏蔽即可,同時第一個空應(yīng)填0FFH。同時,將AL中的內(nèi)容在DX中保存,方便后面程序的使用。第二個空和第三個空所在的語句聯(lián)合起來實現(xiàn)乘以7的操作,由于是乘法操作,所以應(yīng)該采用左移指令,即第二個空白處應(yīng)填SHL。執(zhí)行完SHLAX,CL后,完成的是對AX中內(nèi)容乘以8的操作,還需要對里面的內(nèi)容減去AL才能實現(xiàn)乘以7的操作,乘法完成以后,接下來便進(jìn)行減法與除法操作。所以第三個空白處要填的是SUBAX,DX。減法操作很容易完成,除法操作同樣采用的是移位的方法,由于是對無符號數(shù)進(jìn)行移位,因此要采用邏輯移位指令,即第四個空白處的內(nèi)容應(yīng)填SHR。到此,對一個數(shù)據(jù)的處理已經(jīng)完成,接下來便是指針的修改、循環(huán)的控制以及結(jié)果的存儲。完成這些操作以后,如果還沒有完成所有數(shù)據(jù)的處理,則要進(jìn)行下一次循環(huán),因此最后一個空應(yīng)填JNZAGAIN。PC技術(shù)機(jī)試模擬試卷第9套一、程序設(shè)計題(本題共1題,每題1.0分,共1分。)1、請編制程序PROG1.ASM,其功能是:內(nèi)存中連續(xù)存放著10個十六位二進(jìn)制數(shù),每個數(shù)的序號依次定義為0,1,…9。統(tǒng)計每個數(shù)中位為0的個數(shù)N0,N1,…,N9(均用一個字節(jié)表示),然后按序?qū)0至N9存入內(nèi)存中,最后再用一個字節(jié)表示這10個數(shù)中為0的位的總數(shù)n(n=N0+N1+…+N9)。例如:內(nèi)存中有0000H,000FH,F(xiàn)FFFH,…結(jié)果為10H,0CH,00H,…,最后為n部分程序已
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高中語文統(tǒng)編版(部編版)必修 上冊第六單元12《拿來主義》課堂實錄
- 快手電商2025版網(wǎng)紅直播帶貨合作合同范本3篇
- 2025版民爆物品裝卸作業(yè)安全評估與認(rèn)證合同4篇
- 鄭州美術(shù)學(xué)院《互動光媒與空間》2023-2024學(xué)年第一學(xué)期期末試卷
- 正德職業(yè)技術(shù)學(xué)院《中國古代文學(xué)(2)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年度倉庫倉儲設(shè)施維修與保養(yǎng)合同3篇
- 2025版專業(yè)體驗館消防安裝人工費用結(jié)算合同3篇
- 2024影視制作合同制作內(nèi)容補(bǔ)充協(xié)議
- 2025年度商鋪租賃合同租賃期滿資產(chǎn)返還與驗收標(biāo)準(zhǔn)4篇
- 2025版雙向轉(zhuǎn)診醫(yī)療服務(wù)績效考核合同3篇
- 《電影之創(chuàng)戰(zhàn)紀(jì)》課件
- 社區(qū)醫(yī)療抗菌藥物分級管理方案
- 開題報告-鑄牢中華民族共同體意識的學(xué)校教育研究
- 《醫(yī)院標(biāo)識牌規(guī)劃設(shè)計方案》
- 夜市運營投標(biāo)方案(技術(shù)方案)
- (高清版)DZT 0282-2015 水文地質(zhì)調(diào)查規(guī)范(1:50000)
- 《紅樓夢》禮儀研究
- 會議分組討論主持詞
- 動火作業(yè)審批表
- 新能源汽車火災(zāi)事故處置程序及方法
- 教學(xué)查房及體格檢查評分標(biāo)準(zhǔn)
評論
0/150
提交評論