版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
微機(jī)原理和匯編語言復(fù)習(xí)資料一、選擇題( 30分)1.已知X=76,則[X]補(bǔ)=( )A.76H B.4CH C.0BCH D.0CCH2.已知[X]補(bǔ)=80H,則X=( )A.80H B.0 C.0FFH D.-80H3.已知X=78,Y=-83,則[X+Y]補(bǔ)=( )A.0F5H B.0A1H C.0FBH D.65H4.下列為補(bǔ)碼表示,其中值最大的是( )A.10001000 B.11111111 C.000000000 D.000000015.十六進(jìn)制數(shù) 88H,可以表示成下面幾種形式,請(qǐng)找出 錯(cuò)誤的表示( )A.無符號(hào)十進(jìn)制數(shù) 136 B.帶符號(hào)十進(jìn)制數(shù) -120C.壓縮BCD碼十進(jìn)制數(shù)88 D.8位二進(jìn)制數(shù)-8的補(bǔ)碼6.在微機(jī)系統(tǒng)中分析并控制指令執(zhí)行的部件是( )A.寄存器 B.數(shù)據(jù)寄存器 C.CPU D.EU7.在計(jì)算機(jī)的CPU中執(zhí)行算術(shù)邏輯運(yùn)算的部件是( )A.ALU B.PC C.AL D.AR8.執(zhí)行指令PUSH CX后堆棧指針SP自動(dòng)( )A.+2 B.+1 C.-2 D.-19.在標(biāo)志寄存器中表示溢出的標(biāo)志是( )A.AF B.CF C.OF D.SF10.若計(jì)算機(jī)字長(zhǎng) 16位,則無符號(hào)整數(shù)表示的范圍用十六進(jìn)制表示為( )A.8000H~FFFFH B.0000H~7FFFHC.0000H~FFFFH D.0001H~FFFFH11.設(shè)物理地址( 10FF0H)=10H,(10FF1H)=20H,(10FF2H)=30H,從地址10FF1H中取出一個(gè)字的內(nèi)容是()A.1020HB.3020HC.2030HD.2010H12.某數(shù)據(jù)段存儲(chǔ)單元的偏移地址為2200H~31FFH,則其存儲(chǔ)空間大小是()A.2KB.4KC.8KD.16K13.在8086CPU標(biāo)志寄存器中,ZF=1表示()A.結(jié)果有進(jìn)位B.結(jié)果為0C.結(jié)果溢出D.結(jié)果為負(fù)14.兩個(gè)操作數(shù)運(yùn)算時(shí),下列哪種情況會(huì)發(fā)生溢出()A.兩個(gè)負(fù)數(shù)相加,結(jié)果為負(fù)B.兩個(gè)正數(shù)相加,結(jié)果為負(fù)C.一正一負(fù)相加,結(jié)果為負(fù)D.兩個(gè)正數(shù)相加,結(jié)果為正15.堆棧段的邏輯地址由()組成A.DS:BXB.ES:DIC.CS:IPD.SS:SP16.代碼段某單元的邏輯地址為3458H:2C92H,其物理地址為()A.37212HB.26FF2HC.34580HD.32C92H17.在8086系統(tǒng)中,數(shù)據(jù)寄存器組為()A.SI,DI,SP,BPB.AX,BX,CX,DXC.CS,DS,ES,SSD.CF,SF,ZF,OF18.指令MOVAX,DS:[1000H]中源操作數(shù)的尋址方式是()A.立即尋址B.直接尋址C.寄存器尋址D.基址變址尋址19.指令MOVDX,COUNT[BP][DI]的執(zhí)行結(jié)果是()A.將COUNT的值傳送給DXB.將COUNT+BP+DI的值傳送給DXC.將數(shù)據(jù)段中有效地址為COUNT+BP+DI的存儲(chǔ)單元的值傳送給DXD.將堆棧段中有效地址為COUNT+BP+DI的存儲(chǔ)單元的值傳送給DX20.若(AX)=2530H,(BX)=18E6H,MOV[BX],AL指令正確的執(zhí)行結(jié)果為()A.BX寄存器的值為2530HB.BL寄存器的值為30HC.18E6H單元的值為30HD.18E6H單元的值為2530H121.指令MOVAX,COUNT[BX]完成的操作是()A.從存儲(chǔ)單元讀出一個(gè)字送入AXB.從存儲(chǔ)單元讀出一個(gè)字節(jié)送入AXC.將AX中的一個(gè)字寫入存儲(chǔ)單元D.將AX中的一個(gè)字節(jié)寫入存儲(chǔ)單元22.一條指令中目的操作數(shù)不允許使用的尋址方式是()A.寄存器尋址B.立即尋址C.變址尋址D.寄存器間接尋址23.用直接尋址將AL的內(nèi)容保存到16號(hào)單元,可以用()指令A(yù).MOVDS:[0016H],ALB.MOVAL,DS:[0016H]C.MOVDS:[0010H],ALD.MOVAL,DS:[0010H]23.經(jīng)過匯編產(chǎn)生的二進(jìn)制目標(biāo)文件是()A..ASMB..OBJC..EXED..MAP24.不能用MOV指令賦初值的段寄存器是()A.DSB.ESC.CSD.SS25.在COUNTDB5這條存儲(chǔ)單元定義偽指令中,COUNT稱為()A.助記符B.變量C.符號(hào)D.標(biāo)號(hào)(帶冒號(hào)的)26.將字符串“INPUT”保存到存儲(chǔ)單元MESS,正確的偽指令是()A.INPUTDBMESSB.MESSDBINPUTC.INPUTDB‘MESS’D.MESSDB‘INPUT’27.若X已經(jīng)定義為字型,可以用()改變X為字節(jié)型A.BYTEPTRXB.OFFSETXC.TYPEXD.LABLEX28.INCWORDPTR[BX]指令中的操作數(shù)的數(shù)據(jù)類型是()A.字節(jié)B.字C.雙字D.四字29.ABCDW1,$+2,5,7,其中$代表()A.當(dāng)前的偏移地址值為0B.當(dāng)前的偏移地址值為1C.當(dāng)前的偏移地址值為2D.當(dāng)前的偏移地址值為330.()可用來指出一條匯編指令所在存儲(chǔ)單元的符號(hào)地址A.變量B.數(shù)組名C.標(biāo)號(hào)D.偏移值31.匯編語言中存儲(chǔ)單元的屬性不能是()A.字符CHAR型(無字符型)B.字節(jié)BYTE型C.字WORD型D.雙字DWORD型32.用指令MOVBX,SEGCOUNT可以得到存儲(chǔ)單元COUNT的()A.物理地址B.段地址C.偏移地址D.屬性33.下列指令中,有錯(cuò)誤的是()A.MOVAH,BLB.MOVDS,AXC.MOVCL,DXD.MOVSI,9034.若AX=1E30H,BX=12E4H則ADDAL,BL的執(zhí)行結(jié)果為AL和CF的值是()A.14H,0B.24H,0C.14H,1D.24H,135.若BL=83H,CF=1,則ADCBL,90H執(zhí)行后,AH=()A.14HB.15HC.16HD.17H36.若DX=1010H,BX=0923H,則SUBDX,BX的執(zhí)行結(jié)果為()A.168DHB.06EDHC.F6DDHD.0087H37.從鍵盤輸入一串字符使用DOS功能調(diào)用()A.1號(hào)功能B.2號(hào)功能C.9號(hào)功能D.10號(hào)功能38.DOS功能調(diào)用中,功能號(hào)應(yīng)寫入()寄存器中A.ALB.AHC.DLD.DH39.顯示一個(gè)字符的DOS功能調(diào)用要求將字符放入()A.DS:DXB.DS:BXC.BLD.DL40.獲得BUFFER單元有效地址的匯編指令為()A.MOVBX,BUFFERB.LEABX,BUFFERC.MOVBX,[BUFFER]D.LDSBX,BUFFER41.關(guān)于字節(jié)乘法的指令錯(cuò)誤的說法是()A.被乘數(shù)隱含在AL中B.乘數(shù)和被乘數(shù)都是字節(jié)型C.被乘數(shù)隱含在AX中D.乘積是字型242.關(guān)于字除法錯(cuò)誤的說法是( )A.16位被除數(shù)AX與8位源操作數(shù)相除B.32位被除數(shù)DX:AX與16位源操作數(shù)相除C.商在AX寄存器,余數(shù)在 DX寄存器中D.帶符號(hào)除法的商和余數(shù)都是補(bǔ)碼表示的數(shù)43.在分支指令中,利用符號(hào)進(jìn)行判斷的指令是( )A.JC B.JS C.JZ D.JO44.在執(zhí)行條件轉(zhuǎn)移指令前,不能形成條件的指令是( )A.CMP B.SUB C.AND D.MOV45.在條件轉(zhuǎn)移指令中,結(jié)果不為 0則轉(zhuǎn)移的指令是( )A.JNS B.JZ C.JS D.JNZ46.兩個(gè)帶符號(hào)數(shù)比較,不大于則轉(zhuǎn)移的指令是( )A.JLEB.JBEC.JLD.JAE47.帶符號(hào)數(shù)乘以2的操作可以用()移位指令實(shí)現(xiàn)A.SALAL,1B.SALAL,2C.SHRAL,1D.ROLAL,248.將AL的2、6位屏蔽為0,其余位保持不變,指令為()A.ADNAL,42HB.ANDAL,0BBHC.ORAL,26HD.ADDAL,0FBH49.將AL的第4位置1,其余位不變,指令為()A.ORAL,40HB.ANDAL,40HC.ORAL,10HD.ANDAL,1FH50.將AL清0的指令為()A.ANDAL,ALB.ORAL,0C.XORAL,AL(自身異或)D.XORAL,051.將鍵盤輸入的小寫字母變?yōu)榇髮?,用指令()A.ANDAL,20HB.ANDAL,0DFHC.ORAL,20HD.0RAL,0DFH52.用戶程序中數(shù)據(jù)段的段基址,用()指令給出A.MOVAX,CODEB.MOVCS,CODEC.MOVCS,DATAD.MOVAX,DATAMOVCS,AXMOVDS,CSMOVDS,CSMOVDS,AX53.下列描述錯(cuò)誤的是()A.LOOP指令以CX為循環(huán)控制計(jì)數(shù)器B.LOOPE指令循環(huán)的條件是CX≠0且ZF=0C.LOOPE指令循環(huán)的條件是CX≠0且ZF=1D.LOOPNE指令循環(huán)的條件是CX≠0且ZF=054.串處理操作需要循環(huán)重復(fù)執(zhí)行,()不能出現(xiàn)在串處理指令中A.REPB.REPZC.REPNZD.LOOP55.在串傳送指令中,串的傳送方向由()標(biāo)志位決定A.DFB.CFC.ZFD.OF56.循環(huán)指令LOOP可以實(shí)現(xiàn)()的循環(huán)A.循環(huán)次數(shù)已知B.循環(huán)次數(shù)未知C.循環(huán)次數(shù)累加D.循環(huán)次數(shù)不變57.在多重循環(huán)程序中,從外循環(huán)再次進(jìn)入內(nèi)循環(huán)時(shí),內(nèi)循環(huán)()A.不必考慮B.重新賦值C.置0D.置158.循環(huán)指令的控制條件除CX之外,還可以把標(biāo)志位()作為控制條件A.CFB.SFC.ZFD.OF59.下列指令不能構(gòu)成循環(huán)的是()A.JMPB.JNZC.LOOPD.DECCX60.在串處理指令中,設(shè)置方向標(biāo)志為1的指令是()A.STDB.CLDC.HLTD.CWD61.如果子程序的屬性為FAR,下列說法錯(cuò)誤的是()A.可以段內(nèi)直接調(diào)用B.可以段間間接調(diào)用C.可以段間直接調(diào)用D.只能段間調(diào)用62.在子程序調(diào)用過程中,斷點(diǎn)指的是()A.CALL指令本身B.CALL的下一條指令C.CALL的下一條指令的地址D.子程序名363.執(zhí)行CALLSUB1指令后,完成的操作是()A.將SUB1的偏移地址入棧保護(hù)B.將斷點(diǎn)的偏移地址入棧保護(hù)C.將斷點(diǎn)的偏移地址送IPD.將SUB1的段地址送CS,偏移地址送IP64.子程序的屬性是用()定義的A.CALLB.PROCC.FARD.RET65.執(zhí)行段間返回RET指令時(shí),從堆棧中()A.先彈出斷點(diǎn)的偏移地址,再彈出段基址B.先彈出斷點(diǎn)的段基址,再彈出偏移地址C.彈出斷點(diǎn)的偏移地址D.彈出斷點(diǎn)的段基址66.子程序結(jié)構(gòu)中,保存現(xiàn)場(chǎng)指的是()A.保存CALL指令B.保存斷點(diǎn)的地址C.保存主程序用到的寄存器D.保存子程序用到的寄存器67.CALL和RET指令的用法,正確的說法是()A.CALL和RET指令都對(duì)堆棧操作B.只有CALL指令使用堆棧C.只有RET指令使用堆棧D.CALL和RET指令都不使用堆棧68.CALL和RET指令對(duì)堆棧操作,正確的說法為()A.CALL指令從堆棧中取出子程序的地址B.RET指令從堆棧中取出子程序的地址C.CALL指令從堆棧中取出斷點(diǎn)的地址D.RET指令從堆棧中取出斷點(diǎn)的地址69.執(zhí)行CALLFARPTRSUBR2指令時(shí),正確的說法是()A.先將斷點(diǎn)的段地址入棧,再將偏移地址入棧B.先將斷點(diǎn)的偏移地址入棧,再將段地址入棧C.先將SUBR2的段地址入棧,再將偏移地址入棧D.先將SUBR2的偏移地址入棧,再將段地址入棧70.用CALL指令調(diào)用子程序時(shí),從子程序返回到主程序()A.用JMP指令B.用INT21H指令C.用RET指令D.可以用RET,也可以用JMP71.在用CALL指令實(shí)現(xiàn)子程序嵌套調(diào)用時(shí),子程序的RET指令()A.返回到最初始的調(diào)用程序中B.返回到上一級(jí)調(diào)用程序中C.可以換為JMP指令返回D.可以不用72.子程序參數(shù)傳遞時(shí),用存儲(chǔ)單元傳參方式,()A.只能主程序訪問傳參單元B.只能子程序訪問傳參單元C.主程序和子程序都能訪問傳參單元D.主程序讀傳參單元,子程序?qū)憘鲄卧?3.用寄存器傳參,在子程序做現(xiàn)場(chǎng)保護(hù)時(shí),()A.傳參寄存器必須保存B.傳參寄存器不必保存C.傳參寄存器可以改寫D.根據(jù)情況確定保存與否74.如果在子程序中進(jìn)行了現(xiàn)場(chǎng)保護(hù),那么子程序()A.恢復(fù)現(xiàn)場(chǎng)在RET指令之前B.恢復(fù)現(xiàn)場(chǎng)在RET指令之后C.直接用RET指令返回D.直接用JMP指令返回75.有關(guān)宏的作用,下列說法不正確的是()A.宏可以被多次調(diào)用B.宏調(diào)用時(shí)不用保持?jǐn)帱c(diǎn)C.宏定義體中不可以有標(biāo)號(hào)D.宏展開是匯編程序完成的76.宏調(diào)用是通過()實(shí)現(xiàn)的A.匯編指令B.宏指令C.宏展開D.機(jī)器指令77.宏定義的偽指令是()A.PROC.ENDPB.MACRO.ENDMC.SEGMENTENDSD.STRUCENDS78.宏與子程序的區(qū)別是()A.宏可以被多次調(diào)用B.宏是一段程序C.宏可以實(shí)現(xiàn)參數(shù)傳遞D.宏調(diào)用時(shí)不用返回79.80X86系統(tǒng)中,CPU是通過()獲取硬件可屏蔽中斷發(fā)生的A.INTR引腳B.NMI引腳C.中斷允許標(biāo)志IFD.INTn指令480.CPU對(duì)軟件中斷的處理,下列說法正確的是( )A.中斷允許標(biāo)志 IF必須為1B.通過8255A中斷控制器管理中斷C.不需要得知中斷類型號(hào)D.執(zhí)行INTn指令時(shí)立即轉(zhuǎn)入中斷處理81.在中斷處理系統(tǒng)中,中斷向量指的是( )A.中斷類型號(hào) B.中斷子程序 C.中斷子程序的入口地址 D.中斷源82.有關(guān)中斷向量表的說法正確的是( )中斷向量表就是中斷向量B.中斷向量表中保存的是中斷向量中斷向量表中保存的是中斷類型號(hào)中斷向量表中保存的是中斷子程序83.在80X86中斷系統(tǒng)中,中斷優(yōu)先級(jí)最高的是()A.可屏蔽中斷B.非屏蔽中斷C.內(nèi)部中斷D.單步中斷84.8086系統(tǒng)的中斷向量表位于()A.內(nèi)存的0~255號(hào)字節(jié)單元B.BIOS的ROM中C.硬盤的0~255號(hào)字節(jié)單元D.系統(tǒng)的CMOS中85.當(dāng)硬件中斷發(fā)生時(shí),CPU通過()獲取中斷類型號(hào)A.INTR引腳B.INTn指令C.數(shù)據(jù)總線D.中斷源86.在8086指令系統(tǒng)中,取出中斷向量的指令是()A.MOVAH,35HB.MOVAH,25HC.MOVAH,31HD.MOVAH,4CH87INT21HINT21HINT21HINT21H.編寫中斷子程序時(shí),下列說法錯(cuò)誤的是()A.允許中斷嵌套B.不允許開中斷C.應(yīng)該保護(hù)和恢復(fù)現(xiàn)場(chǎng)D.必須用IRET指令返回88.中斷調(diào)用和子程序調(diào)用過程相同的是()A.保護(hù)斷點(diǎn)B.保存標(biāo)志寄存器C.將IF和TF清零D.中斷源有優(yōu)先級(jí)89.BIOS中斷設(shè)置位置的指令是()A.MOVAH,01HB.MOVAH,02HC.MOVAH,01HD.MOVAH,02HINT10HINT10HINT21HINT21H90.BIOS中斷從鍵盤讀入一個(gè)字符的指令是()A.MOVAH,00HB.MOVAH,01HC.MOVAH,00HD.MOVAH,01HINT10HINT10HINT16HINT21H91.BIOS中斷顯示一個(gè)字符串的指令是()A.MOVAH,0EHB.MOVAH,13HC.MOVAH,02HD.MOVAH,09HINT10HINT10HINT21HINT21H92.DOS中斷讀取系統(tǒng)時(shí)間的指令是()A.MOVAH,1CHB.MOVAH,2CHC.MOVAH,1CHD.MOVAH,2CHINT10HINT16HINT21HINT21H1.P30習(xí)題2.38086/8088系統(tǒng)中存儲(chǔ)器的邏輯地址和物理地址之間有什么關(guān)系?表示的范圍各為多少?答:8086/8088CPU有20根地址線,可以直接尋址1MB的存儲(chǔ)空間,其地址范圍為:0~220-1,用十六進(jìn)制表示是:00000H~FFFFFH,與存儲(chǔ)單元一一對(duì)應(yīng),稱為存儲(chǔ)單元的物理地址。由于8086/8088CPU內(nèi)部寄存器都是16位的,它只能處理16位的二進(jìn)制數(shù)。為了能夠提供20位的物理地址,系統(tǒng)采用了將存儲(chǔ)器分段的方法,具體采用的方法是將1MB存儲(chǔ)空間按64KB的大小分成16個(gè)段,每個(gè)段的起始地址由段寄存器來確定,由指令提供一個(gè)存儲(chǔ)單元相對(duì)于起始地址的16位偏移量。這樣系統(tǒng)就將整個(gè)1MB的存儲(chǔ)空間分為16個(gè)互相不重疊的邏輯段了,每個(gè)段的地址范圍是:0~216,也就是:0000H~FFFFH邏輯地址是在程序中使用的地址,它由段的起始地址和偏移地址(偏移量)兩部分組成(都是16位),邏輯地址的表示為“段地址:偏移地址”。物理地址與邏輯地址的關(guān)系是:物理地址=段地址X16+偏移地址52.P30習(xí)題2.6AX、BX、CX、DX能用來存放偏移地址嗎?哪些可以?哪些不可以?答:這四個(gè)都是通用數(shù)據(jù)寄存器,他們可以以字(16位)的形式訪問(AX、BX、CX、DX),也可以以字節(jié)(8位)形式進(jìn)行訪問(AL、AH、BL、BH、CL、CH、DL、DH)。其中AX稱為累加器,BX稱為基址寄存器,CX稱為計(jì)數(shù)器,DX稱為數(shù)據(jù)寄存器。四個(gè)寄存器中只有 BX可以用來存放偏移地址,其他三個(gè)都不能用于存放偏移地址。3.P30習(xí)題2.128086有哪4種邏輯段?各邏輯段分別是什么用途?答:8086為了達(dá)到尋找 1MB的目的,將1MB的空間分成64K大小的邏輯段,在 8086CPU內(nèi)有四個(gè)寄存器:CS、DS、SS、ES,分別用來存放代碼段、數(shù)據(jù)段、堆棧段和附加段的段基址。代碼段用來存放程序的指令序列。數(shù)據(jù)段用于存儲(chǔ)程序運(yùn)行所需要的各種原始數(shù)據(jù)、中間結(jié)果和最后結(jié)果。堆棧段是按“后進(jìn)先出、先進(jìn)后出”原則組織的一段特殊的存儲(chǔ)區(qū)域,計(jì)算機(jī)在進(jìn)行子程序調(diào)用和中斷時(shí),都會(huì)用到堆棧段。附加段的作用與數(shù)據(jù)段基本相同,也用來保存數(shù)據(jù)。4.P96習(xí)題3.18086指令系統(tǒng)可以處理哪些數(shù)據(jù)類型?答:8086指令系統(tǒng)可以處理的數(shù)據(jù),按照存放的位置不同可以分為:寄存器中的數(shù)據(jù)、內(nèi)存中數(shù)據(jù)和I/O端口的數(shù)據(jù);按照數(shù)據(jù)的長(zhǎng)度不同可以處理:8位和16位的二進(jìn)制數(shù);按照存儲(chǔ)大小不同可以處理:字節(jié)類型和字類型的數(shù)據(jù)。5.P167習(xí)題5.6請(qǐng)說明堆棧段的作用,在程序中是否一定要定義堆棧段,如果定義的話用什么方法定義,請(qǐng)舉例說明。答:堆棧段是一個(gè)特殊的段, 在程序中可以定義它,也可以不定義它。除了要生成 COM型執(zhí)行文件的源程序,一個(gè)完整的源程序一般最好定義堆棧段。如果在程序中不定義堆棧段,那么,操作系統(tǒng)在裝入該執(zhí)行程序時(shí)將自動(dòng)為其指定一個(gè) 64KB的堆棧段。在源程序中定義堆棧段的方法有 2種:方法1:STACK1 SEGMENTDB 256 DUP(?)TOP LABLE WORDSTACK1 ENDS方法2:STACK1 SEGMENTSTACKDB 256 DUP(?)STACK1 ENDS在方法1中定義之后必須在代碼段中的 ASSUME語句中包含: SS:STACK1,而方法2就不用在ASSUME語句中進(jìn)行說明。6.P185習(xí)題6.7在子程序中常用的參數(shù)傳遞方法有哪些?答:參數(shù)傳遞必須事先約定,子程序根據(jù)約定從存儲(chǔ)器或存儲(chǔ)單元取原始數(shù)據(jù)(入口參數(shù)) ,進(jìn)行處理后將處理結(jié)果(出口參數(shù))送到約定的寄存器或存儲(chǔ)單元,返回主程序。子程序調(diào)用時(shí)常用的參數(shù)傳遞方法有三種:1、用寄存器傳遞:適用于參數(shù)傳遞較少的情況,傳遞速度快;2、通過地址表傳送參數(shù)地址:適用于參數(shù)較多的情況,但傳遞速度較慢;3、用堆棧傳遞:適用于傳遞參數(shù)較多,存在嵌套或遞歸調(diào)用的情況。67.P185習(xí)題6.4CALL的主要區(qū)別。簡(jiǎn)述段內(nèi)和段間子程序調(diào)用指令答:CALL指令有兩種格式,分別用于段內(nèi)和段間子程序的調(diào)用。1、段內(nèi)調(diào)用的格式是:CALLNEARPTR子程序名(或CALL子程序名)指令執(zhí)行的操作:返址(返回的地址,也稱斷點(diǎn))入棧:(SP)←(SP)-2;((SP)+1,(SP))←(IP)轉(zhuǎn)子程序:(IP)←(IP)+16位偏移地址(偏移量)2、段間調(diào)用的格式是: CALL FAR PTR子程序名指令執(zhí)行的操作:返址(返回的地址,也稱斷點(diǎn))入棧:(SP)←(SP)-2;((SP)+1,(SP))←(CS)(SP)←(SP)-2;((SP)+1,(SP))←(IP)轉(zhuǎn)子程序:(IP)←子程序入口地址的偏移地址(CS)←子程序入口地址的段基址從上面兩種調(diào)用可以看出,段內(nèi)調(diào)用不需要把CS的值保存到棧區(qū),因?yàn)樽映绦蚝椭鞒绦蛟谕粋€(gè)段內(nèi);而段間調(diào)用要把CS和IP同時(shí)保存到棧區(qū),以便子程序返回時(shí)能夠根據(jù)CS和IP的值準(zhǔn)確地計(jì)算出斷點(diǎn)的地址值。P215習(xí)題8.3什么是中斷?中斷向量表有什么作用?答:中斷是一種CPU中止正在執(zhí)行的程序而轉(zhuǎn)去處理特殊事件的操作。這些引起中斷的事件稱為中斷源,中斷處理過程一般包括:中斷請(qǐng)求、中斷響應(yīng)、中斷處理和中斷返回四個(gè)步驟。中斷向量表是中斷服務(wù)程序入口地址的偏移值和段基址,一個(gè)中斷向量占4個(gè)字節(jié)空間,它是中斷源的識(shí)別標(biāo)志,可用來形成相應(yīng)的中斷服務(wù)程序的入口地址或存放中斷服務(wù)程序的首地址。四、填空題(20分)1.P146:例5.7已知某班學(xué)生的計(jì)算機(jī)成績(jī)按學(xué)號(hào)從1開始按小到大的順序排列在TAB表中,假定要查詢的學(xué)生的學(xué)號(hào)放在變量NO中,請(qǐng)將查詢的學(xué)生成績(jī)放在ENGLISH中,程序如下:INCLUDEPRINT.ASMDATASSEGMENTTABDB80,85,86,71,79,96NODB83,56,32,66,78,84DW8ENGLISHDB?DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASSTART:MOVAX,DATASMOVDS,AXMOVBX,OFFSETTABMOVAX,NOADDBX,AXDECBXMOVAL,[BX]MOVCOMPUTER,ALOUTDBCOMPUTERMOVAH,4CHINT21HCODESENDSENDSTART72.P151:例5.12設(shè)有3個(gè)單字節(jié)無符號(hào)數(shù)存放在 BUFFER開始的緩沖區(qū)中,程序如下:DATASSEGMENTBUFFERDB87,34,123DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASSTART:MOVAX,DATASMOVDS,AXMOVSI,OFFSETBUFFERMOVAL,[SI]MOVBL,[SI+1]MOVCL,[SI+2]CMPAL,BLJAENEXT1XCHGAL,BLNEXT1:CMPAL,CLJAENEXT2XCHGAL,CLNEXT2:CMPBL,CLJAENEXT3XCHGBL,CLNEXT3:MOV[SI],ALMOV[SI+1],BLMOV[SI+2],CLOUTDBALOUTDBBLOUTDBCLMOVAH,4CHINT21HCODESENDSENDSTART3.P160:例5.19已知有兩個(gè)5個(gè)字節(jié)的數(shù)分別放在 DA1、DA2為首地址的內(nèi)存區(qū)中,分別求出它們的和放在 DA3為首地址的內(nèi)存中,程序如下:INCLUDEPRINT.ASMDATASSEGMENTDA1DB10,20,30,40,50DA2DB1,2,3,4,5DA3DB?,?,?,?,?DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASSTART:MOVAX,DATASMOVDS,AXMOVAX,0CLCMOVCX,5MOVBX,OFFSETDA1MOVSI,OFFSETDA2MOVDI,OFFSETDA3LP:MOVAL,[BX]ADCAL,[SI]MOV[DI],ALOUTDBALINCBXINCSIINCDILOOPLPMOVAH,4CHINT21HCODESENDSENDSTART84.P161:例5.20在以BUF為首地址的內(nèi)存區(qū)域中存放著一批帶符號(hào)的 8位二進(jìn)制數(shù),這批數(shù)據(jù)以 0作為結(jié)束符號(hào)。以下程序是統(tǒng)計(jì)該批數(shù)據(jù)中有多少個(gè)正數(shù),并把結(jié)果存放在 RESULT單元:INCLUDEPRINT.ASMDATASSEGMENTBUFDB10,20,-30,40,-50,44,0RESULTDW?DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASSTART:MOVAX,DATASMOVDS,AXXORCX,CXLEABX,BUFL1:MOVAL,[BX]INCBXORAL,ALJZEXITINCCXJMPL1EXIT:MOVRESULT,CXOUTDWCXMOVAH,4CHINT21HCODESENDSENDSTART5.P165:例5.23設(shè)有一個(gè)首地址為 ARRAY的n字?jǐn)?shù)組,試編制程序使該數(shù)組中的數(shù)按從小到大的次序排列。(和編程題第 4題相同)6.P175:例6.3主程序MAIN和過程PROADD在同一個(gè)源文件中,要求用國(guó)產(chǎn)PROADD累加數(shù)組中的所有元素,并把和送到指定的存儲(chǔ)單元,程序如下:INCLUDEPRINT.ASMPROG_SEGSEGMENTORG100HASSUMECS:PROG_SEG,DS:PROG_SEG,SS:PROG_SEGMAINPROCNEARMOVAX,PROG_SEGMOVDS,AXMOVTABLE,OFFSETARYMOVTABLE+2,OFFSETCOUNTMOVTABLE+4,OFFSETSUMMOVBX,OFFSETTABLECALLPROADDLL:MOVCX,100MOVBX,OFFSETARYMOVAX,[BX]OUTDWAXINCBXINCBXLOOPLLMOVAX,4C00HINT21HMAINENDPNEARPROADDPROCPUSHAXPUSHCXPUSHSIPUSHDIMOVSI,[BX]MOVDI,[BX+2]MOVCX,[DI]9MOVDI,[BX+4]XORAX,AXNEXT:AX,[SI]ADDADDSI,2LOOPNEXTMOV[DI],AXPOPDIPOPSIPOPCXPOPAXRETENDPPROADDARYDW100DUP(1)COUNTDW100SUMDW?TABLEDW3DUP(?)PROG_SEG ENDSENDMAIN7.P180:例6.7將0-65535之間的任意一個(gè)十進(jìn)制數(shù)(ASCII碼形式)轉(zhuǎn)換成十六進(jìn)制數(shù)的子程序如下:DTHPROCFARPUSHFPUSHDIPUSHCXSUBDI,DIMOVCX,1ATBLOOP:MOVAL,[SI+BX]ANDAL,0FHSUBAH,AHMULCXADDDI,AXMOVAX,CXDECBXJNSATBLOOPMOVAX,DIPOPCXPOPDIPOPFRETDTHENDP8.P227:例9.9在屏幕中心顯示小窗口(用 2號(hào)、6號(hào)功能調(diào)用)的程序如下:DATASSEGMENTESC_KEYEQU1BHWIN_ULCEQU30WIN_ULREQU8WIN_LRCEQU50WIN_LRREQU16WIN_WIDTHEQU20DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASSTART:MOVAX,DATASMOVDS,AXMOVAH,2MOVDH,WIN_LRRMOVDL,WIN_ULCMOVBH,0INT10HMOVCX,WIN_WIDTHGET_CHAR:MOVAH,1INT21HCMPAL,ESC_KEYJZEXIT10LOOPGET_CHARMOVAH,6MOVAL,1MOVCH,WIN_ULRMOVCL,WIN_ULCMOVDH,WIN_LRRMOVDL,WIN_LRCMOVBH,7INT10HJMPSTARTEXIT:MOVAH,4CHINT21HCODESENDSENDSTART五、編程題( 30分)1.設(shè)計(jì)一個(gè)分支程序,實(shí)現(xiàn)下列公式計(jì)算。 X、Y為字型。假設(shè)X單元中保存三個(gè)數(shù): 9,-6,34,分別作判斷和計(jì)算。X2 X<0Y={ 2X+3 0≤X≤10X/6 X>102.編寫一個(gè)程序,要求從鍵盤輸入一串字符,如果是數(shù)字存入 NUMB單元,如果是字母,將大寫字母存入CAPI單元,小寫字母存入 LETT單元,分別統(tǒng)計(jì)個(gè)數(shù),輸入回車時(shí)退出。INCLUDEPRINT.ASMDATASSEGMENTNUMBDB20 DUP(?) ;存放數(shù)字CAPI DB20 DUP(?) ;存放大寫字母LETT DB20 DUP(?) ;存放小寫字母DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASSTART:MOVAX,DATASMOVDS,AXMOVBP,0LET0:MOVAH,1INT21HCMPAL,0DHJZEXITTESTAL,40HJZLET1TESTAL,20HJZLET2MOVLETT[BX],ALINCBXJMPLET0LET2:CMPAL,5AHJAEXITMOVCAPI[SI],ALINCSIJMPLET0LET1:CMPAL,'0'JBEXITCMPAL,'9'JAEXIT11MOVNUMB[DI],ALINCDIJMPLET0EXIT:MOVDL,0AH;輸出一個(gè)換行MOVAH,2INT21HOUTDWDI ;數(shù)字OUTDWBX ;小寫字母OUTDWSI ;大寫字母MOVAH,4CHINT21HCODESENDSENDSTART編寫程序比較兩個(gè)字符串BUNCH1和BUNCH2是否相同,相同輸出Y,不相同輸出N。DATASSEGMENTBUNCH1DB'STUDEnT'BUNCH2DB'STUDENT'DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASSTART:MOVAX,DATASMOVDS,AXMOVES,AXLEASI,BUNCH1LEADI,BUNCH2CLDMOVCX,7L1:MOVAL,[SI]CMPAL,[DI]JNZLET1INCSIINCDILOOPL1MOVDL,'Y'JMPPRINTLET1:MOVDL,'N'PRINT:MOVAH,2HINT21HMOVAH,4CHINT21HCODESENDSENDSTART編寫一個(gè)程序?qū)⒆謹(jǐn)?shù)組PART的值按升序排序。(數(shù)據(jù)個(gè)數(shù)和具體值自己設(shè)定)INCLUDEPRINT.ASMDATASSEGMENTPART DW45,23,52,37,78,2,94,17SIGN DW?DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASSTART:MOVAX,DATASMOVDS,AXMOVCX,SIGN-ARR12SHRCX,1DECCXLOOP1:PUSHCXMOVBX,0LOOP2:MOVAX,PART[BX]CMPAX,PART[BX+2]JLENEXTXCHGAX,PART[BX+2]MOVPART[BX],AXNEXT:ADDBX,2LOOPLOOP2POPCXLOOPLOOP1PRINT:MOVCX,SIGN-PARTSHRCX,1DECCXMOVDI, OFFSETPARTLL:MOVAX,[DI]OUTDWAXADDDI,2LOOPLLMOVAH,4CHINT21HCODESENDSENDSTART編寫一個(gè)子程序計(jì)算數(shù)組中正數(shù)和,并用主程序調(diào)用子程序的方法將數(shù)組ARRAY1和ARRAY2中的正數(shù)累加和分別放入TOTAL1和TOTAL2中。INCLUDEPRINT.ASMDATASSEGMENTARRAY1DW3,-2,5,8,7ARRAY2DW4,1, -5,6,2TOTAL1 DW?TOTAL2 DW?DW
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年質(zhì)量員(設(shè)備安裝)專業(yè)技能復(fù)習(xí)題庫及答案(二)
- 2025年消防系統(tǒng)改造項(xiàng)目施工合同范本5篇
- 2024系統(tǒng)安裝合同范本
- 2025年電子元器件銷售合同補(bǔ)充協(xié)議書2篇
- 非洲基站施工方案
- 林業(yè)防鼠滅鼠施工方案
- 二零二五版小型家用發(fā)電機(jī)安全使用指南與心得分享合同3篇
- 二零二五年度水產(chǎn)養(yǎng)殖害蟲防治與養(yǎng)殖環(huán)境合同4篇
- 黨課廉政黨課課件
- 2025年度法律服務(wù)代理委托授權(quán)書3篇
- 2023年上海英語高考卷及答案完整版
- 西北農(nóng)林科技大學(xué)高等數(shù)學(xué)期末考試試卷(含答案)
- 金紅葉紙業(yè)簡(jiǎn)介-2 -紙品及產(chǎn)品知識(shí)
- 《連鎖經(jīng)營(yíng)管理》課程教學(xué)大綱
- 《畢淑敏文集》電子書
- 頸椎JOA評(píng)分 表格
- 員工崗位能力評(píng)價(jià)標(biāo)準(zhǔn)
- 定量分析方法-課件
- 朱曦編著設(shè)計(jì)形態(tài)知識(shí)點(diǎn)
- 110kV變電站工程預(yù)算1
- 某系統(tǒng)安全安全保護(hù)設(shè)施設(shè)計(jì)實(shí)施方案
評(píng)論
0/150
提交評(píng)論