版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
`00第一章課外練習(xí)題一、單項(xiàng)選擇題:1.從鍵盤輸入的字符,在計(jì)算機(jī)內(nèi)存儲的是它的( A )(A)二進(jìn)制編碼 (B)四進(jìn)制編碼 (C)八進(jìn)制編碼(D)十六進(jìn)制編碼2.6位無符號二進(jìn)制數(shù)能表示的最大十進(jìn)制數(shù)是( B )。(A)64 (B)63 (C)32 (D)313.十進(jìn)制數(shù)269變換為十六進(jìn)制數(shù)是( C )。(A)10B (B)10C (C)10D (D)10E4.8位的微型計(jì)算機(jī)系統(tǒng)是以16位來表示地址,則該微機(jī)系統(tǒng)有(C )個(gè)地址空間。(A)255 (B)65535 (C)65536 (D)10485765.8位有符號二進(jìn)制數(shù)能表示的最大十進(jìn)制數(shù)是( D )。(A)256 (B)255 (C)128 (D)1276.十六進(jìn)制數(shù)88H,可表示成下面幾種形式,請找出錯(cuò)誤的表示( D )。(A)無符號十進(jìn)制數(shù)136 (B)帶符號十進(jìn)制數(shù)-120(C)壓縮型BCD十進(jìn)制數(shù)88 (D)8位二進(jìn)制數(shù)-8的補(bǔ)碼表示7.有一個(gè)數(shù)值152,它與十六進(jìn)制數(shù)6A相等,那么該數(shù)值是( B )。(A)二進(jìn)制數(shù) (B)八進(jìn)制數(shù) (C)十進(jìn)制數(shù) (D)四進(jìn)制數(shù)8.7位ASCII總共可表示( C )個(gè)符號。(A)256 (B)127 (C)128 (D)2559.4B的字長是( C )。(A)8位 (B)16位 (C)32位 (D)64位二、判斷題(判斷每題正誤,對的在題后括號內(nèi)劃“√”,錯(cuò)的劃“×”)1.字節(jié)通常用英文單詞“Bit”來表示 (×)。2.目前廣泛使用的Pentium計(jì)算機(jī)其字長為5個(gè)字節(jié) (×)。3.存儲器中將8個(gè)相鄰的二進(jìn)制位作為一個(gè)單位,這種單位稱為字節(jié) (√)。4.微型計(jì)算機(jī)的字長并不一定是字節(jié)的整數(shù)倍 (×)。三、填空題1.8位有/無符號整數(shù)的表示范圍寫成16進(jìn)制形式為(80~~7F)/(00~~FF)。2.己知:計(jì)算機(jī)中有一個(gè)“01100001”編碼,如果把它看作是無符號數(shù),它是十進(jìn)制什么數(shù)(97);如果認(rèn)為它是BCD,則表示(01100001)BCD;認(rèn)為它是某個(gè)ASCII,則代表(a3.若[X]補(bǔ)=X,則X為( 非負(fù)數(shù))。4.(00101011)B+(13)D+(1B)H=(123)Q5.已知:A=10001011,B=11011010,求A∧B=(10001010);A∨B=(11011011)。6.已知:X=+0010011B,Y=-0111100B,試用補(bǔ)碼完成真值(X+Y)=( 11010111);(X-Y)=(01001111)。7.十進(jìn)制數(shù)的(731)=(011100110001)BCD。8.(011100110001)BCD=(731)十進(jìn)制數(shù)。9.將一個(gè)0~9之間的數(shù)據(jù)轉(zhuǎn)換為ASCII需加(30H)。10.大寫英文字母轉(zhuǎn)換為小寫英文字母需加(20H)。11.英文字母“A”~“F”轉(zhuǎn)換為十六進(jìn)制數(shù)值A(chǔ)~F需要減(37H)。四、簡答題1.什么是匯編語言?為什么要學(xué)習(xí)匯編語言?答:匯編語言是機(jī)器語言的符號表示形式。它不僅是計(jì)算機(jī)原理、操作系統(tǒng)等課程的必要先修課,而且對于訓(xùn)練學(xué)生掌握計(jì)算機(jī)工作原理、程序設(shè)計(jì)技術(shù)、熟練上機(jī)操作和程序調(diào)試技術(shù)都有重要作用。3.把下列二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)。①1101.01=13.25②111001.00011=57.9375③111.001=7.125④1010.1=10.55.把下列十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)。①A6.DC=166.②9AC.BD=2476.③B4A.8D=2890.④1AC.0A6.把下列英文單詞轉(zhuǎn)換成ASCII編碼的字符串。①Water=5761746572②Great=4772656174③Good=476F6F64④After=41667465727.回車鍵、空格鍵的ASCII代碼及其功能是什么?答:0DH、20H。字符從頭開始、空一個(gè)字符的位置。第二章課外練習(xí)題一、單項(xiàng)選擇題:1.下列四個(gè)寄存器中,哪個(gè)寄存器在程序設(shè)計(jì)中是不可省略的(A)。(A)CS (B)DS (C)ES (D)SS2.指令movax,10[si]的源操作數(shù)字段的尋址方式是(C)。(A)寄存器尋址 (B)寄存器間址 (C)變址尋址 (D)基址尋址3.8086∕8088CPU中可用作寄存器間址的寄存器是(B)。(A)BX、SI、DI (B)BX、BP、SI、DI(C)BX、IP、SI、DI (D)BX,DX,SI,DI4.指令mov100[si][bp],ax目標(biāo)操作數(shù)的隱含段為(B)。(A)數(shù)據(jù)段 (B)堆棧段 (C)代碼段 (D)附加段第二章課外練習(xí)題一、單項(xiàng)選擇題:1.下列四個(gè)寄存器中,哪個(gè)寄存器在程序設(shè)計(jì)中是不可省略的(A)。(A)CS (B)DS (C)ES (D)SS2.指令movax,10[si]的源操作數(shù)字段的尋址方式是(C)。(A)寄存器尋址 (B)寄存器間址 (C)變址尋址 (D)基址尋址3.8086∕8088CPU中可用作寄存器間址的寄存器是(B)。(A)BX、SI、DI (B)BX、BP、SI、DI(C)BX、IP、SI、DI (D)BX,DX,SI,DI4.指令mov100[si][bp],ax目標(biāo)操作數(shù)的隱含段為(B)。(A)數(shù)據(jù)段 (B)堆棧段 (C)代碼段 (D)附加段二、判斷題(判斷每題正誤,對的在題后括號內(nèi)劃“√”,錯(cuò)的劃“×”)當(dāng)SP,BP,SI,DI用于指針和變址寄存器使用時(shí);①SP中所含的偏移地址是堆棧段中的偏移地址。 (√)②BP、SI、DI所含的偏移地址是數(shù)據(jù)段中的偏移地址。 (×)奇偶標(biāo)志位PF,當(dāng)運(yùn)算結(jié)果的低8位中有偶數(shù)個(gè)1時(shí),被置為0。(×)零標(biāo)志位ZF,當(dāng)運(yùn)算結(jié)果為0時(shí),被置為0。 (×)符號標(biāo)志位SF,在運(yùn)算結(jié)果為負(fù)時(shí)被置為1。 (√)三、填空題1.在8086/8088CPU中,有許多寄存器,他們是通用寄存器:(AX)(BX)(CX)(DX);指針和變址寄存器:(SP)(BP)(SI)(DI);段寄存器:(CS)(DS)(SS)(ES);指令指針:(IP)還有一個(gè)標(biāo)志寄存器:(PSW),他們都是(16)位的。2.IBMPC機(jī)內(nèi)存容量最大為(1M)B,要尋找這樣大的空間,需要(20)根地址線。3.每個(gè)邏輯段的最大長度為(64KB)。4.在IBMPC機(jī)中,有4個(gè)專門存放段地址的寄存器,稱為段寄存器,請寫出以下段寄存器的符號:代碼段寄存器:(CS) 數(shù)據(jù)段寄存器:(DS)堆棧段寄存器:(SS) 附加段寄存器:(ES)四、簡答題1.IBMPC的存儲器為什么采用分段結(jié)構(gòu)?答:是因?yàn)橐獙ふ?0位存儲器地址的需要。使用兩個(gè)十六進(jìn)制的寄存器做一個(gè)尋找20位寄存器工作的一種方法。2.什么是邏輯地址?什么是物理地址?如何由邏輯地址計(jì)算物理地址?答:邏輯地址是由兩部分組成的,即段的基地址和偏移地址。程序員在編寫程序時(shí)使用的都是邏輯地址。物理地址就是內(nèi)存單元中的一個(gè)惟一的20位二進(jìn)制數(shù)表示的地址,物理地址的范圍是從00000H到FFFFFH。CPU與存儲器進(jìn)行數(shù)據(jù)交換時(shí)所使用的地址就是物理地址。物理地址=段地址×16D+偏移地址。3.如果在一個(gè)程序段開始執(zhí)行之前,CS=0A7F0H,IP=2B40H,試問該程序段的第一個(gè)字的物理地址是多少?答:物理地址=段地址×16D+偏移地址=0A7F0H×4.一個(gè)有16個(gè)字的數(shù)據(jù)區(qū),它的起始地址為70A0:DDF6,那么該數(shù)據(jù)區(qū)的最后一個(gè)字單元地址是多少?答:=DDF6H+20H-2H(16個(gè)字=32個(gè)字節(jié)=20H個(gè)字節(jié))=DE14即70A0::DE145.哪些寄存器可以用來指示存儲器地址?答:BX、BP、SI和DI。6.有一個(gè)由20個(gè)字組成的存儲區(qū),其起始處段地址為4701H,偏移地址為2012H。試寫出該存儲區(qū)首單元和末單元的物理地址。答:該存儲區(qū)末單元的偏移地址=2012H+28H-2(20個(gè)字=40個(gè)字節(jié)=28H個(gè)字節(jié))=2038H。即首單元和末單元的物理地址為49022H和49048H。7.8086微處理器由哪幾部分組成?各部分的功能是什么?答:8086/8088微處理器由兩大部分組成:總線接口單元BIU和執(zhí)行單元EU。①BIU:負(fù)責(zé)與存儲器接口,即CPU與存儲器之間的信息傳送。即:BIU從內(nèi)存的指定部分取出指令,送至指令隊(duì)列排隊(duì)。從內(nèi)存的指定部分取出執(zhí)行指令時(shí)所需的操作數(shù),送至EU部分。②EU:負(fù)責(zé)指令的執(zhí)行。8.簡述8086CPU的寄存器組織。答:8086/8088CPU的寄存器是由①通用寄存器②控制寄存器③段寄存器組成。9.試述8086CPU標(biāo)志寄存器各位的含義與作用。答:它含有9個(gè)有用的標(biāo)志位(其余7位不用),用于記錄指令操作后的結(jié)果狀態(tài)信息或控制處理器操作的標(biāo)志。其含義與作用如下:進(jìn)位標(biāo)志C(CarryFlag)——當(dāng)加減運(yùn)算操作后,結(jié)果的最高位產(chǎn)生一個(gè)進(jìn)位或借位,則C=1,否則C=0。各種移位指令,邏輯操作指令等也可影響CF的狀態(tài)。CF位也可表示無符號數(shù)的溢出。溢出標(biāo)志O(OverflowFlag)——在算術(shù)運(yùn)算中,帶符號數(shù)的運(yùn)算結(jié)果超出機(jī)器所能表示的數(shù)據(jù)范圍稱為溢出,當(dāng)溢出發(fā)生時(shí),則O=1,否則O=0。帶符號數(shù)的數(shù)據(jù)范圍。8位運(yùn)算時(shí)為:﹣128~+127;16位:﹣32768~+32767。符號標(biāo)志S(SignFlag)——若運(yùn)算結(jié)果的最高位(D15或D7)為1,則S=1,否則S=0。零標(biāo)志Z(ZeroFlag)——若運(yùn)算的結(jié)果為0,則Z=1,否則Z=0。奇偶標(biāo)志P(ParityFlag)——若運(yùn)算結(jié)果中‘1’的個(gè)數(shù)為偶數(shù),則P=1,否則P=0。輔助進(jìn)位標(biāo)志A(AuxitiaryCarryFlag)——記錄運(yùn)算時(shí)第3位(半個(gè)字節(jié))產(chǎn)生的進(jìn)位值,若第3位產(chǎn)生進(jìn)位,則A=1,否則A=0。在執(zhí)行BCD調(diào)整時(shí)使用此標(biāo)志。方向標(biāo)志DF(DirectionFlag)——用于在串處理指令中控制處理信息的方向。當(dāng)DF=1時(shí),每次操作后使變址寄存器SI和DI減小,這樣就使得串處理操作從高地址向低地址方向處理。當(dāng)DF=0時(shí),則使SI和DI增大,使得串處理從低地址向高地址方向處理。中斷標(biāo)志IF(InterruptFlag)——當(dāng)IF=1時(shí),允許CPU響應(yīng)可屏蔽中斷請求,否則關(guān)閉中斷。陷阱標(biāo)志TF(TrapFlag)——又稱單步跟蹤。用于調(diào)試時(shí)的單步方式操作。當(dāng)TF=1時(shí),每條指令執(zhí)行完后產(chǎn)生陷阱,由系統(tǒng)控制計(jì)算機(jī);當(dāng)TF=0時(shí),CPU正常工作,不產(chǎn)生陷阱。10.指出下列MOV指令的源操作數(shù)的尋址方式。MOV AX,1234H=立即MOV AX,BX =寄存器MOV AX,[BX] =寄存器間接MOV AX,TABLE;TABLE是一個(gè)變量名 =直接MOV AX,[1234H] =直接MOV AX,[BX+1234H] =基址MOV AX,[BP][SI] =基址變址MOV AX,[BX+SI-1234H] =基址變址=21234H=20100H=2010AH=10010H=10012H11.設(shè)(DS)=2000H,(BX)=0100H,(SS)=1000H,(BP)=0010H,TABLE的物理地址為2000A=21234H=20100H=2010AH=10010H=10012HMOV AX,[1234H]MOV AX,[BX]MOV AX,TABLE[BX]MOV AX,[BP]MOV AX,[BP][SI]12.已知:BX=1234H,BP=5678H,SI=1357H,DS=0925H,SS=0468H,CS=4B10H,指出下述指令中存儲器操作數(shù)的有效地址和實(shí)際地址。有效地址實(shí)際地址①M(fèi)OVAL,[BX]1234H0A484H②MOVAH,[BP]5678H0ACF8H③MOVBH,CS:[SI]1357H4C457H④MOVDL,[SI+10H]1367H0A5B7H⑤MOVCH,[BP+20H]5698H09D18H⑥MOVCL,SS:[SI+50H]13A7H05A27H⑦M(jìn)OVBL,DS:[BP+30H]56A8H0E8F8H⑧MOV[BP+SI+30H],AH68DCH0B07FH⑨MOV[BX+SI-40H],AH254BH0B79BH⑩MOVCS:[BX+SI],DH258BH4D68BH13.有兩個(gè)16位字1EE5H和2A3CH分別存放在80x86微機(jī)存儲器的000B0H和000B3H單元中。請用圖表示出它們在存儲器里的存放情況。地址內(nèi)容000B0HE5H000B1H1EH000B2H000B3H3CH000B4H2AH地址內(nèi)容2010012H2010134H2010256H2010378H┆┆212002AH212014CH212020B7H2120365H習(xí)題14示意圖14.有關(guān)寄存器及存儲單元的內(nèi)容如下:=1200H=0100H=1200H=0100H=4C2AH=3412H=4C2AH=7856H=65B7H基址變址①M(fèi)OV AX,1200H ②MOV AX,BX ③MOV AX,[1200H]④MOV AX,[BX] ⑤MOV AX,1100[BX]⑥MOV AX,[BX][SI]⑦M(jìn)OV AX,1100[BX][SI]第三章課外練習(xí)題一、單項(xiàng)選擇題:1.以下語句匯編后,CENTH的值是(A)。buf1 dw 8,19buf2 db 6,'abc$',10dup('5')CENTH equbuf2—buf1(A)4 (B)8 (C)14 (D)172.在DEBUG環(huán)境下查看機(jī)器指令使用(B)命令;顯示內(nèi)存數(shù)據(jù)使用(E)命令。(A)G (B)U (C)T (D)A (E)D (F)E (G)R二、填空題:1.寫出下列各語句在存儲器中分別為變量分配多少字節(jié),并填入括號內(nèi)。DATA SEGMENTNUM1 DW 20 ( 2 )NUM2 DB ‘31H,32H,33H’ ( 11 )NUM3 EQU 10H ( 0 )NUM4 DB NUM3 DUP(0) ( 10H )DATA ENDS2.某程序的數(shù)據(jù)段定義如下:DATASG SEGMENTPARTLIST DB‘PART#’DB 60DB‘PRICE’DB0125DB‘DESCRIPTION’DB‘RADIO’LISTLENG EQU($-PARTLIST);數(shù)組長度,用表達(dá)式表示DATASG ENDS3.有符號定義語句如下:BUFF DB 1,2,3,‘123EBUFF DB 0L EQU EBUFF-BUFF問L的值是( 6 )。4.下邊是匯編語言程序上機(jī)步驟,請?zhí)顚懗鐾瓿筛鞑襟E使用的系統(tǒng)程序的文件名字,并按照正確步驟給出操作順序號。操作名稱 文件名 操作順序匯編(MASM ) (2)編輯(EDIT ) (1)連接(LINK ) (3)調(diào)試(DEBUG ) (4)5.自內(nèi)存0F00:0006開始的內(nèi)存單元中存放著8032569876B5這六個(gè)十六進(jìn)制數(shù)據(jù),試分別寫出0F00:0008的字節(jié)型數(shù)據(jù),字型數(shù)據(jù)、雙字型數(shù)據(jù)的值。字節(jié)型: (56 )字型: (9856 )雙字型: (B5769856 )6.對于如下所示的數(shù)據(jù)定義,各指令語句的執(zhí)行結(jié)果是什么(以十六進(jìn)制數(shù)表示)?VR1 DB -38,'456',?VR2 DW 6,5DUP(2)①M(fèi)OVAL,VR1(-38)②ADD VR2,59 (65 )③MOV BL,VR1+2 (53 )7.對于第6小題,為VR1變量分配了(5)個(gè)字節(jié),為VR2變量分配了(12)個(gè)字節(jié)。8.匯編源程序的文件擴(kuò)展名是(.ASM)。9.以下語句匯編后,count的值是(9)。Buf1 db3,5,'abcd$'Buf2dw0fabHCountequ$-buf110.保存當(dāng)前棧頂?shù)刂返募拇嫫魇牵⊿P)。11.在程序運(yùn)行時(shí)執(zhí)行的語句是(指令)語句,它告訴CPU要執(zhí)行的操作。12.(偽指令)語句是由匯編程序在匯編過程中執(zhí)行的語句。三、判斷題(判斷每題正誤,正確的在題后括號內(nèi)劃“√”,錯(cuò)誤的劃“×”)1.匯編語言是用指令的助記符、符號地址、標(biāo)號等符號書寫程序的語言。 (√)2.通過ASSUME偽指令給段寄存器賦初值。 (×)3.在匯編語言中當(dāng)缺省為十進(jìn)制數(shù)時(shí),表示十六進(jìn)制數(shù)要用H結(jié)尾。 (√)4.在DEBUG中,缺省值為十進(jìn)制數(shù)。 (×)5.在標(biāo)志IF=0時(shí),CPU忽略所有的中斷請求。 (√)四、簡答1.標(biāo)號具有哪3種屬性?該3種屬性的屬性值分別表示什么?答:標(biāo)號具有三種屬性:段、偏移和類型屬性。①段屬性:定義標(biāo)號的段起始地址,此值必須在一個(gè)段寄存器中,而標(biāo)號的段則總是在CS寄存器中。段屬性值可以用SEG算符求得。②偏移屬性:標(biāo)號的偏移地址是從段起始地址到定義標(biāo)號的位置之間的字節(jié)數(shù)。標(biāo)號偏移量屬性值可由OFFSET算符求得。③類型屬性:類型屬性用來指出該標(biāo)號是在本段內(nèi)引用還是在其他段中引用的。標(biāo)號類型值可用TYPE算符求得。第四章課外練習(xí)題一、單項(xiàng)選擇題:1.若棧頂?shù)奈锢淼刂窞?0100H,當(dāng)執(zhí)行完指令PUSHAX后,棧頂?shù)奈锢淼刂窞椋―)。(A)20102H (B)20101H (C)200FFH (D)200FEH2.下列指令執(zhí)行后,DAB中第一個(gè)字的內(nèi)容是(B)。DAB DB 0FAH,0DAH,0F5H,0D0H,5HDAB_l equ $-DAB┆MOV AL,DAB_LXCHG DAB,AL(A)05DAH (B)0DA05H (C)0F5DAH (D)0DAF5H3.執(zhí)行下列指令后,正確的結(jié)果是(B)。MOV AL,100MOV BL,-2(A)AL=100H,BL=02H (B)AL=64H,BL=0FEH(C)AL=64H,BL=82H (D)AL=100H,BL=0FEH4.完成同指令XCHG AX,BX相同功能的指令或指令序列是(D)。(A)MOV AX,BX (B) MOV BX,AX(C)PUSH AX (D) MOV CX,AXPOPBX MOV AX,BXMOV BX,CX5.為了使MOVAX,VAR指令執(zhí)行后,AX寄存器中的內(nèi)容為4142H,下面哪一條數(shù)據(jù)定義會產(chǎn)生不正確的結(jié)果?(C)(A)VARDW4142H (B) VARDW16706(C)VARDB42H,41H (D) VARDW‘AB’6.假定用偽指令DATA DB12H,34H定義了兩個(gè)字節(jié)數(shù)據(jù),現(xiàn)需要將數(shù)據(jù)12H取入寄存器AL,將數(shù)據(jù)34H取入寄存器AH,能完成此功能的程序段是(D)。(A) MOVAX,DATA (B) MOVSI,DATAMOVAX,[SI](C) LEASI,DATA (D) MOVSI,OFFSETDATAMOVAX,[SI]MOVAL,[SI]MOVAH,[SI]MOVAH,[SI+1]7.POP指令的操作數(shù)不能是(D)。(A)BP (B)[BX] (C)字變量的SUM (D)CS二、簡答題1.設(shè)ARRAY是字?jǐn)?shù)組的首地址,寫出將第5個(gè)字元素取出送AX寄存器的指令序列,要求使用以下幾種尋址方式:①直接尋址; (MOVAX,ARRAY+8)②寄存器間接尋址; (LEABX,ARRAY+8和MOVAX,[BX])③變址尋址; (MOVSI,8和MOVAX,ARRAY[SI])④基址變址尋址。 (LEABX,ARRAY及MOVSI,8和MOVAX,[BX][SI])2.設(shè)有以下程序段,求執(zhí)行完此程序段后AL寄存器中的內(nèi)容。(12H)ABC EQU 2DATA1 DB 20HDATA2 DW 1234H┆MOV AL,DATA1+ABC3.下列每組指令有何區(qū)別?①M(fèi)OVAX,1234H AX←1234HMOV AX,[1234H] AX←1234H的地址②MOVAX,TABLE AX←TABLE的數(shù)據(jù)MOV AX,[TABLE] AX←TABLE的數(shù)據(jù)③MOV AX,TABLE AX←TABLE的數(shù)據(jù)LEAAX,TALBE AX←TABLE的地址④MOVAX,BX AX←BX的內(nèi)容MOV AX,[BX] AX←BX的地址里的內(nèi)容4.寫一指令序列,將3456H裝入DS寄存器。MOV AX,3456HMOV DS,AX5.不可以從堆棧向哪個(gè)段寄存器彈出數(shù)據(jù)?答:CS6.若(SS)=2000H,(SP)=000AH,先執(zhí)行將字?jǐn)?shù)據(jù)1234H和5678H壓入堆棧的操作,再執(zhí)行彈出一個(gè)字?jǐn)?shù)據(jù)的操作,試畫出堆棧區(qū)及SP的內(nèi)容變化過程示意圖(標(biāo)出存儲單元的物理地址)。內(nèi)容堆棧地址內(nèi)容堆棧地址內(nèi)容堆棧地址20006H執(zhí)行后SP78H20006H78H20006H20007H56H20007H56H20007H20008H34H20008H最后SP34H20008H20009H12H20009H12H20009H執(zhí)行前SP2000AH2000AH2000AH7.在8086∕8088微處理器中,PUSH和POP指令在堆棧與寄存器或存儲單元之間傳送數(shù)據(jù)時(shí),一次總是傳送多少字節(jié)?答:2字節(jié)。8.解釋XLAT指令是怎樣轉(zhuǎn)換AL寄存器中的內(nèi)容的。并編寫一段程序用XLAT指令將BCD碼的0~9轉(zhuǎn)換成對應(yīng)的ASCII,并將ASCII存入數(shù)組ARRAY中。答:XLAT指令是通過AL寄存器加上BX寄存器聯(lián)合組成的尋址方式找到目標(biāo)地址后,將內(nèi)容傳送到AL寄存器中。程序如下:.MODEL SMALL.STACK.DATABCD DB -7BCD2ASCTAB DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39HARRAY DB ?.CODE.STARTUPMOV AL,BCDLEA BX,BCD2ASCTABXLATMOV ARRAY,AL.EXIT 0END9.下列ASCII字符串(包括空格符)依次存儲在首地址為CSTRING的字節(jié)單元中:CSTRING DB ‘BASED ADDRESSING’請編寫指令將字符串中的第一個(gè)和第七個(gè)字符傳送給DX寄存器。MOV DL,CSTRINGMOV DH,CSTRING+610.請編寫指令將BX寄存器初始化為變量MYDAT的偏移地址。MOV BX,OFFSETMYDAT或LEABX,MYDAT11.將變量名TABL的段地址送AX的指令是什么?MOV AX,SEGTABL12.設(shè)MEM是數(shù)據(jù)段中0A00H單元的符號名,其中存放的內(nèi)容為0B0CH,以下各指令語句的執(zhí)行結(jié)果是什么?①M(fèi)OV AX,MEM 答: 0B0CH②LEA BX,MEM 0A00H三、程序分析題1. A DW 1234HB DW 5678H┆PUSH APUSH BPOP APOP B試回答:①上述程序段執(zhí)行后(A)=5678H,(B)=1234H②執(zhí)行前SP=200H,執(zhí)行后SP=200H四、判斷題(判斷每題正誤,對的在題后括號內(nèi)劃“√”,錯(cuò)的劃“×”)1.MOV ES,BX (√)。2.MOV CS,BX(×)。3.IN AL,DX (√)。4.POPF AX (×)。5.POP 1234 (×)。6.PUSH A(A為字節(jié)單元) (√)。7.執(zhí)行LEABX,TABLE與執(zhí)行MOVBX,OFFSETTABLE效果一樣 (√)。8.當(dāng)執(zhí)行LAHF和SHAF兩條指令后,標(biāo)志位不改變 (×)。第五章課外練習(xí)題一、單項(xiàng)選擇題:1.假定AX的內(nèi)容為-32768,在執(zhí)行了指令NEGAH后,標(biāo)志位(SF,OF)為(D)。(A)0,0 (B)0,1 (C)1,0 (D)1,12.已知AL,BX為帶符號數(shù),計(jì)算AL×BX的乘積,使用下述程序段(D)(A) MOVAH,0MULBX(B) MOVAH,-1IMULBX(C) MOVAH,0IMULBX(D) CBWCBW指令進(jìn)行字節(jié)和字的混合運(yùn)算字節(jié)--字IMULBXCWD------字-雙字3.已知AL,BX為無符號數(shù),計(jì)算AL×BX的乘積,使用下述程序段(C)(A)MULBX (B)IMULBX (C) MOVAH,0(D)CBWMULBXMULBX無符號數(shù)不能用CBW4.當(dāng)執(zhí)行指令A(yù)DDAX,BX后,若AX的內(nèi)容為2BA0H,設(shè)置的奇偶標(biāo)志位PF=1,下面的敘述正確的是(A)。(A)表示結(jié)果中含1的個(gè)數(shù)為偶數(shù) (B)表示結(jié)果中含1的個(gè)數(shù)為奇數(shù)(C)表示該數(shù)為偶數(shù) (D)表示結(jié)果中低八位含1的個(gè)數(shù)為偶數(shù)5.設(shè)AH=0,AL=06H,BL=09H,執(zhí)行下列兩條指令之后,其結(jié)果應(yīng)是(A)。ADD AL,BL AAAAL寄存器的低四位在A和F之間,或AF標(biāo)志是1,加6調(diào)整,AH加1(A)AH=01,AL=05 (B)AH=1,AL=15(C)AH=0,AL=0FH (D)AH=0,AL=056.設(shè)AL=0B4H,BL=11H,指令“MULBL”和指令“IMULBL”分別執(zhí)行后OF,CF的值為(B)。(A)OF=1,CF=0 (B)OF=1,CF=1(C)OF=0,CF=0 (D)OF=0,CF=17.當(dāng)執(zhí)行完下列兩條指令后,標(biāo)志位CF和SF的值為(D)。MOVAL,0C4HADDAL,9DH(A)0,0 (B)1,1 (C)0,1 (D)1,0二、判斷題(判斷每題正誤,對的在題后括號內(nèi)劃“√”,錯(cuò)的劃“×”)1.ADD[SI],[BX](×)2.ADDAX,100(√)3.ADDAX,BL(×)4.ADD[SI],100(√)5.ADD ES, BX ( √ )6.INC [BX] ( √ )7.SUB BYTE PTR [SI],1 ( √ )8.DEC [BX],1 ( × )三、指出下列指令中的錯(cuò)誤,并寫出與該條指令意義相近的所有可能的正確指令。1.ADDBH,AX(類型錯(cuò)誤。改正:ADDBX,AX)2.SUB100H,AX(立即數(shù)不可做目標(biāo)操作數(shù)。改正:SUBAX,100H)3.MOVDS,100H(立即數(shù)不可以直接向段寄存器送數(shù)。改正:MOVAX,100H和MOVDS,AX)4.MOV[DI],[100H](兩個(gè)操作數(shù)不可以同時(shí)是存儲器中的數(shù)。改正:MOVAX,[100H]和MOV[DI],AX)5.INC100H(立即數(shù)不可做目標(biāo)操作數(shù)。改正:MOVAX,100H和INCAX)6.MOVAL,ARRAY[BX][BP](沒有此尋址方式。改正:MOVAL,ARRAY[BX][SI])7.ADD[BX],[SI](兩個(gè)操作數(shù)不可以同時(shí)是存儲器中的數(shù)。改正:MOVAX,[SI]和ADD[BX],AX)四、填空題1.當(dāng)執(zhí)行MULBX指令后,乘積的高半部分在(DX)中,低半部分在(AX)中。2.當(dāng)執(zhí)行DIVBX指令后,被除數(shù)在(DX,AX)中,所得商在(AX)中,余數(shù)在(DX)中。3.已知AL,BL中數(shù)據(jù)為無符號數(shù),若求AL∕BL的商,應(yīng)使用指令序列為:(MOVAH,0)和(DIVBL)。4.已知AL,BL中數(shù)據(jù)為帶符號數(shù),若求AL∕BL的商,應(yīng)使用指令序列為:(CBW )和( IDIV )。5.用一條語句實(shí)現(xiàn)AX的內(nèi)容加1,要求不影響CF(INCAX )。6.將AX的內(nèi)容,減去0520H,和上次運(yùn)算的借位,選用(SBBAX,0520H)指令。7.在SUBAX,BX指令執(zhí)行后,CF=1,說明:①最高有效位(有借位)。②對(無符號)數(shù),操作結(jié)果溢出。五、簡答題1.寫一指令序列,完成將存于AX、BX中的壓縮BCD數(shù)加到存于CX、DX中的8位BCD數(shù)上的操作。PUSH AXMOV AL,BLADD AL,DLDAAMOV DL,ALMOV AL,BHADC AL,DHDAAMOV DH,ALPOP BXMOV AL,BLADC AL,CLDAAMOV CL,ALMOV AL,BHADC AL,CHDAAMOV CH,AL第六章課外練習(xí)題一、單項(xiàng)選擇題:1.JMP SI的目標(biāo)地址偏移量為(A)。(A)SI的內(nèi)容 (B)SI所指向的內(nèi)存字單元之內(nèi)容(C)SI+IP的內(nèi)容 (D)IP+[SI]2.JMP WORDPTR[BX]轉(zhuǎn)移的目標(biāo)地址是(D)。(A)BX的內(nèi)容 (B)SP+BX之和(C)IP+[BX]之和 (D)BX指出的內(nèi)存單元之內(nèi)容3.當(dāng)A≥B時(shí)轉(zhuǎn)移的條件轉(zhuǎn)移指令為(A,B為帶符號數(shù))(D)。(A)JA (B)JAE (C)JG (D)JGE4.已知X,Y為帶符號數(shù),兩個(gè)數(shù)比較后,欲判斷X≤Y發(fā)生轉(zhuǎn)移,應(yīng)使用(C)指令。(A)JBE (B)JL (C)JNG (D)JNA5.假定AX和BX寄存器中存放的是有符號整數(shù),如果AX>BX則轉(zhuǎn)移到LABEL,應(yīng)采用下面哪一條指令序列?(D)。(A) SUBAX,BX (B) SUBAX,BXJCLABELJNCLABEL(C) CMPAX,BX (D) CMPAX,BXJALABELJGLABEL6.已知AX=8078H,BX=5610H,指令CMP BL,AH執(zhí)行后OF,CF的值為(D)(A)0,0 (B)0,1 (C)1,0 (D)1,17.在匯編下列條件轉(zhuǎn)移指令中,兩條指令功能不一樣的是(D)。(A)JZ 與JE (B)JC與JB (C)JA與JNBE (D)JP與JS8.循環(huán)指令LOOPNZ終止循環(huán)的條件是(B)。(A)CX=0,且ZF=0 (B)CX=0,或ZF=1(C)CX<>0,且ZF=0 (D)CX<>0,或ZF=19.在循環(huán)次數(shù)已知的情況下,采用哪種方法控制循環(huán)程序最方便(A)。(A)計(jì)數(shù)法 (B)條件控制法10.循環(huán)控制指令隱含指定哪個(gè)寄存器作為循環(huán)計(jì)數(shù)器(B)。(A)CL (B)CX (C)AL (D)AX二、判斷題(判斷每題正誤,對的在題后括號內(nèi)劃“√”,錯(cuò)的劃“×”):1.兩個(gè)數(shù)相等時(shí)進(jìn)行轉(zhuǎn)移可用JZ指令(√)2.當(dāng)PF=1時(shí)發(fā)生轉(zhuǎn)移的條件轉(zhuǎn)移指令為JPO (×)3.當(dāng)X<Y(X,Y為無符號數(shù))時(shí)發(fā)生轉(zhuǎn)移的條件轉(zhuǎn)移指令有JB和JC (√)4.滿足指令JSLAB的執(zhí)行條件,則表示上一條指令運(yùn)算的結(jié)果為負(fù)數(shù) (√)5.JS [BX](×)6.JMP AL(×)三、填空題1.當(dāng)兩個(gè)數(shù)不相等時(shí),發(fā)生轉(zhuǎn)移的條件轉(zhuǎn)移指令有JNE和(JNZ)。2.當(dāng)PF=0時(shí),發(fā)生轉(zhuǎn)移的條件轉(zhuǎn)移指令為JNP和(JPO)。3.當(dāng)A≥B(A,B為無符號數(shù))時(shí),發(fā)生轉(zhuǎn)移的條件轉(zhuǎn)移指令有(JAE)(JNB)。AXBX程序轉(zhuǎn)向14C6H80DCHL1B568H54B5HL142C8H608DHL2D023H9FD0HL59FD0HD023HL5習(xí)題4示意圖4.設(shè)有下列程序段:ADD AX,BXJNO L1JNC L2SUB AX,BXJNC L3JNO L4JMP SHORT L5如果AX和BX的內(nèi)容如習(xí)題4圖形,則該程序分別執(zhí)行后,程序轉(zhuǎn)向哪里?四、程序分析題1.閱讀如下程序,回答所提出的問題,假定X1,X2,...Xn為無符號數(shù)。.MODEL SMALL.STACK.DATABLOK DWX1,X2,..,XnCOUNT EQU($-BLOK)/2RESULT DWCOUNT,?.CODE.STARTUPLEA BX,BLOK-2MOV CX,RESULTXOR AX,AXGOON:ADD BX,2CMP AX,[BX]JAE NEXTMOV AX,[BX]NEXT:LOOP GOONMOV RESULT+2,AX.EXIT 0END程序執(zhí)行完,回答下述問題:RESULT+2字存儲單元的內(nèi)容=MAX(X1,X2,..,Xn)程序循環(huán)次數(shù)=(COUNT)[BX]=(Xn)2.下列程序完成的是什么功能?(SUMn=|BUF1n|+|BUF2n|。兩個(gè)數(shù)組BUF1和BUF2對應(yīng)位絕對值之和存入SUM對應(yīng)位)LEA SI, BUF1LEA BX, BUF2LEA DI, SUMMOV CX, 100AGAIN:MOV AX, [SI]CMP AX, 0JGE K1NEG AXK1:MOV DX, [BX]CMP BX, 0JGE K2NEG BXK2:ADD AX, DXMOV [DI], AXADD SI, 2ADD DI, 2ADD BX, 2LOOP AGAIN3.下列程序完成的是什么功能?(DATX1數(shù)組中后100個(gè)數(shù)送DATX2數(shù)組中)DATX1 DB 300DUP(?)DATX2 DB 100DUP(?)┆MOV SI,0MOV DI,0MOV BX,200MOV CX,100NEXT:MOV AL,DATX1[BX][SI]MOV DATX2[DI],ALINC SIINC DILOOP NEXT4.假設(shè)X和X+2單元的內(nèi)容為雙字?jǐn)?shù)據(jù)P,Y和Y+2單元的內(nèi)容為雙字?jǐn)?shù)據(jù)Q(X單元與Y單元為低位字),說明下列程序段完成什么工作?()如果2倍P的高16位>Q的高16位,則AX=1如果2倍P的高16位<Q的高16位,則AX=2如果2倍P的高16位>Q的高16位,則AX=1如果2倍P的高16位<Q的高16位,則AX=2如果2倍P的高16位=Q的高16位,則判斷如果2倍P的低16位≤Q的低16位,則AX=2;否則AX=1MOV AX,XADD AX, XADC DX,X+2CMP DX,Y+2JL L2JG L1CMP AX,YJBE L2L1: MOV AX,1HLTL2: MOV AX,2HLT5.指出以下程序執(zhí)行后ANS的內(nèi)容是什么?(在三個(gè)帶符號數(shù)中求最大數(shù)。即ANS=1240H)DSEG SEGMENTD1 DW 9CC0HD2 DW 1240HD3 DW 0620HANS DW ?DSEG ENDSCSEG SEGMENTASSUME DS:DSEG,CS:CSEGSTART:MOV AX,DSEGMOV DS,AXMOV AX,D1CMP AX,D2JG CMP13MOV AX,D2CMP AX,D3JG OKD3G: MOV AX,D3JMP OKCMP13: CMP AX,D3JL D3GOK: MOV ANS,AXMOV AH,4CHINT 21HCSEG ENDSEND START6.下述程序段運(yùn)行后,S9開始的10個(gè)字節(jié)存儲單元內(nèi)容是什么?(1,0,3,2,5,4,7,6,9,8)DATASEGMENTS9DB0,1,2,3,4,5,6,7,8,9DATAENDS┆LEASI,S9LEADI,S9+1MOVCX,5LOP:MOVAL,[SI]XCHGAL,[DI]MOV[SI],ALADDSI,2ADDDI,2DEC CXJNZLOP7.指出下列程序段執(zhí)行后AL內(nèi)容是什么?①┆(60H) MOV AL,60H CMP AL,0BBH JB L2 L1:MOV AL,0BBH L2:NOP ;NOP為空操作②┆(61H) MOV AL,60H CMP AL,0BBH JL L2 L1:INC AL L2:NOP ;NOP為空操作③┆(0FFH) XOR AL,ALMOV BL,98H ADD BL,88H JNC L2 L1:DEC AL L2:NOP ;NOP為空操作④┆(0) XOR AL,ALMOV BL,98HADD BL,88HJNO L2 L1:MOV AL,0 L2:NOP ;NOP為空操作8.指令序列為: CMP AX,BX JX L1請?jiān)谀芤疝D(zhuǎn)移到L1單元的條件轉(zhuǎn)移指令下面劃“√”,AXBXJBJNBJBEJNBEJLJNLJLEJNLE①1F52H1F52H√√√②88C9H88C9H√√√③FF82H007EH√√√√④58BAH020EH√√√√⑤FFC5HFF8BH√√√√⑥09A0H1E97H√√√√⑦8AEAHFC29H√√√√⑧D367H32A6H√√√√五、編程題1.將AX寄存器中的16位數(shù)分成4組,每組4位,然后把這4組數(shù)分別放在AL、BL、CL和DL中的最低4位。MOV CL,4MOV DL,ALAND DL,0FHMOV BL,AHAND BL,0FHROL AX,CLAND AL,0FHMOV CL,AHAND CL,0FH2.將BUF有符號雙字節(jié)數(shù)據(jù)區(qū)中的最大數(shù)及最小數(shù)分別送MAX及MIN存儲單元。.數(shù)據(jù)段BUF DW 1010H,2030H,19H,5555H,3435H,0FFFFHCOUNT EQU ($-BUF)/2MAX DW ?MIN DW ?.代碼段MOV CX,COUNTDEC CXOUTLP: MOV DX,CXLEA BX,BUFINLP: MOV AX,[BX]CMP AX,[BX+2]JL NEXTXCHG AX,[BX+2]MOV [BX],AXNEXT:ADD BX,2DEC DXJNZ INLPLOOP OUTLPmovax,buf[0]movbx,buf[count+count-2]movmin,axmovmax,bx3.已知一多字節(jié)數(shù)據(jù)存放在內(nèi)存DATA開始的連續(xù)單元中,數(shù)據(jù)長度在LEN單元,編制程序計(jì)算其絕對值并存入原單元。MOV SI,0MOV CX,LENMOV AL,DATA[LEN-1]CMP AL,0JGE QUIT0CLCAGAIN:MOV AL,0SBB AL,DATA[SI]movdata[si],alINC SILOOP AGAINQUIT0: NOP4.編制程序,將一個(gè)包含有20個(gè)數(shù)據(jù)的數(shù)組M分成兩個(gè)數(shù)組:正數(shù)組P和負(fù)數(shù)組N。MOV BX,0MOV SI,0MOV DI,0MOV CX,20AGAIN:MOV AL,M[BX]CMP AL,0JL FSMOV P[DI],ALINC DIJMP OKFS: MOV N[SI],ALINC SIOK: INC BXLOOP AGAIN5.在首地址為DATA的數(shù)組中,存放了100H個(gè)16位補(bǔ)碼數(shù)。求出它們的平均值放在AX寄存器中,并求出數(shù)組中有多少個(gè)數(shù)小于此平均值,將結(jié)果放在BX寄存器中。MOV AX,0MOV SI,0MOV CX,100AGAIN:ADD AX,DATA[SI]ADDSI,2LOOP AGAINMOV DX,0MOV CX,100IDIV CX ;AX為平均數(shù)MOV BX,0MOV SI,0MOV CX,100AGA: CMP AX,DATA[SI]JGE NEXTINC BX ;BX為小于AX的個(gè)數(shù)NEXT: ADD SI,2LOOP AGAIN16.編寫程序,求出首地址為DATA的100字無符號數(shù)組中的最小偶數(shù),并把它存放AX中。MOV AX,0FFFFH ;假設(shè)FFFFH是本數(shù)組中的最小偶數(shù)MOV SI,0MOV CX,100AGAIN:MOV BX,DATA[SI]TEST BX,1JNZ NEXTCMP AX,BXJB NEXTMOV AX,BXNEXT: ADD SI,2LOOP AGAIN7.設(shè)有一段英文,其字符變量名為ENG,試編寫一個(gè)程序,查對單詞READ在該文中出現(xiàn)次數(shù)并存放在BX寄存器中。.Modelsmall.Stack.Dataengdb'sNNREADRAREADunSUN'cntengequ$-engkeyworddb'READ'cntkeyequ$-keyword.Code.StartuppushdspopesXORalleabx,engmovdx,cntengsubdx,cntkeyincdxcldagain:movdi,bxleasi,keywordmovcx,cntkeyrepzcmpsbjnzlop1incallop1:incbxdecdxjnzagain.Exit0End8.測試AL寄存器的最低位是否為0,若為0,跳轉(zhuǎn)到B1,否則,跳轉(zhuǎn)到B2。TEST AL,1JZ B1JMP B29.比較兩個(gè)字符串STARING1和STARING2所含字符是否完全相同,若相同則顯示“MATCH”,不同則顯示“NOMATCH”。.MODELSMALL.STACK.DATANO_MA DB‘NO_MATCH’,0DH,0AH,’$’MAT DB‘MATCH’,0DH,0AH,’$’.CODE.STARTUPMOV SI,0MOV DI,0MOV CX,COUNTAGAIN:MOV AL,STRING1[SI]CMP AL,STRING2[DI]JZ MAMOV DX,OFFSETNO_MAMOV AH,9INT 21HJMP OKMA: INC SIINC DILOOP AGAINMOV DX,OFFSETMATMOV AH,9INT 21HOK:.EXIT0END10.設(shè)在變量單元A、B和C中存放有三個(gè)數(shù),若三個(gè)數(shù)都不為0,則求出三個(gè)數(shù)之和存入D中;若有一個(gè)為0,則將其他兩個(gè)單元也清零,請編寫此程序。MOV AX,ACMP AX,0HJZ NEXTMOV BX,BCMP BX,0HJZ NEXTMOV CX,CCMP CX,0HJZ NEXTADD D,AXADD D,BXADD D,CXJMP OKNEXT: MOV A,0MOV B,0MOV C,0OK: NOP11.設(shè)變量X為帶符號整數(shù),試按下面的要求編制此程序:①如果X的絕對值大于5,變量FX賦值為零。②如果X的絕對值不大于5,變量FX賦值為1—XMOV FX,0MOV AX,XCMP AX,0HJG NEXTNEG AXNEXT: CMP AX,5JA OKNEG AXADD AX,1MOV FX,AXOK: NOP12.編制程序計(jì)算(見下圖):設(shè)X,Y為雙字節(jié)帶符號數(shù)據(jù),分別存放在DAX,DAY單元,計(jì)算結(jié)果存入RLT單元。X×Y(Y>0,X>0)S=X÷Y(Y<0,X<0)|X+Y|(其它)MOV AX,DAXMOV BX,DAYCMP AX,0HJL NEXTCMP BX,0HJL QTIMUL BXJMP OKNEXT: CMP BX,0JGE QTMOV DX,0IDIV BXJMP OKQT: ADD AX,BXJNS OKNEG AXOK: MOV RLT,AX第七章課外練習(xí)題一、單項(xiàng)選擇題:1.完成將累加器AL清零,并使進(jìn)位標(biāo)志CF清零,下面錯(cuò)誤的指令是(A)。(A)MOVAL,00H (B)ANDAL,00H(C)XORAL,AL (D)SUBAL,AL2.下列指令執(zhí)行后總是使CF=0,OF=0的是(A)。(A)AND (B)NEG (C)NOT (D)INC3.若(AX)=10101101B,為了使其內(nèi)容變?yōu)?1010010B,下列(A)指令執(zhí)行一次即可完成此操作?(A)NOT指令 (B)OR指令 (C)AND指令 (D)XOR指令4.實(shí)現(xiàn)將DX:AX中存放的32位數(shù)擴(kuò)大四倍,正確的程序段是(C)。 (A)SHLAX,2 (B) RCLAX,2ROLDX,2 SHLDX,2 (C)MOVCX,2 (D) SHLAX,1 LOP:SHLAX,1 SHLAX,1 RCLDX,1 RCLDX,1 LOOPLOP RCLDX,15. TA1DW0102H,0304H,0506HTA2 DB02H,04H,06H┆MOVBX,offsetta1addbL,TA2+2movbx,[bx]ANDBX,0FFHaddBH,byteptrta1[BX]上述指令序列運(yùn)行后,BX的內(nèi)容是(B)。(A)0605H (B)0402H (C)0606H (D)0204H6.NEXT是某指令語句標(biāo)號,下述哪個(gè)程序段不能實(shí)現(xiàn)轉(zhuǎn)移到NEXT語句執(zhí)行(C )。(A) JMP NEXT (B) MOV BX,OFFSETNEXT JMPBX(C) MOV BX,NEXT (D) LEA AX,NEXT JMP BX JMP AX7.測試BL內(nèi)容是否與數(shù)據(jù)4FH相等,若相等則轉(zhuǎn)NEXT處執(zhí)行,可實(shí)現(xiàn)的是(D )。(A) TEST BL,4FH (B) OR BL,4FHJZNEXTJZNEXT(C) AND BL,4FH (D) XOR BL,4FHJZNEXTJZNEXT8.下面指令序列測試BH中的數(shù)是否為奇數(shù),若為奇數(shù)則轉(zhuǎn)移至K1處,括號處的指令應(yīng)為(A )。TEST BH,01H( ) K1(A)JNE (B)JZ (C)JS (D)JC9.下面指令序列測試BX中的數(shù)是否為負(fù)數(shù),若為負(fù)數(shù)則轉(zhuǎn)移至F1處,不正確的指令序列應(yīng)為(C )。(A) TEST BX,8000H (B) AND BX,BXJNZ F1 JS F1(C) CMP BX,0H (D) SUB BX,0H JNS F1 JL F110.編寫分支程序,在進(jìn)行條件判斷前,可用指令構(gòu)成條件,下列指令中不能形成條件的指令是(D )。 (A)CMP (B)SUB (C)AND (D)MOV11.為使CX=-1時(shí),轉(zhuǎn)至MINUS而編制了一指令序列,其中錯(cuò)誤的序列是(D)。(A) INCCX (B) SUBCX,0FFFFHJZMINUS
JZMINUS(C) ANDCX,0FFFFH (D) XORCX,0FFFFHJZMINUSJZMINUS二、程序分析題1. AND AL,ALJZ BRCH1RCR AL,1JZ BRCH2RCL AL,1INC ALJZ BRCH3┆上述程序運(yùn)行后,請回答:①當(dāng)AL=( 0 )時(shí),程序轉(zhuǎn)向BRCH1;②當(dāng)AL=( 1 )時(shí),程序轉(zhuǎn)向BRCH2;③當(dāng)AL=( -1 )時(shí),程序轉(zhuǎn)向BRCH3。2.現(xiàn)有下列程序段:MOV AX,6540HMOV DX,3210HMOV CL,04SHL DX,CLMOV BL,AHSHL AX,CLSHR BL,CLOR DL,BL試問上述程序段運(yùn)行后,(AX)=(5400H),(BL)=(06H)(DX)=(2106H)3.分析下面程序段:MOV AL,200SAR AL,1MOV BL,ALMOV CL,2SAR AL,CLADD AL,BL試問程序段執(zhí)行后(BL)=(0E4H),(AL)=(0DDH)4.程序段如下:BLK1 DB 46,84,34,-5,20,122,73┆MOV CX,7LEA SI,BLK1NEXT: MOV AL,[SI]INC SITEST AL,81HLOOPZ NEXTMOV BL,[SI]請回答程序段運(yùn)行后:(AL)=(0FB)H,(BL)=(14)H四、用最少的程序編寫下列程序段:1.編寫完成下列功能的小程序段:⑴ 將寄存器AL的第4,3位取反,其余位保持不變。XORAL,00011000B⑵ 將寄存器AL的第4,3位清零,其余位保持不變。ANDAL,11100111B⑶ 將寄存器AL的第4,3位置1,其余位保持不變。ORAL,00011000B⑷ 將寄存器AL的第4,3位寫入MEN單元中的第4,3位,其余位保持不變。ANDAL,00011000BANDMEN,11100111BORMEN,AL⑸ 將寄存器AL的第i位寫入MEN單元的第i位,其余位保持不變,i值在CL中。MOVBL,1SHLBL,CLANDAL,BLNOTBLANDMEN,BLORMEN,AL⑹ 將寄存器AL的第i+1,i位寫入MEN單元的第i+1,i位,其余位保持不變,i值在CL中。MOVBL,3SHLBL,CLANDAL,BLNOTBLANDMEN,BLORMEN,AL⑺ 如果寄存器AL的第6,5位為00,則將AH清0,否則置全1。TEST AL,01100000BJZ L1MOV AH,0FFHJMP OKL1: MOV AH,0OK: NOP⑻ 如果寄存器AL的第6,5位為01,則將AH清0,否則置全1。AND AL,01100000BCMP AL,00100000BJZ L1MOV AH,0FFHJMP OKL1: MOV AH,0OK: NOP⑼ 如果寄存器AL的第6,5位為10,則將AH清0,否則置全1。AND AL,01100000BCMP AL,01000000BJZ L1MOV AH,0FFHJMP OKL1: MOV AH,0OK: NOP⑽ 如果寄存器AL的第6,5位為11,則將AH清0,否則置全1。AND AL,01100000BCMP AL,01100000BJZ L1MOV AH,0FFHJMP OKL1: MOV AH,0OK: NOP⑾ 如果寄存器AL的數(shù)據(jù)為偶數(shù),則將AH清0,否則置全1。TEST AL,1JZ L1MOV AH,0FFHJMP OKL1: MOV AH,0OK: NOP⑿ 如果寄存器AL的數(shù)據(jù)為正數(shù),則將AH清0,否則置全1。TEST AL,80HJZ L1MOV AH,0FFHJMP OKL1: MOV AH,0OK: NOP2.不允許使用乘法指令來完成AX與12的乘法運(yùn)算。SHL AX,1 ;將AX乘2(等于2倍)MOV BX,AX ;預(yù)存一份AX在BX內(nèi)SHL AX,1 ;將AX再乘2(等于4倍)ADD AX,BX ;加上原有2倍(等于6倍)SHL AX,1 ;再乘2(等于12倍)3.寫一指令序列,將DX與AX中的雙字左移三位。MOVCX,3LOP: SHLAX,1RCLDX,1LOOPLOP4.內(nèi)存單元MEMB存放著一個(gè)8位的數(shù)據(jù),將它的高4位與低4位互換。MOVCL,4ROLMEN,CL5.將AL的第7位和第0位,第6位和第1位,第5位和2第位,第4位和第3位互換。MOVCX,7MOV BL,0LOP: MOV AH,ALAND AH,1ADD BL,AHSHRAL,1SAL BL,1LOOPLOPADD AL,BL五、簡答題1.至少使用三種方法(提示:MUL、SHL和SHR指令)實(shí)現(xiàn)將DATA中的字節(jié)數(shù)據(jù)乘以64的指令序列。①M(fèi)OV AL,64MUL DATA②MOV CL,6SHL DATA,CL③MOV AH,DATAMOV AL,0SHRAX,2MOV DATA,AL第九章課外練習(xí)題一、單項(xiàng)選擇題: 1.已知CALL BX執(zhí)行前SP=100H,執(zhí)行后SP的內(nèi)容為( D )。 (A)100H (B)102H (C)98H (D)0FEH 2.已知SP=100H,指令RET(遠(yuǎn)返回)執(zhí)行后SP的值為(B )。(A)106H (B)104H (C)0FCH (D)0FAH3.已知SUBR是一個(gè)屬性NEAR的子程序,下述調(diào)用SUBR子程序的指令序列中,哪一個(gè)不能實(shí)現(xiàn)調(diào)用SUBR的目的( C )。(A)CALLSUBR (B)CALLNEARPTRSUBR(C)MOVBX,OFFSETSUBR (D)MOVBX,OFFSETSUBR CALLNEARPTR[BX] CALLBX4.下面是將某存儲區(qū)清0的宏定義,如將BUFF開始的100個(gè)存儲單元清0,則其宏調(diào)用格式為(C)。CLEAR MACRO DIR,DST,CNT DIR LEA DI,DST MOV CX,CNT XOR AL,AL REP STOSBENDM(A)CLEARBUFF,100 (B)CLEARSTD,BUFF,100(C)CLEARCLD,BUFF,100 (D)CLEARBUFF,STD,1005.宏指令庫以(C)格式存放在磁盤上。(A)可執(zhí)行代碼 (B)目標(biāo)代碼 (C)源代碼6.匯編程序使用(C)偽指令使重復(fù)塊重復(fù)多次。(A)LOOP (B)REPE (C)REPT (D)LOCAL二、判斷題(判斷每題正誤,對的在題后括號內(nèi)劃“√”,錯(cuò)的劃“×”)1.CALL WORD PTR[SI] ( × )2.CALL [BX][SI] ( × )3.CALL AX ( × )4.CALL [BX] ( √ )5.CALL NEAR PTR[SI] ( × )6.CALL FAR PTR[SI+2] ( × )7.宏的處理是在程序執(zhí)行過程中處理的( × )8.宏定義中的形式參數(shù)可以多于宏調(diào)用的實(shí)在參數(shù) ( √ )三、填空題1.調(diào)用程序與子程序之間的參數(shù)傳遞方法有三種,即堆棧法(寄存器法)(存儲單元)。2.LOCAL用于說明局部標(biāo)號的偽指令,它只允許在(宏程序中)使用,其位置必須在(第一條指令前)。四、簡答題1.指出CALL指令與JMP指令的異同?答:相同----都可以無條件跳轉(zhuǎn)到目標(biāo)地址。不同---CALL指令有返回,而JMP沒有;CALL指令影響堆棧段的變化,而JMP不影響堆棧段。2.指出子程序和宏指令的區(qū)別?宏子程序處理者匯編程序中央處理器處理時(shí)間在匯編過程中程序執(zhí)行時(shí)處理方法用宏體替換宏指令用CALL指令調(diào)用占用內(nèi)存占用內(nèi)存空間多占用內(nèi)存空間少運(yùn)行速度運(yùn)行速度較高運(yùn)行速度較低靈活性十分靈活不夠靈活3.段內(nèi)調(diào)用和段間調(diào)用的異同點(diǎn)是什么?答:段內(nèi)調(diào)用是指在調(diào)用和返回過程中,轉(zhuǎn)返地址不涉及CS的變化,只通過IP內(nèi)容的變化實(shí)現(xiàn)控制的轉(zhuǎn)返;而段間調(diào)用需要CS,由CS和IP的變化共同決定控制的轉(zhuǎn)返。4.主程序和子程序之間有哪幾類參數(shù)傳遞方法?答:主程序與子程序之間的參數(shù)傳遞方法有三種,即堆棧法、寄存器法和存儲單元。5.子程序說明文件由哪幾個(gè)部分組成?并分別說明各組成部分的含義?答:編寫子程序的目的在于減少源程序中某些相同功能程序段的重復(fù)書寫,以利于自己和他人編寫程序時(shí)使用。一般包含下述幾項(xiàng)內(nèi)容:(1)子程序名稱:用子程序定義偽指令定義該子程序時(shí)的名字;(2)子程序功能:用自然語言或數(shù)學(xué)語言等形式簡單清楚地描述子程序完成的任務(wù);(3)入口參數(shù):說明子程序要求有幾個(gè)入口參數(shù),這些參數(shù)表示的意義及存放位置;(4)出口參數(shù):說明子程序要求有幾個(gè)輸出參數(shù)(運(yùn)行結(jié)果),這些參數(shù)表示的意義及存放位置;(5)受影響的寄存器:說明子程序運(yùn)行后,哪些寄存器的內(nèi)容被破壞了,以便使用者在調(diào)用該子程序之前注意保護(hù)現(xiàn)場。五、程序分析題1.下述程序段運(yùn)行后,AL=( 88H ),CL=(80H )MOVAL,38HMOVBL,49HCALLSUBOINCALDECCL…SUBOPROC
ADDAL,BL
MOVCL,AL
DAA
RET
SUBOENDP
2.宏指令GOTOL,X,REL,Y(其中REL可以是Z,NZ,L,NL等)定義如下:GOTO MACRO L,X,REL,YIFB<REL>JMPLELSEMOVAX,XCMPAX,YJ&RELLENDIFENDM回答下列問題:①展開宏調(diào)用GOTOLOP,SUM,NZ,15①宏展開: 1MOVAX,sum1CMPAX,151Jnzlop②該宏指令的功能。②可以根據(jù)不同情況產(chǎn)生無條件轉(zhuǎn)移指令或比較和條件轉(zhuǎn)移指令。六、填空完善程序1.下面是計(jì)算S=X2+Y2的程序,其中平方值的計(jì)算是用直接查表法編寫的SQ1子程序。設(shè)在DAX,DAY單元存放一個(gè)-9~+9的字節(jié)數(shù)據(jù),在SQRTAB數(shù)據(jù)區(qū)中存放了0~9的平方值,將結(jié)果存入SQR單元。.MODEL SMALL.STACK.DATADAXDB -7DAY DB 4SQRTAB DB 0,1,4,9,16,25,36,49,64,81SQR DB ?.CODE.STARTUPMOV AL,DAXCALL SQ1MOV CL,AL( MOV AL,DAY )CALL SQ1ADD CL,AL( MOV SQR,AL ).EXIT 0SQ1 PROC NEAR( TEST AL,80H )JZ K1NEG ALK1: LEA BX,SQRTAB( XLAT )RETSQ1 ENDPEND2.請根據(jù)下面子程序的說明文件填充其中的空白。子程序的說明文件如下:子程序名稱:AVER子程序功能:求一組帶符號數(shù)據(jù)的平均值入口參數(shù):數(shù)據(jù)的首地址在DS:SI中存放,數(shù)據(jù)個(gè)數(shù)存放在CL中出口參數(shù):AL=數(shù)據(jù)的平均值A(chǔ)VERPROCPUSHSIPUSHCXXORBX,BX( MOV CH,0 )NEXT: LODSB( CBW )ADDBX,AXLOOPNEXTPOPCX( MOV AX,BX )IDIVCL( POP SI )RETAVERENDPALTOASC MACROLOCAL ALLN1AND AL,0AHJL ALLN1ADD AL,ALTOASC MACROLOCAL ALLN1AND AL,0AHJL ALLN1ADD AL,7ALLN1: ADD AL,30HENDMALTOASC MACROAND AL,0FHJL ALLN1ADD AL,7ALLN1: ADD AL,30ALTOASC END八、編程題1.編寫一個(gè)子程序,完成自然數(shù)1~100的求和運(yùn)算。SUM PROC NEARPUSH AXPUSH CXMOV AX,0MOV CX,100AGAIN:ADD AX,CXLOOP AGAINPOP CXPOP AXSUM ENDP2.編寫多字節(jié)加法子程序,寫出子
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版小額貸款擔(dān)保及貸款利率調(diào)整及貸款條件變更及擔(dān)保人責(zé)任合同3篇
- 二零二五年度木工耗材供應(yīng)與配送合同4篇
- 01 修辭手法題的應(yīng)對策略-高考語文一輪復(fù)習(xí)之核心考點(diǎn)解密
- 七年級道德與法治試卷
- 信用激勵措施考核試卷
- 二零二五年度鋼材行業(yè)質(zhì)量標(biāo)準(zhǔn)制定與實(shí)施合同3篇
- 二零二五年度陵園墓碑雕刻技藝傳承合同4篇
- 2025版品牌視覺設(shè)計(jì)制作合同范本2篇
- 《菜根譚名句》課件
- 2025年因擅自公開他人隱私賠償協(xié)議
- 課題申報(bào)書:GenAI賦能新質(zhì)人才培養(yǎng)的生成式學(xué)習(xí)設(shè)計(jì)研究
- 駱駝祥子-(一)-劇本
- 全國醫(yī)院數(shù)量統(tǒng)計(jì)
- 《中國香文化》課件
- 2024年醫(yī)美行業(yè)社媒平臺人群趨勢洞察報(bào)告-醫(yī)美行業(yè)觀察星秀傳媒
- 第六次全國幽門螺桿菌感染處理共識報(bào)告-
- 天津市2023-2024學(xué)年七年級上學(xué)期期末考試數(shù)學(xué)試題(含答案)
- 經(jīng)濟(jì)學(xué)的思維方式(第13版)
- 盤錦市重點(diǎn)中學(xué)2024年中考英語全真模擬試卷含答案
- 手衛(wèi)生依從性調(diào)查表
- 湖北教育出版社四年級下冊信息技術(shù)教案
評論
0/150
提交評論