版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
習(xí)題11-1.解釋下列名詞或術(shù)語:機(jī)器語言:由二進(jìn)制代碼構(gòu)成指令及編程的語法規(guī)則.匯編語言:匯編指令、偽指令及編程的語法規(guī)則統(tǒng)稱匯編語言。匯編程序:將匯編語言源程序翻譯成機(jī)器語言程序的程序。目的程序:源程序通過匯編以后生成的機(jī)器語言程序。匯編語言源程序:為解決某個問題,用匯編語言編寫的程序。連接程序:將目的程序轉(zhuǎn)換成可執(zhí)行文件的程序。1-2.說明二進(jìn)制位(bit),字節(jié)(Byte),字(word),雙字(Doubleword)的含義及相互之間的關(guān)系.二進(jìn)制位:表示信息的最小單位,只有“0”或“1”兩個取值。常用“b”表示。字節(jié):由8個二進(jìn)制位組成,占內(nèi)存一個單元地址,常用“B”表示。字:由兩個字節(jié)組成,占內(nèi)存兩個單元地址,一般低字節(jié)占低地址,高字節(jié)占高地址。常用“W”表示。雙字:由兩個字,即4個字節(jié)組成,一般低字占低地址,高字占高地址。常用“DW”表示。1-3.把下列二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù):(1)1110.01(2)101111.101(3)11100010(4)1011010(1)14.25D(2)47.625D(3)226D(4)90D1-4把下列十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)和十六進(jìn)制數(shù):(1)92.5(2)127.625(3)131.375(4)206(1)1011100.1B;5C.8H(2)1111111.101B;7F.AH(3)10000011.011B;83.6H(4)11001110B;0CEH1-5把下列二進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù):(1)100001011.01011=10B.58H(2)11111011001.01=7D9.4H(3)110001101.1=18D.8H(4)101000001001.011=0A09.6H1-6把下列十六進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù):(1)2F5(2)80E(3)4AB(4)7F01(1)1011110101B(2)100000001110B(3)10010101011B(4)111111100000001B1-7完成下列二進(jìn)制數(shù)的加減運(yùn)算:(1)10101010+01011100(2)10110011-11010101(3)11101110+01000100(4)11100101-10011011(1)00000110B(2)11011110B(3)00110010B(4)01001010B1-8完成下列十六進(jìn)制數(shù)的加減運(yùn)算:(1)3670+6DF6(2)OFEA9-0516(3)1A5F+8808(4)3A5D-4051(1)0A466H(2)0F993H(3)0A267H(4)0FA0CH1-9當(dāng)字長為8位時,寫出下列各數(shù)的原碼和補(bǔ)碼,并用十六進(jìn)制表示:(1)18(2)-18(3)63(4)-63(1)(18)原碼=(18)補(bǔ)碼=12H(2)(-18)原碼=92H(-18)補(bǔ)碼=0EEH(3)(63)原碼=(63)補(bǔ)碼=3FH(4)(-63)原碼=0BFH(-63)補(bǔ)碼=0C1H1-10用補(bǔ)碼運(yùn)算完成下列算式,并指出運(yùn)算結(jié)果是否產(chǎn)生溢出:(1)65H+71H(2)-29H-F5H(3)25H+31H(4)54H-2FH(1)運(yùn)算結(jié)果:0D6H,發(fā)生正溢出,結(jié)果不正確。(2)運(yùn)算結(jié)果:0E2H,未發(fā)生溢出,結(jié)果正確。(3)運(yùn)算結(jié)果:56H,未發(fā)生溢出,結(jié)果正確。(4)運(yùn)算結(jié)果:25H,未發(fā)生溢出,結(jié)果正確。1-11把下列各組二進(jìn)制數(shù)分別進(jìn)行”與”運(yùn)算,”或”運(yùn)算,和”異或”運(yùn)算:(1)0DAH和99H(2)0DFH和5AH(3)OFFH和95H(4)25H和38H(1)98H;0DBH;23H(2)50H;0FAH;0AAH(3)95H;FFH;6AH;(4)20H;3DH;1DH習(xí)題22-18086/8088微處理器中包括哪3組寄存器?試分別說明這些寄存器的功能。答:8086/8088微處理器中包括通用寄存器、控制寄存器<又稱特殊功能寄存器>和段寄存器三組寄存器。其中通用寄存器包括AX,BX,CX和DX4個數(shù)據(jù)寄存器,它們還可以分解成2個8位寄存器。通用寄存器還包括BP、SP、SI和DI4個寄存器,它們只能用作16位寄存器,它們常用作地址指針和變址寄存器,也可作通用寄存器使用。控制寄存器包括指令指針I(yè)P和程序狀態(tài)字寄存器PSW,其中IP用于存放在代碼段即將取出的下一條指令的偏移地址,用于取指令操作所使用的寄存器,其中PSW用于存放狀態(tài)標(biāo)志和控制標(biāo)志。段寄存器包括CS、DS、ES和SS4個段寄存器,它們分別稱作代碼段、數(shù)據(jù)段、附加段和堆棧段寄存器,它們分別用于存放代碼段、數(shù)據(jù)段、附加段和堆棧段的段基址,實(shí)現(xiàn)把內(nèi)存分段。2-28086/8088CPU在功能結(jié)構(gòu)上分為哪兩個大的功能部件?試述這兩個部件的作用是什么?答:8086/8088CPU內(nèi)部分為BIU<總線接口單元>和EU<指令執(zhí)行單元>兩大功能部件。BIU的功能是:完成CPU的全部總線操作,即按照EU提供的偏移地址到內(nèi)存取操作數(shù),按照IP提供的偏移地址到內(nèi)存代碼段取指令等。EU的功能:完成指令操作碼部分所規(guī)定的操作,如做加法、減法或傳送等操作。程序狀態(tài)字寄存器PSW中有哪兩種標(biāo)志位?這些標(biāo)志位的含義是什么?答:PSW中有條件標(biāo)志和控制標(biāo)志兩種標(biāo)志。其中條件標(biāo)志包括:1)CF:進(jìn)/借為標(biāo)志2)2F:零標(biāo)志3)SF:符號標(biāo)志4)OF:溢出標(biāo)志5)AF:輔助進(jìn)/借位標(biāo)志6)PF:奇偶標(biāo)志;其中控制標(biāo)志包括:1)DF:方向控制標(biāo)志2)IF:可屏蔽中斷允許標(biāo)志3)TF:單步中斷允許標(biāo)志2-4什么是邏輯地址和物理地址?已知邏輯地址,如何計算物理地址?答:編程時使用的地址稱邏輯地址,它包括段地址和偏移地址兩部分。實(shí)際訪問內(nèi)存時使用的地址稱物理地址。物理地址和邏輯地址的關(guān)系如下:物理地址=段基址*10H+偏移地址(20位)(16位)(16位)2-5段地址和偏移地址如下所示,請分別計算它們的物理地址:(1)2010H:0102H(2)5000H:2100H(3)3217H:0E0FH(4)10E0H:0002H答案:(1)20202H(2)52100H(3)32F7FH(4)10E02H2-68086/8088CPU數(shù)據(jù)總線16位,地址總線20位,其尋址空間有多大?試用十六進(jìn)制數(shù)表示該CPU的尋址范圍。答:其尋址空間為1MB,其尋址范圍為:00000H----FFFFFH2-7什么叫尋址方式?8086/8088系統(tǒng)中關(guān)于操作數(shù)的尋址方式有哪幾種?答:按照指令操作數(shù)字段的代碼尋找操作數(shù)的方法稱尋址方式。8086/8088系統(tǒng)中關(guān)于操作數(shù)的尋址方式,最基本的有7種:1)立即數(shù)尋址;2)寄存器尋址;3)直接尋址;4)寄存器間接尋址;5)寄存器相對尋址;6)基址變址尋址;7)相對基址變址尋址。另外還有隱含尋址、串尋址、端口尋址等尋址方式。2-8指出能用于寄存器間接尋址的寄存器有哪些?它們通常與哪個段寄存器配合形成物理地址?答:能用于寄存器間接尋址的寄存器有BX、BP、SI和DI。其中BX、SI和DI通常與DS配合形成物理地址,BP通常與SS配合形成物理地址;在串操作中,SI通常與DS配合形成物理地址,DI通常與ES配合形成物理地址。2-9指出下列指令中源操作數(shù)和目的操作數(shù)的尋址方式,如果是內(nèi)存型,還要寫出段地址和偏移地址計算式.(設(shè):Va,Vb,Vc是在DS段定義的字節(jié)型變量;Vx,Vy,Vz是在ES段定義的字型變量)(1)MOV[BX],AX(2)MOVAH,[Va](3)MOVAX,[BP+Vx](4)MOVAX,[BX+SI](5)MOVAH,[BX+DI+Vb](6)MOV[Vx],AX]答案如下:題號源操作數(shù)目的操作數(shù)段地址偏移地址(1)寄存器尋址寄存器間接尋址DSBX(2)寄存器間接尋址寄存器尋址DSVa(3)寄存器相對尋址寄存器尋址ESBP+Vx(4)基址變址尋址寄存器尋址DSBX+SI(5)基址變址相對尋址寄存器尋址DSBX+DI+Vb(6)寄存器尋址直接尋址ESVx2-10設(shè)DS=2000H,ES=3000H,SS=4000H,SI=0020H,BX=0100H,BP=0010H,變量Va的缺省段為DS,為字節(jié)型變量,對應(yīng)偏移地址為0050H,指出下列指令中源操作數(shù)的尋址方式,對內(nèi)存操作數(shù)計算出物理地址。(1)MOVCH,[BX](2)MOVAH,SS:[Va](3)MOVAX,ES:[BX](4)MOVAX,[BX+SI](5)MOVAX,[BP+SI](6)MOVAH,[BX+SI+Va](7)MOVAH,[BX+Va](8)MOVAH,ES:[BP+Va]答案如下表:題號源操作數(shù)物理地址(1)寄存器間接尋址DS*10H+BX=20100H(2)直接尋址SS*10H+Va=40050H(3)寄存器間接尋址ES*10H+BX=30100H(4)基址變址尋址DS*10H+BX+SI=20120H(5)基址變址尋址SS*10H+BP+SI=40030H(6)基址變址相對尋址DS*10H+BX+SI+Va=20170H(7)寄存器相對尋址DS*10H+BX+Va=20150H(8)寄存器相對尋址ES*10H+BP+Va=30060H習(xí)題33-1編寫完整程序,把從鍵盤讀入的一個小寫字母轉(zhuǎn)換成相應(yīng)的大寫字母,并在屏幕上輸出。答案:源程序代碼如下:CodesegmentAssumecs:codeSTAR:MOVAH,1 INT21H MOVDL,AL SUBDL,20H MOVAH,2 INT21HMOVAH,4CHINT21HCodeends EndSTAR3-2編寫程序,從鍵盤讀入一個符號,如果它的ASCII值是偶數(shù)則在屏幕輸出0,是奇數(shù)則在屏幕輸出1.[提示:輸出符號的ASCII值除以2的余數(shù)]。答案:源程序代碼如下:CodesegmentAssumecs:codeSTAR:MOVAH,1 INT21H MOVAH,0 MOVBH,2 DIVBH ADDAH,30H MOVDL,AH MOVAH,2 INT21H MOVAH,4CH INT21HCodeendsEndSTAR3-3編寫一個程序段,把AH中的高4位與低4位交換位置。答案:程序段如下:MOVAL,AHMOVAH,0MOVBH,16DIVBHADDAH,AL3-4設(shè)AX=1234H,BX=5678H,寫出以下指令:SUBAX.BXCMPAX,BX分別執(zhí)行后,AX寄存器的值及程序狀態(tài)字PSW受影響的位狀態(tài)。答案:執(zhí)行SUBAX,BX指令后,AX的值為0BBBCH,發(fā)生了改變;而執(zhí)行CMPAX,BX指令后,AX的值不變。程序狀態(tài)字PSW各位置位情況相同:CF=1,SF=1,OF=0,ZF=03-5根據(jù)已知標(biāo)志寄存器中CF和ZF位狀態(tài):a.CF=0,ZF=0b.CF=0,ZF=1c.CF=1,ZF=0判斷以下指令:CMPAX,BX執(zhí)行后,上述三種情況下AX和BX中的兩個無符號數(shù)的大小關(guān)系。答案:a.AX>BX;b.AX=BX;c.AX<BX3-6已知AX寄存器和BX寄存器有如下4組數(shù):AXBXa.2000H2000Hb.FF85H007EHc.AA80HAA20Hd.6370H0420H及條件轉(zhuǎn)換指令:JBNEXT,JNBNEXT,JBENEXT,JNBENEXT,JLNEXT,JNLNEXT,JLENEXT,JNLENEXT問:當(dāng)執(zhí)行CMPAX,BX指令后,上述哪些條件轉(zhuǎn)移指令可以引起轉(zhuǎn)換?答案:a.JNBNEXT,JBENEXT,JNLNEXT,JLENEXT;b.JNBNEXT,JNBENEXT,JLNEXT,JLENEXT;c.JNBNEXT,JNBENEXT,JLNEXT,JLENEXT;d.JNBNEXT,JNBENEXT,JNLNEXT,JNLENEXT.3-7編程實(shí)現(xiàn)如下功能:已知AL寄存器中存有一個0~FH之間的十六進(jìn)制數(shù),要求將它變換成相應(yīng)的ASCII碼值仍放于AL寄存器中。答案:程序段如下: ADDAL,30H CMPAL,3AH JBNEXT ADDAL,07HNEXT:HLT3-8若DX與AX中放了一個有符號的雙字型數(shù)據(jù),DX中放的是高位字?jǐn)?shù)據(jù),AX中放的是低位字?jǐn)?shù)據(jù),編寫程序段求其絕對值。答案:程序段如下: TESTDX,8000H JZEXIT NOTAX NOTDX INCAX ADCDX,0EXIT:HLT3-9設(shè)內(nèi)存中連續(xù)存放了由若干個字符構(gòu)成的符號串,串的最后一個符號是ASCII碼值為20H的空格符,串的邏輯地址已放在ES和DI中,編寫程序段,統(tǒng)計出串長(不含結(jié)束符),結(jié)果放在DX中。答案:程序段如下:MOVDX,0Again:CMPBYTEPTRES:[DI],20H JZEXIT INCDX INCDI JMPagainEXIT:HLT3-10設(shè)內(nèi)存中連續(xù)存放了100個有符號整數(shù),編寫程序段,求出它們的絕對值的和。該整數(shù)數(shù)組起始邏輯地址已存放于DS:SI中。答案:程序段如下: MOVCX,100 MOVAX,0 MOVDX,0Again:CMPWORDPTR[SI],0 JGENEXT MOVBX,0 SUBBX,[SI] MOV[SI],BXNEXT:ADDAX,[SI] ADCDX.0 ADDSI,2 LOOPagain HLT3-11編寫完整程序,判斷一個按鍵是不是回車鍵,若是回車鍵在屏幕輸出“Y”,不是回車鍵,則輸出“N”。答案:程序段如下:CodeSegment AssumeCS:CodeStar:MOVAH,1 INT21H CMPAL,0DH JELab1 MOVAH,2 MOVDL,‘N’ INT21H JMPLab2Lab1:MOVAH,2 MOVDL,‘Y’ INT21HLab2:MOVAH,4CH INT21HCodeends EndStar3-12編寫完整程序,用十六進(jìn)制輸出一個按鍵(字母鍵)的ASCII碼值,要求輸出形式是:a=61H。答案:程序段如下:CodeSegment AssumeCS:Code Main:MOVAH,1 INT21H MOVBL,AL MOVAH,2 MOVDL,‘=’ INT21H MOVAL,BLMOVAH,0MOVBH,16DIVBHMOVBH,AHADDAL,30HMOVDL,ALMOVAH,2INT21HADDBH,30H CMPBH,3AH JBLab MOVAH,4CH ADDBH,07H INT21HLab:MOVDL,BH Codeends MOVAH,2 ENDMain INT21H 習(xí)題4(答案)4-1簡答題:(1)什么是指令性語句?答:指令性語句就是匯編指令語句,該語句匯編以后將生成機(jī)器代碼,故該語句為可執(zhí)行語句。(2)什么是指示性語句?答:指示性語句就是偽指令語句,該語句的功能是控制匯編程序如何對源程序進(jìn)行匯編,匯編以后不會生成機(jī)器代碼,故該語句為非執(zhí)行語句。(3)匯編語言源程序?yàn)槭裁匆侄尉帉?各段內(nèi)容是什么?答:源程序分段編寫是為了在程序加載時,分段存儲,程序一指令序列存儲于代碼段;數(shù)據(jù)(變量)存儲于數(shù)據(jù)段或附加段;堆棧操作在堆棧段進(jìn)行。(4)8086/8088匯編語言對名字的命名有什么規(guī)定?答:8086/8088匯編語言對名字的命名規(guī)則如下:1)可用符號包括字母、數(shù)字和特殊符號“?”、“@”、“$”、“%”、“-”;2)禁止用數(shù)字作第1個符號;3)名字的長度沒有嚴(yán)格限制,但一般不超出10個符號;4)最少由一個符號構(gòu)成,可以是字母、“-”或“@”;5)不區(qū)分字母的大小寫。(5)符號與變量有什么不同?答:用DB、DW和DD定義的名字是變量,變量在程序加載時要占內(nèi)存;用=和EQU定義的名字是符號,符號不占內(nèi)存,在程序中引用符號,就是引用它的值。(6)標(biāo)號與變量有什么不同?答:標(biāo)號與變量都有三個屬性,其中它們都有段屬性和編移量屬性,標(biāo)號的段屬性即CS的內(nèi)容,標(biāo)號的偏移量屬性即IP的內(nèi)容。第3個屬性為類型屬性,對于標(biāo)號來講,有NEAR和FAR兩種屬性;而對于變量來講,有BYTE(字節(jié))、WORD(字)和DoubleWORD(雙字)三種屬性。4-2設(shè)變量X1的定義如下:X1DB0,’1’,10B,20H,-15,’Aa’,31H用內(nèi)存圖畫出變量X1中存放的數(shù)據(jù),并計算X1變量的長度為多少字節(jié)?答:X1變量的長度為8字節(jié),即8B。(內(nèi)存圖如下:見習(xí)題4-2圖示) X1 00 0000 31 0001 02· 20 · F1· 41· 61· 31 0007習(xí)題4-2圖示4-3設(shè)數(shù)據(jù)段data定義如下:DatasegmentV1DB‘ABC’,13,10,’$’V2DW‘a(chǎn)b’,‘CD’CC=$-V2PPDBCC,CC+2QQDW$Dataends試畫出data段.相應(yīng)的內(nèi)存圖。(答案). V1 41 0000 42 0001 43 0002 0D 0003 0A 0004 24 0005 V2 62 0006 61 0007 45 0008 44 0009 PP 04 000A 06 000B QQ 0C 000C 00 000D... 習(xí)題4-3圖示4-4編寫數(shù)據(jù)段定義,設(shè)段名為data,在段中依次定義以下變量:(1)Var1為字節(jié)型數(shù)組,初值是字符串’personalcomputer’;(2)Var2為字節(jié)型變量,初值是48;(3)Var3為字節(jié)型數(shù)組,初值是以ASCII碼形式表示的整數(shù)65535;(4)Var4為字節(jié)型數(shù)組,初值是25個20H,40個未知數(shù)據(jù);(5)Var5為字型變量,初值是300H;(6)Var6為字型變量,初值是400。答案如下:dataSegmentVar1DB‘personalcomputer’Var2DB30hVar3DB‘65535’Var4DB25DUP(20h),40DUP(?)Var5DW300hVar6DW4004-5編寫程序?qū)Ψ旁贒X和AX中的雙字長符號數(shù)求補(bǔ).答案程序段如下:NOTAXNOTDXADDAX,1ADCDX,04-6設(shè)BL=0E3H,變量Y的值為79H,確定下列各條指令單獨(dú)執(zhí)行后,BL中的結(jié)果.(1)XORBL,Y(2)ANDBL,Y(3)NOTBL(4)ORBL,Y答案:(1)9AH;(2)61H;(3)1CH;(4)FBH4-7寫出滿足如下要求的指令:(1)將AX寄存器的低4位清0(2)將BX寄存器的低4位置1(3)將CX寄存器的各位求反(4)將AX的高8位保持不變,低8位求反答案:(1)ANDAX,OFFFOH;(2)ORBX,OFH;(3)NOTCX;(4)XORAX,OFFH;4-8編寫完整程序,從鍵盤讀入一個符號串,把各符號顛倒順序后輸出。答案源程序代碼如下:DATASegmentBUFdb80,81DUP(0)DATAendsCODESegmentAssumecs:CODEAssumeDS:DATAMain:MOVDX,DATAINCSIMOVDS,DXDECDILEADX,BUFLOOPLOPMOVAH,10MOV[BUF+1],10INT21HLEADX,[BUF+1]MOVBL,[BUF+1]MOVAH,9MOVBH,0INT21HMOV[BUF+BX+2],‘$’MOVAH,4CHLEASI,[BUF+2]INT21HLEADI,[BUF+BX+1]CODEENDSSHRBX,1ENDMainMOVCX,BXLOP:MOVAL,[SI]XCHGAL,[DI]MOV[SI],AL4-9已知變量VAR中存放了由300個有符號整數(shù)組成的數(shù)組,編寫程序段找出其中最大的一個,放到DX中。答案的程序段如下:MOVCX,299LEASI,VARMOVAX,[SI]ADDSI,2LOP:CMPAX,[SI]JGE
labMOVAX,[SI]lab:ADDSI,2LooplopMOVDX,AX4-10編寫程序完成下列算式:+1X>0Y=0X=0-1X<0答案程序段如下:CMPx,0JGlab1JLlab2MOVY,0Jmpexitlab1:MOVY,1JMPexitlab2:MOVY,OFFhexit:HLT習(xí)題6(答案)6-1已知DL中的數(shù)據(jù)為10111001B,且CL中的數(shù)據(jù)為03H。問:執(zhí)行下列互不相關(guān)的指令后,DL的內(nèi)容各為多少?(1)SHRDL,1(2)SHRDL,CL(2)SHLDL,CL(4)SHLDL,1(5)RORDL,CL(6)RALDL,1(7)ROLDL,CL(8)SARDL,1(答案用16制數(shù)表示)(1)5CH;(2)17H;(3)C8H;(4)72H;(5)37H;(6)72H;(7)CDH;(8)DCH6-2用移位、傳送以及相加指令,將AX的內(nèi)容乘以10(不計溢出)答案的程序段如下:MOVBX,AXMOVCL,3SHLAX,CLSHLBX,1ADDAX,BX6-3用移位指令和加法指令實(shí)現(xiàn)將AL中的兩位十六進(jìn)制數(shù),變成相應(yīng)的ASCII碼,放在AX中.答案的程序段如下:MOVBL,ALMOVCL,4SHRAL,CLCMPAL,9JBElab1ADDAL,07Hlab1:ADDAL,30HMOVAH,ALMOVAL,BLANDAL,OFHCMPAL,9JBElab2ADDAL,07Hlab2:ADDAL,30H6-4已知(DX,AX)中存放了一個無符號雙字,編寫程序段,利用移位指令和加減法指令把這個雙字乘以9,不計溢出。答案的程序段如下:MOVSI,AXMOVDI,DXMOVCX,3again:SHLAX,1RCLDX,1LoopagainADDAX,SIADCDX,DI6-5編寫一個程序段,把BX中的各個二進(jìn)制位顛倒次序后還放回BX中。答案的程序段如下:MOVAX,BXMOVCX,16again:SHLAX,1RCRBX,1LoopagainHLT6-6編寫程序段,統(tǒng)計AX中的字型數(shù)據(jù)包含有多少個1和多少個0,DH中放1的個數(shù),DL中放0的個數(shù)。答案的程序段如下:XORDX,DXMOVCX,16Again:ROLAX,1JClab1INCDLJMPlab2lab1:INCDHlab2:LoopagainHLT6-7不允許使用串指令,分別編寫程序段,實(shí)現(xiàn)DF為0時以下各串操作指令的功能:(1)REPMOVSW(2)REPSTOSB(3)REPZCMPSW(4)REPNESCASB答案如下:實(shí)現(xiàn)REPMOVSW的程序段如下:again:MOVAX,[SI]MOVES:[DI],AXADDSI,2ADDDI,2LoopagainHLT(2)實(shí)現(xiàn)REPSTOSB的程序段如下:again:MOVES:[DI],ALINCDILoopagainHLT(3)實(shí)現(xiàn)REPZCMPSW的程序段如下:again:MOVAX,[SI]CMPAX,ES:[DI]JNZexitADDSI,2ADDDI,2Loopagainexit:HLT(4)實(shí)現(xiàn)REPNESCASB的程序段如下:again:CMPAL,ES:[DI]JEexitINCDILoopagainexit:HLT6-8利用串操作指令REPMOVSB編寫程序段,將段地址1000H,偏移地址為100H起始的100個字節(jié)數(shù)據(jù),傳送到偏移地址為200H起始的存儲區(qū)中。答案的程序段如下:MOVAX,1000HMOVDS,AXMOVES,AXMOVSI,100HMOVDI,200HMOVCX,100CLDREPMOVSB6-9用REPSTOSW指令編寫程序段,將段地址為1000H,偏移地址為200H起始的100H個字的存儲區(qū)清0。答案的程序段如下:MOVAX,1000HMOVES,AXMOVDI,200HMOVCX,100HMOVAX,0CLDREPSTOSW6-10用REPNESCASB指令編寫一個字符檢索子程序。要求:在內(nèi)存數(shù)據(jù)區(qū)有一數(shù)據(jù)塊,首地址為BLOCK,長度為100字節(jié),檢索其中是否有與AL中相同的字符,若有則記錄第一個遇到的關(guān)鍵字地址并存入DI,若無,則DI清0。答案的源程序如下:Che_chaPROCNearPUSHFMOVAX,SEGBLOCKMOVES,AXLEADI,BLOCKMOVCX,100CLDREPNESCASBJNElabSUBDI,OFFSETBLOCKJMPNextlab:MOVDI,0Next:POPFRETCHE_chaendp習(xí)題7(答案)7-1為什么系統(tǒng)與外部設(shè)備之間通常要加有接口電路?接口電路是起什么作用的?答:外部設(shè)備的種類繁多,功能各不相同,控制的方法也各式各樣。很多外設(shè)由于速度和信號與系統(tǒng)總線不匹配,無法直接連接在總線上與主機(jī)進(jìn)行數(shù)據(jù)交換,需要在總線與外設(shè)之間設(shè)置一個“適配器”,又稱為“接口”,用于把來自CPU的控制命令轉(zhuǎn)換成對外設(shè)的控制信號,把外設(shè)的工作情況轉(zhuǎn)換成CPU可以讀取并處理的狀態(tài)信號。接口電路的作用也就是基本功能為:①作為微型機(jī)與外設(shè)傳遞數(shù)據(jù)的緩沖站;②正確尋址與微機(jī)交換數(shù)據(jù)的外設(shè);③提供微型機(jī)與外設(shè)間交換數(shù)據(jù)所需的控制信號和狀態(tài)信號。一言以蔽之,就是完成三大總線的轉(zhuǎn)換和連接任務(wù)。7-2CPU與外設(shè)間的數(shù)據(jù)傳送方式有哪幾種?它們各有何特點(diǎn)?答:CPU與外設(shè)間的數(shù)據(jù)傳送方式有以下四種:元條件傳送方式:又稱直接傳送方式。這種方式,不需要查詢外設(shè)的狀態(tài),可以直接使用IN或OUT指令實(shí)現(xiàn)數(shù)據(jù)的輸入與輸出。這種方式實(shí)現(xiàn)簡單,但在CPU與這些外設(shè)交換數(shù)據(jù)時,必須確保這些外設(shè)一直處于就緒狀態(tài),否則就會出錯。查詢方式:又稱條件傳送方式。這種方式適用于與CPU不同步的外設(shè)。查詢方式的工作過程是:如CPU要從外設(shè)接收數(shù)據(jù)或向外設(shè)發(fā)送數(shù)據(jù),首先必須查詢外設(shè)的狀態(tài),只有當(dāng)外設(shè)就緒或空閑情況下,CPU才接收或發(fā)送數(shù)據(jù)。這種方式,傳送數(shù)據(jù)可靠,但CPU工作效率低,實(shí)時性差。中斷方式:此種方式的特點(diǎn)是:主機(jī)CPU按照它的邏輯正常執(zhí)行操作。外設(shè)需要進(jìn)行I/O操作時,會產(chǎn)生一個中斷信號,請求主機(jī)CPU處理。主機(jī)CPU經(jīng)過中斷排隊(duì)后響應(yīng)中斷,停止自己的工作,調(diào)用一個中斷處理程序處理中斷事件,完成I/O操作,然后再從中斷中返回。此種方式實(shí)現(xiàn)了CPU與外設(shè)并行工作,既提高了CPU的工作效率,又解決了實(shí)時性問題。直接存儲器存取方式:又稱DMA方式。此種方式適用于高速外設(shè)與主機(jī)間的批量數(shù)據(jù)傳送。其工作是在DMA控制器控制下,實(shí)現(xiàn)高速外設(shè)<如硬盤>與內(nèi)存間的直接批量數(shù)據(jù)傳送。此種方式特點(diǎn):CPU不參與,可實(shí)現(xiàn)高速和數(shù)據(jù)塊的傳送。7-3解釋下面術(shù)語:中斷,中斷源,軟中斷,硬中斷,中斷矢量,中斷矢量表答案如下:中斷:是一種使CPU中止正在執(zhí)行的程序而轉(zhuǎn)去處理特殊事件的操作。中斷源:引起中斷的事件和原因稱為中斷源。軟中斷:是由系統(tǒng)內(nèi)部產(chǎn)生的中斷,包括:①除法錯中斷;②溢出中斷;③INTN中斷調(diào)用;④斷點(diǎn)中斷(INT或INT3);⑤單步中斷。硬中斷:又稱外中斷。包括可屏蔽中斷INTR和非屏蔽中斷NMI,這類中斷均由外部原因引起。中斷矢量:即中斷服務(wù)程序的入口地址,它由段地址SA和偏移地址EA兩部分構(gòu)成。中斷矢量表:由256個中斷源的中斷矢量(每個中斷矢量在內(nèi)存中占4個字節(jié),低地址2字節(jié)為EA,高地址2字節(jié)為SA)所構(gòu)成的表,在8086/8088系統(tǒng)中占據(jù)內(nèi)存最低端1K字節(jié)(00000H~003FFH區(qū)域)簡述中斷處理過程.并說明系統(tǒng)如何能保證程序被中斷后,在完成中斷處理后還能正確返回被中斷的程序處繼續(xù)執(zhí)行。答:1)中斷處理過程如下:即當(dāng)中斷發(fā)生時,硬件完成以下操作:取中斷類型號n;將標(biāo)志寄存器(即PSN)內(nèi)容壓棧;當(dāng)前CS的內(nèi)容和IP的內(nèi)容壓棧;IF和TF清0,禁止外部中斷和單步中斷;從中斷向量表<或中斷矢量表>中取4*n地址(16位)的內(nèi)容送IP,取4*n+2地址(16位)的內(nèi)容送CS;執(zhí)行中斷處理程序。中斷返回。2)系統(tǒng)之所以在執(zhí)行的程序被中斷后能返回原程序繼續(xù)執(zhí)行,其原因是在被中斷時,下一條指令的地址,即斷點(diǎn)(當(dāng)前CS和當(dāng)前IP的內(nèi)容)都被壓棧,保存在堆棧中,中斷程序執(zhí)行完后,最后安排的一條指令總是IRET指令,即中斷返回指令。當(dāng)CPU執(zhí)行IRET指令時,首先從堆棧中彈出兩個字分別送IP和CS,然后彈出一個字送PSW,這樣就實(shí)現(xiàn)了返回原斷點(diǎn)繼續(xù)執(zhí)行源程序。7-5分別說明近過程,遠(yuǎn)過程和中斷調(diào)用返回時堆棧變化請況。答:1)近過程返回<執(zhí)行RET指令>,從堆棧中彈出一個字送IP,實(shí)現(xiàn)近過程返回,即段內(nèi)返回。遠(yuǎn)過程返回<執(zhí)行RET指令>,從堆棧中彈出兩個字分別送IP和CS,實(shí)現(xiàn)遠(yuǎn)過程返回,即段間返回。中斷返回(執(zhí)行IRET指令),從堆棧中彈出3個字分別送IP,CS和PSW,實(shí)現(xiàn)段間返回。7-6說明中斷類型碼為14H的中斷服務(wù)程序首地址存放在哪些單元?答:存放在00050H,00051H,00052H和00053H單元。7-7現(xiàn)實(shí)生活中有如下現(xiàn)象:某人的辦公桌上放了紅色和白色兩部電話機(jī),一臺錄音機(jī),他正在聽一段錄音.試把下列各項(xiàng)與計算機(jī)的中斷相對比:(1)電話鈴響;(2)判斷是哪一部電話響鈴;(3)兩部電話同時響鈴時先接紅色電話機(jī)的電話;(4)按下錄音機(jī)暫停鍵;(5)接電話;(6)按起錄音機(jī)暫停鍵;(7)電話鈴響但不接電話;(8)拔掉白色電話機(jī)的電話線;(9)接聽白色電話時紅色電話機(jī)響鈴,放下白色電話去接紅色電話。答:(1)產(chǎn)生中斷請求;中斷識別;中斷優(yōu)先級判別;中斷正在執(zhí)行的程序,保護(hù)斷點(diǎn);轉(zhuǎn)入中斷;返回原中斷的程序,繼續(xù)執(zhí)行原程序;中斷屏蔽;中斷屏蔽;高優(yōu)先級中斷打斷低優(yōu)先級中斷(中斷嵌套)。7-8說明CPU在與外設(shè)的4種輸入輸出方式中,為什么使用直接傳送方式的外設(shè)并不多?答:因?yàn)橹苯觽魉头绞綄ν庠O(shè)要求條件苛刻,即這種外設(shè)必須隨時處于就緒狀態(tài),當(dāng)然這樣的外設(shè)并不多。7-9試說明計算機(jī)執(zhí)行RET指令和IRET指令的操作有何不同?答:此向題和習(xí)題7-5類似。當(dāng)計算機(jī)執(zhí)行RET指令時,從堆棧彈出一個字(段內(nèi)返回)送IP或兩個字(段間返回)分別送IP和CS,都不涉及PSW;而當(dāng)計算機(jī)執(zhí)行IRET指令時,從堆棧中彈出3個字,分別送IP,CS和PSW。另外RET指令是子程序中的最后一條指令,而IRET指令是中斷服務(wù)程序的最后一條指令。7-10根據(jù)本章教學(xué)內(nèi)容,試分析下面一段程序?qū)崿F(xiàn)的功能.MOVAX,0MOVES,AXMOVDI,36H*4MOVAX,OFFSETINTBUFSTOSWMOVAX,CSSTOSW答:該段程序的功能是:設(shè)置36H號中斷源的中斷矢量,即將36H號中斷源的中斷矢量裝入中斷矢量表。習(xí)題88-1在單色顯示器中,顯示每個字符都需要兩個字節(jié)的信息,由兩個連續(xù)的存儲單元表示,其中第一個存儲單元存放什么?第二個存儲單元存放什么?答:在單色顯示器中,即文本模式情況下,顯示每個字符都需要兩個字節(jié)的信息,由兩個連續(xù)的存儲單元表示,其中第一個存儲單元存放該顯示字符的ASCII碼值,第二個存儲單元存放該顯示字符的屬性值。8-2彩色/圖形顯示卡可以工作在哪兩種模式下?答:彩色/圖形顯示卡可以工作在文本模式和圖形模式的兩種工作模式下。8-3根據(jù)字符的行列值,可以清楚地知道字符在屏幕所在地址,如字符在15行,20列,則字符所在地址為多少?答:該字符所在地址為1220。8-4單色顯示器只能工作在什么方式下?彩色顯示器可以工作在哪兩種方式下?如果在圖形方式下,要在10行20列顯示一個紅底藍(lán)字的字符,則寄存器DX和BL的值各為多少?答:單色顯示器只能工作在字符方式下,彩色顯示器可以工作在字符方式和圖形方式下。如果在圖形方式下,要在10行20列顯示一個紅底藍(lán)字的字符,則寄存器DX和BL的值應(yīng)為0A14H和41H。8-5要在計算機(jī)屏幕上根據(jù)用戶自己的需要繪制彩色圖形,可以通過哪兩種方法來實(shí)現(xiàn)?答:一是采用直接視頻顯示,對指定像素在顯存中的地址進(jìn)行操作;二是調(diào)用BIOS例程編寫彩色繪圖程序。8-6X為一字單元,編程實(shí)現(xiàn):將X的內(nèi)容以二進(jìn)制的形式顯示在屏幕上。其中:顯示一個字符用INT21H中斷,入口參數(shù)為:DL=待顯示字符的ASCII碼,AH=2。答案:源程序代碼如下:DataSegmentXdw?DataendsCodesegmentAssumeCS:CodeAssumeDS:dataSTART:MOVAX,data MOVDS,AX MOVAX,[X] MOVCX,16LP:SHLAX,1 JCLab1 MOVDL,30H JMPLab2Lab1:MOVDL,31HLab2:MOVAH,2 INT21H LOOPLP MOVAH,4CH INT21HCodeends ENDSTART8-7編程以在屏幕上顯示:HELLOWORLDMYNAMEISWJY答案:源程序代碼如下:DatasegmentOut1db“HELLOWORLD$”O(jiān)ut2db“MYNAMEISWJY$”DATAendsCodesegmentAssumecs:codeds:dataStart:MOVAX,data MOVds,AX LEADX,out1 MOVAH,9 INT21H MOVDL,0DH MOVAH,2 INT21H MOVDL,0AH INT21H MOVAH,9 LEADX,out2 INT21H MOVAH,4CH INT21HCodeendsENDStart 習(xí)題5(答案)5-1什么叫堆棧?如何建立堆棧?堆棧的功能是什么?答:堆棧:就是內(nèi)存中一段存放數(shù)據(jù)的特殊區(qū)域,它是按先進(jìn)后出的規(guī)則存取數(shù)據(jù),按字操作。只要定義一個堆棧段,并給SS和SP賦值,就形成了堆棧。堆棧的功能是用于保存數(shù)據(jù)信息,一般用于保存調(diào)用子程序時的斷點(diǎn)和現(xiàn)場。5-2用圖示說明
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鋼架大棚施工合同范例
- 做餐飲合伙合同范例
- 裝修合同范例材料清單
- 二手設(shè)備買賣合同范例
- 貨款欠賬合同范例
- 政府咨詢策劃合同范例
- 果林地租合同范例
- 民間手寫借款合同范例
- 裝修師傅免責(zé)合同范例
- 2025年山南貨運(yùn)資格證考試真題
- 國家電網(wǎng)有限公司電網(wǎng)生產(chǎn)技術(shù)改造和設(shè)備大修項(xiàng)目驗(yàn)收管理規(guī)定
- 《零知識證明》課件
- 純化水注射用水系統(tǒng)的驗(yàn)證課件
- 病房病人燙傷預(yù)防
- 物業(yè)公司員工管理規(guī)章制度范本
- 倍捻機(jī)的工藝計算
- 江蘇省南通市海安市2023-2024學(xué)年六年級上學(xué)期期末語文試題
- 2024年中國國際貨運(yùn)航空股份有限公司招聘筆試參考題庫含答案解析
- 梁湘潤《子平基礎(chǔ)概要》簡體版
- 共享農(nóng)場建設(shè)計劃書
- 短債基金入門技巧知識講座
評論
0/150
提交評論