微機原理課后習題答案_第1頁
微機原理課后習題答案_第2頁
微機原理課后習題答案_第3頁
微機原理課后習題答案_第4頁
微機原理課后習題答案_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第1章 進制及碼元1、進制轉換129= 81H= 10000001B=201Q298= 12AH= 100101010B=452Q1000= 3E8H= 1111101000B= 1750Q5DH= 1011101 B= 135 Q= 93 D3E8H= 1111101000 B= 1750Q= 1000 D;357Q=11101111 B= 0EF H= 239 D2、進制計算 100101102FE3F7,-119FFF7,-32759473、數(shù)據(jù)表示范圍:一個字節(jié)的無符號數(shù)表示范圍為0255,有符號數(shù)補碼表示范圍為-l28+127。兩個字節(jié)的無符號數(shù)表示范圍為065535,有符號數(shù)補碼表

2、示范圍為32768+32767。N位二進制數(shù)的無符號數(shù)表示范圍為0(2N-1),有符號數(shù)(補碼)表示范圍為-2N-1(2N-1-1).4、35H代表的ASCII字符為5,代表十六進制數(shù)時等價的十進制值為53 ,代表壓縮8421BCD碼等價的十進制值為35 ,代表非壓縮8421BCD碼等價的十進制值為5。5、FFH代表無符號數(shù)時等價的十進制值為255 ,代表補碼有符號數(shù)時等價的十進制值為 一1 ,代表反碼有符號數(shù)時等價的十進制值為 一0 ,代表原碼有符號數(shù)時等價的十進制值為一l27。6、20的8位二進制補碼為 ECH ,原碼為 94H ,反碼為 EBH 。158的16位二進制補碼為009EH,原

3、碼為009EH ,反碼為 009EH 。7、英文字符一般在計算機內占用(1)個字節(jié),每個字節(jié)的最高位一定為 0 ,全角英文字符在計算機內占用 2個字節(jié),一個漢字在計算機內占用 2 個字節(jié),每個字節(jié)最高位為 1 。8、設階碼用8位補碼表示,尾數(shù)部分用16位補碼表示,則(1/32+1/128+1/512)的尾數(shù)部分及階碼分別為多少?第2章 微機硬件基礎1、請畫出計算機系統(tǒng)硬件圖。2、8086/88CPU為什么要分為BIU和EU兩大模塊?答:為了使取指和分析、執(zhí)行指令可并行處理,提高CPU的執(zhí)行效率。8086/88CPU有兩大模塊總線接口單元BIU和執(zhí)行單元EU組成。3、簡述8086/88 CPU的

4、兩大模塊BIU和EU的主要功能及組成。答:如下圖所示:4、簡述8086/88 CPU的14個寄存器的英文名、中文名及主要作用。答:AX(Accumulator)(AH、AL)累加器,它是匯編編程中最常用的一個寄存器,主要用于乘除運算、BCD運算、換碼、IO操作、串操作、中斷調用等。 BX(Base)(BH、BL)基址寄存器,主要用于存放地址、基址(默認相對于DS段)等。 CX(Counter)(CH、CL)計數(shù)器,主要用于循環(huán)計數(shù)、串操作計數(shù)、移位計數(shù)(CL)等。DX(Data)(DH、DL)數(shù)據(jù)寄存器,主要用于l6位乘除、問接IO、中斷調用等。 BP(Base Pointer)基址指針,主要

5、用于存放地址、基址(默認相對于SS段)等。 SP(Stack Pointer)堆棧指針(棧頂指針),主要用于存放棧頂?shù)刂贰?SI(Source Index)源變址寄存器,用于存放地址、變址、串操作源變址。 DI(Destination Index)目的變址寄存器,用于存放地址、變址、串操作目的變址。 CS(Code Segment)代碼段寄存器(代碼段),用于存放正在或正待執(zhí)行的程序段的起始地址的高l6位二進制數(shù)據(jù),即程序段的段地址。 , DS(Data Segment)數(shù)據(jù)段寄存器(數(shù)據(jù)段),用于存放正在或正待處理的一般數(shù)據(jù)段的起始地址的高l6位二進制數(shù)據(jù),即一般數(shù)據(jù)段的段地址。 ES(Ex

6、tra Segment)附加數(shù)據(jù)段寄存器(附加段),用于存放正在或正待處理的附加數(shù)據(jù)段的起始地址的高l6位二進制數(shù)據(jù),即附加數(shù)據(jù)段的段地址。 SS(Stack Segment)堆棧數(shù)據(jù)段寄存器(堆棧段),用于存放正在或正待處理的堆棧數(shù)據(jù)段的起始地址的高l6位二進制數(shù)據(jù),即堆棧數(shù)據(jù)段的段地址。 IP(Instruction pointer)指令指針,它的內容始終是下一條待執(zhí)行指令的起始偏移地址,與CS一起形成下一條待執(zhí)行指令的起始物理地址。CS:IP的作用是控制程序的執(zhí)行流程。IP一般會自動加l(邏輯加1、實際隨指令長度變化)移向下一條指令實現(xiàn)順序執(zhí)行;若通過指令修改CS或IP的值,則可實現(xiàn)程序

7、的轉移執(zhí)行。 PSW(Program Status word)程序狀態(tài)字,它其中有三個控制標志(IF、DF、TF)和6個狀態(tài)標志(SF、PF、ZF、OF、CF、AF)。控制標志是用于控制CPU某方面操作的標志,狀態(tài)標志是部分指令執(zhí)行結果的標志。5、請畫出8086/88 CPU的內部結構圖。答:如下圖所示:6、請說明8086/88 CPU的標志位的英文名、中文名及填充方法。答:IF(Interrupt Enable Flag)中斷允許標志,用于控制CPU能否響應可屏蔽中斷請求,IF=1能夠響應,IF=0不能響應。 DF(Direction Flag)方向標志,用于指示串操作時源串的源變址和目的串

8、的目的變址變化方向,DF-1向減的方向變化,DF=0向加的方向變化。 TF(TrapFlag)陷阱標志(單步中斷標志),TF=1程序執(zhí)行當前指令后暫停,TF=0程序執(zhí)行當前指令后不會暫停。 SF(Sign Flag)符號標志,指令執(zhí)行結果的最高二進制位是0還是l,為0,則SF=0,代表正數(shù);為l,則SF=1,代表負數(shù)。我們一般是用十六進制數(shù)表示,則可以根據(jù)十六進制的最高位是落在O7還是落在8F之間,若落在07之間則SF=0否則SF=1。 PF(Parity ChECk Flag)奇偶校驗標志,指令執(zhí)行結果的低8位中1的個數(shù)是奇數(shù)個還是偶數(shù)個,若為奇數(shù)個則PF=0,若為偶數(shù)個則PF=1。 ZF(

9、Zero Flag)零標志,指令執(zhí)行結果是不是為0,若為0則ZF=1,否則ZF=0。 OF(Overflow Flag)有符號數(shù)的溢出標志,指令執(zhí)行結果是否超出有符號數(shù)的表示范圍,若超過則0F=1,否則OF=0。我們可以通過判斷是否出現(xiàn)以下四種情況之一:正加正得負,正減負得負,負加負得正,負減正得正。若出現(xiàn)則0F=1否則OF=0 CF(Carry Flag)進位借位標志無符號數(shù)的溢出標志),指令執(zhí)行結果的最高位是否有向更高位進位或借位,若有則CF=1,同時也代表無符號數(shù)溢出;若無則CF=0,也代表無符號數(shù)未溢出。 AF(Auxiliary Carry Flag)輔助進位借位標志,低4位二進制是

10、不是有向高位進位或借位,若有則AF=1,否則AF=0,其主要用于BCD修正運算。7、內存分段組織的優(yōu)缺點是什么?答:優(yōu)點如下:(1)80868088 CPU中的寄存器只有16位,如果采用它們直接尋址,則尋址能力勢必限制在64 KB范圍內,而采用分段組織可以較好地實現(xiàn)擴展CPU的尋址能力。每段的大小可達64 KB,不同段的組合則可尋址更大的范圍。 (2)使程序與數(shù)據(jù)相對獨立,不同存取方式的數(shù)據(jù)也相對獨立。 程序:存放于代碼段CS中 堆棧方式:存放于堆棧段SS中 數(shù)據(jù):隨機方式:存放于數(shù)據(jù)段DS及附加段ES中 (3)便于程序和數(shù)據(jù)的動態(tài)裝配,從一個地方挪到另外一個地方只要更改一下段寄存器的值即可,

11、段內偏移可以不用改變。缺點:內存地址采用分段組織增加地址計算的復雜度,降低了CPU的執(zhí)行效率。8、1MB內存最多可以有(64K)個不同的段地址,若不允許重疊的話最多可有(16)個不同的段地址。不同的段間(可以)重疊。9、設DS=26FCH,BX=108H,SI=9A8H,試求出使DS:BX與ES:Sl指向同一物理地址的ES值。 答:即DS:BX=ES:SI DS:BX=DS l6+BX=26FCH16+108H=270C8H ES:SI=ES16+SI=ES16+9A8HES=(270C8H一9A8H)l6=2672H10、接口、端口以及端口地址之間的對應關系如何?答:一個計算機系統(tǒng)內有很多接

12、口,一個接口內一般有多個端口,一個端口可以有多個端口地址與其對應(這叫重疊地址),一個端口地址可以對應多個端口(但需要繼續(xù)區(qū)分才能訪問,如讀寫順序、讀寫信號、數(shù)據(jù)位、索引區(qū)分)。所以通過端口傳輸信息首先需要區(qū)分端口,區(qū)分端口可通過端口地址不同來區(qū)分。11、訪問端口有哪些方法?答:(1)用I/O指令實現(xiàn)信息傳輸;(2)通過BIOS中斷調用實現(xiàn)信息傳輸;(3)通過DOS中斷調用實現(xiàn)信息傳輸。12、請根據(jù)圖2.3說明ADD AX, BX指令的取指及執(zhí)行過程。自己看書13、8086/88 的20位物理地址是怎樣形成的?當CS=2000H, IP=0100H, 下一條待執(zhí)行指令的物理地址等于多少?答:2

13、0位物理地址由段地址左移4位加偏移地址形成,下一條待執(zhí)行指令等于CS*10H+IP得到20100H。14、已知當前數(shù)據(jù)段位于存儲器的B1000H到BF0FFH范圍內,請指出DS段寄存器的取值范圍。答:DS段寄存器的取值范圍:AF10HB100H第3章尋址方式及指令系統(tǒng)1、指令是CPU可以理解并執(zhí)行的操作命令,指令由操作碼和操作數(shù)兩部分組成,指令有兩個級別,即機器級和匯編級。2、請畫出程序執(zhí)行流程示意圖。3、指令主要有哪些分類方式及其主要類別是什么?答:指令分類有不同的方式。按操作數(shù)的個數(shù)將指令分為零地址指令(無操作數(shù))、一地址指令(只有一個操作數(shù))、二地址指令(有兩個操作數(shù))、多地址指令(多于

14、兩個操作數(shù));按指令級別分為機器指令和匯編指令:按是否轉移分為轉移指令和順序指令;按功能分為七大類:傳送類、算術運算類、位操作類、IO類、串操作類、CPU控制類、轉移類;按指令長度(即指令占用的字節(jié)數(shù))分為l字節(jié)指令、2字節(jié)指令等,80868088指令長度是不同的,叫變字長,不同的指令有不同的指令長度,從16字節(jié)均有;按指令執(zhí)行期間取操作數(shù)是否需要與總線打交道分為內部指令(不需)和外部指令(需要),類似功能的指令內部指令比外部指令執(zhí)行速度快,所以在編程時盡量采用內部指令即多用寄存器優(yōu)化程序。4、操作數(shù)的尋址方式有哪些?并舉例說明其主要特點。答:操作數(shù)尋址方式主要有立即尋址方式、寄存器尋地址、存

15、儲器尋址方式、端口尋址方式4類。(1)立即尋址方式:操作對象是這個操作數(shù)本身,MOV AL,5(2)寄存器尋地址:操作對象是寄存器中的內容MOV AX,BX(3)存儲器尋址方式:操作對象是內存地址所對應的存儲單元中的內容,MOV AX 2000H (4)端口尋址方式:操作數(shù)是指明端口的地址、端口地址所對應的端口中的內容是操作對象IN AX,46直接尋址。5、內存尋址中段寄存器與段內偏移地址對應關系如何?6、設CS=1000H,DS=2000H,ES=3000H,SS=4000H,IP=100H,SP=200H,BX=300H,BP=400H,SI=500H,則下一條待執(zhí)行指令的物理地址為多少?

16、當前棧頂?shù)奈锢淼刂窞槎嗌?BX代表的存儲單元的物理地址為多少?BP代表的存儲單元的物理地址為多少?ES:BX+SI代表的存儲單元的物理地址為多少?答:下一條待執(zhí)行指令的物理地址=CS16+IP=1000H16+IOOH=10100H。 當前棧頂?shù)奈锢淼刂?SS16+SP=4000H16+200H=40200H。 BX代表的存儲單元物理地址=DS16+BX=2000H X l6+300H=20300H。 BP代表的存儲單元物理地址=SS X l6+BP=4000H16+400H-40400H。ES:BX+SI代表的存儲單元物理地址=ES16+BX+SI=3000H16+300H+500H=308

17、00H 7、試根據(jù)以下要求,分別寫出相應的匯編語言指令。(1)以寄存器BX和DI作為基址變址尋址方式把存儲器中的一個字送到DX寄存器。 答:MOV DX,BX+DI(2)以寄存器BX和偏移量VALUE作為寄存器相對尋址方式把存儲器中的一個字和AX相加,把結果送回到那個字單元。 答:ADD VALUEBX,AX(3)將1字節(jié)的立即數(shù)0B6H與以SI作為寄存器間接尋址方式的字節(jié)單元相比較。 答:CMP BYTE PTRSI,0B6H(4)將BH的高4位與低4位互換。 答:MOV CL,4 ROR BH,CL;或者ROL BH,CL (5)測試BX的第3、7、9、12、13位是否同時為0。 答:TE

18、ST BX,3288H;0011001010001000B (6)將存放了09數(shù)值的DL寄存器中的內容轉化為相應的09的字符。 答:ADD DL,30H;或者OR DL,30H (7)將存放了AF字符的AL寄存器中的內容轉化為相應的數(shù)值。 答:SUB AL,37H8、寫出清除AX寄存器的多種方法并比較(要求單指令實現(xiàn))。答:(1)ANDAX,0;可以對AX清零,還可以清除進位位和影響到SF、ZF、PF標志位。(2)MOVAX,0;此條指令占用3個字節(jié)。(3)SUB AX,AX ;減法指令, 該條指令只占用2個字節(jié)。(4)XOR AX,AX9、分別用存儲器的5種尋址方式實現(xiàn)將以A為首址的第5個字

19、(注意:從第0個算起)送AX的指令序列。10、指出下列指令錯誤的原因。答:(1)MOV CL,300 ;300超過字節(jié)數(shù)據(jù)表示范圍 (2)MOV CS,AX ;CS不能作為目的操作數(shù) (3)MOV BX,DL ;數(shù)據(jù)類型不匹配 (4)MOV ES,1000H :立即數(shù)不能送給段寄存器 (5)INC BX ;數(shù)據(jù)類型不明確 (6)ADD AX,DS :段寄存器不能參加運算 (7)TEST BX,CX ;存儲器間接尋址只能使用BX、Sl、Dl、BP四個之一 (8)SUB BX,BP+SI ;加減兩個操作數(shù)不能同時為存儲操作數(shù) (9)JC SI ;條件轉移只有短轉移尋址方式(10)SHL BX ;少

20、給一個表明移位次數(shù)的操作數(shù),l或CL11、(1)CS=(1000)IP=(0155)(2)CS=(1000)IP=(176F)(3)CS=(1000)IP=(17C6)(4)CS=(2000)IP=(0146)(5)CS=(1000)IP=(1770)(6)CS=(2000)IP=(0146)12、分別說明下列各組指令中的兩條指令的區(qū)別。答:(1)MOV AX,TABLELEA AX,TABLE假設TABLE為字變量名,則:左為將TABLE單元的內容送AX,右為將TABLE單元的偏移地址送AX。假設TABLE為字節(jié)變量名,則:左為錯誤指令,右為將TABLE單元的偏移地址送AX假設TABLE為常

21、量名,則:左為將TABLE的內容送AX,右為錯誤指令(2)AND BL,0FHOR BL,0FH 左為將BL的高4位清0,右為將BL的低4位置1(3)JMP SHORT Ll JMP NEA RPTR Ll 左為短轉移,2字節(jié)的指令,轉移范圍為一l28+127右為近轉移,l字節(jié)的指令,轉移范圍為-32 768+32 767(4)MOV AX,BXMOV AX,BX左為將BX的值送AX右為將BX的值作為相對DS段的內存單元偏移地址,取出字單元值送AX(5)SUB DX,CXCMP DX,CX 左為減法,并將DX-CX的值存入DX中 右為比較,做減法,但不會將DX-CX的值存入DX中(6)MOV

22、BPSI,CL MOV DS:BPIESI,CL 左邊第操作數(shù)默認為相對于SS段偏移的存儲器操作數(shù) 右邊第一操作數(shù)采用段超越,指定為相對于DS段偏移的存儲器操作數(shù)13、寫出判斷AL為正為負的程序段(請至少用三種方法)。答:方法一:CMP AL,80H ;而后用JAE代表負數(shù)轉移,JB代表正數(shù)轉移 方法二:CMP AL,00H ;而后用JGE代表正數(shù)轉移,JL代表負數(shù)轉移 方法三:TEST AL,80H ;而后用JNZ代表負數(shù)轉移,JZ代表正數(shù)轉移 方法四:OR AL,AL ;而后用JNS代表負數(shù)轉移,JS代表正數(shù)轉移 方法五:AND AL,AL ;而后用JNS代表負數(shù)轉移,JS代表正數(shù)轉移 方

23、法六:SUB AL,00H ;而后用JGE代表正數(shù)轉移,JL代表負數(shù)轉移 方法七:TEST AL,80H :而后用JNS代表正數(shù)轉移,JS代表負數(shù)轉移14、思考題:試比較以下幾條指令的功能。答:MOV BX,SI ;將SI的值送給BXMOV BX,SI ;將SI的值作為偏移地址找到對應的內存單元中的值送給BXMOV BX,OFFSETSI ;將Sl的值作為偏移地址找到對應內存單元的偏移地址送給BX,即SI的值送給BX LEA BX,SI ;將Sl的值作為偏移地址找到對應內存單元的偏移地址送給BX, 即Sl的值送給BX LDS BX,SI ;將Sl值作為偏移地址找到對應內存單元中的第一個字值送給

24、BX, 第二個字值送DS LES BX,SI :將SI值作為偏移地址找到對應內存單元中的第一個字值送給BX, 第二個字值送ES15、設B、D為字節(jié)變量,A、C為字變量,且A除B可能會溢出,試編寫無符號數(shù)或有符號數(shù)AB商送C,余數(shù)送D。答:可能會溢出則要考慮擴展數(shù)據(jù)表示能力。 ;無符號數(shù)除法 ;有符號數(shù)除法MOV AL,B MOV AL,BXOR AH,AH CBWMOV BX,AX MOV BX,AXMOV AX,A MOV AX,AXOR DX,DX ;無符號擴展 CWD ;有符號擴展DIV BX IDIV BXMOV C,AX MOV C,AXMOV D,DL MOV D,DL16、編寫程

25、序段實現(xiàn)DX、AX中32位二進制數(shù)*l0 (設不溢出)。答:;X*10=X*8+X*2,用移位指令實現(xiàn)SHL AX,1RCL DX,1 :DX,AX=(DX,AX)*2MOV BX,DXMOV BP,AX ;BX,BP轉存2倍值SHL AX,lRCL DX,l ;再乘2SHL AX,lRCL DX,1 :再乘2ADD AX,BPADC DX,BX ;8倍+2倍=10倍17、請編寫程序段實現(xiàn)如圖3.33所示功能。MOV SI,BXLDSBX,SI18、設已有定義STRDB“Sdfikjwsmfw893040pYUIUKLHGUkjdshf8”NEQU$ - STR1試編寫實現(xiàn)在STR中查找是否存

26、在非A的功能程序段。即表示STR串中大部分是A,若其中存在不是A的字符則查找成功,若STR全部為A則不成功。19、程序理解執(zhí)行。(1) MOV AH,一l ;AH=FFH MOV AL,180 ;AL=B4H MOV BL,15 ;BL=0FH ID BL ;AX/BL即:-7615,商-5,余數(shù)-l 程序段執(zhí)行后,AX=0FFFBH。 說明:關鍵是要知道誰除以誰,特別注意是有符號除還是無符號除。(2) MOV AL,0CH ;AL=0CH OR AL,AL ;AL=0CH,CF=0 SBB AL,0F0H ;AL=lCH NEG AL ;AL=E4H,CF=1 ADC AL,0D4H ;AL

27、=B9H TEST AL,35H ;AL=B9H,CF=0 程序段執(zhí)行后,CF= 0 ,AL=B9H。 說明:第(1)、(2)小題只要理解每條指令功能及對標志位的影響,逐步進行即可完成。(3) MOV AL,08H MOV AH,一l ;AX=FF08H MOV BX,0F8H ;BX=00F8H CMP AX,BX 程序段執(zhí)行后SFOF=1 ,CF= 0 。(4) MOV AX,中 ;AX的二進制高位為1,即落在負數(shù)范圍 MOV BX,AB ;BX的二進制高位為0,即落在正數(shù)范圍 CMP AX,BX 程序段執(zhí)行后SFOF=1 ,CF= 0 。 說明:第(3)(4)小題實質是考查有符號數(shù)和無符

28、號數(shù)大小的比較。(5) MOV AX,58 ;AX=3538H AND AX,0F0FH ;AX=0508H AAD ;AX=58=003AH 程序段執(zhí)行后AX= 003A H,即58。 程序段的功能是:將兩位非壓縮BCD碼轉化為其對應的十六進制數(shù)。 說明:可用AAD指令實現(xiàn)將十位和個位數(shù)值拼裝還原為099的十六進制數(shù)。反之將099的數(shù)值分離成十位和個位可用AAM指令實現(xiàn),教材匯編語言、微機原理及接口技術(第2版)例510和例513中均有應用。20、程序語句填空。(1)下列是完成120之間的奇數(shù)累加和存于AL中的程序段: XOR AL,AL MOV CX,10 ;循環(huán)次數(shù) MOV BL,1AG

29、AIN:ADD ALBL ADD BL,2 ;步長,參數(shù)改變 LOOP AGAIN(2)下列是在串長為N的串STR中查找是否有M字符的程序段: MOV DI,SEG STR MOV ES,DI LEA Dl,STR CLD MOV CX,N MOV AL,7M7 REPNE SCASB ;串查找核心指令 JZ FOUND ;轉到找到分支(3) 下列是完成1位十六進制數(shù)X顯示的程序段: MOV DL,X AND DL,0FH ADD DL,30H ;或OR DL,30H CMP AL,9 JBE NEXT ADD DL,7NEXT:MOV AH,02H INT 21H(4) 將DH中的二進制數(shù)看

30、成壓縮BCD碼并送出顯示的程序段如下: MOV DL,DH MOV CL,4 ;獲取十位 SHR DL,CL ADD DL,30H MOV AH,2 ;2號功能調用顯示十位 INT 21H MOV DL,DH AND DL,0FH ;獲取個位 OR DL,30H INT 21H21、圖略22、假定AX和BX中的內容為帶符號數(shù),CX和DX的內容為無符號數(shù),請用比較指令和轉移指令實現(xiàn)以下條件轉移:(1)若DX的內容超過CX的內容,則轉到Ll。答:CMP DX,CX JA Ll(2)若BX的內容大于AX的內容,則轉到L2。答:CMP BX,AX JG L2(3)若DX的內容未超過CX的內容,則轉到L

31、3。答:CMP DX,CX JNA L3(4)判斷BX與AX相比較是否產(chǎn)生溢出,若溢出則轉到L4。答:CMP BX,AX JO L4(5)若BX的內容小于等于AX的內容,則轉到L5。答:CMP BX,AX JLE L5(6)若DX的內容小于等于CX的內容,則轉到L6。答:CMP DX,CX JBE L623、假設BX=0A69H,VALUE變量中存放的內容為1927H,寫出下列各條指令執(zhí)行后的BX的寄存器中和CF、ZF、SF與OF的值:(1) XOR BX,VALUE(2) AND BX,VALUE(3) OR BX,VALUE(4) SUB BX,VALUE(5) CMP BX,VALUE(

32、6) TEST BX,VALUE答: BX CF ZF SF OF(1) 134EH 0 0 0 0(2) 0821H 0 0 0 0(3) 186FH 0 0 0 0(4) Fl42H 1 0 1 0(5) 0A69H 1 0 1 0(6) 0A69H 0 0 0 0第4章 MASM匯編語言1、名詞解釋指令 偽指令 宏指令 匯編語句 匯編語言 匯編源程序 匯編程序 匯編 連接程序 連接答:指令:是CPU可以理解并執(zhí)行的操作命令。偽指令:是用于為匯編程序編譯時理解程序框架、分配空間(數(shù)據(jù)定義)等的匯編語句。宏指令:實質上就是有多條指令打包而成的一組指令的集合。匯編指令:一行只能寫一條匯編語句,

33、一條匯編只能寫在一行內。匯編語言:語句中的表達式是在匯編過程中完成計算的,即翻譯之后的機器語言程序中是不包含表達式的。匯編源程序:主要有四步,錄入源程序、匯編、連接、運行、調試運行。(不準確)匯編程序:編寫匯編程序實質上就是在記住程序框架的基礎上填寫兩空,即數(shù)據(jù)定義部分和功能程序部分。匯編:格式:MASM 盤符路徑程序基本名.ASM 建議程序基本名不要省略.連接程序: 編譯器和匯編程序都經(jīng)常依賴于連接程序,它將分別在不同的目標文件中編譯或匯編的代碼收集到一個可直接執(zhí)行的文件中。連接程序還連接目標程序和用于標準庫函數(shù)的代碼,以及連接目標程序和由計算機的操作系統(tǒng)提供的資源連接:LINK 盤符路徑程

34、序基本名.OBJ建議程序基本名不要省略。2、寫出三種匯編語句的基本格式并進行說明。教材P503、由用戶取名的名字項有哪些?名字項的取名規(guī)則如何?教材P504、請計算下列表達式的值。答(1) 3+63*4 mod 3 ;注意運算優(yōu)先級,值為5(2) (M GT N) AND N OR M LE N AND M ;M,N中的較小值(3) 5 GT 3 (作為8位和16位二進制數(shù)各為多少) ;0FFH和0FFFFH(4) 20 AND 77(作為8位和16位二進制數(shù)各為多少) ;04H和0004H(5) 5 AND-1 :5(6) 5 OR-1 ;-l(7) NOT 5 (作為8位和16位二進制數(shù)各

35、為多少) ;0FAH和0FFFAH,均為-6(8) 設有定義如下: A DB 2,4,6,8 B DW 2,4,6,8 C DW 5 DUP(2,4,6,8) 則TYPE A、TYPE B和TYPE C分別為多少? ;1,2,2 LENGTH A、LENGTH B和LENGTH C分別為多少? ;1,1,5 SIZE A、SIZE B和SIZE C分別為多少? ;1,2,105、匯編語言中的數(shù)據(jù)類型與其他高級語言的數(shù)據(jù)類型相比較有哪些特點?6、設有如下定義:A DB 1101B,34,56Q,78H,4 DUP (?),ABCD請畫出內存分配示意圖并將其改成內存中存放次序相同的DW及DD的等價

36、定義語句。答:圖自己畫。A DW 220DH,782EH,2 DUP(?),4241H,4443HB DD,782E220DH,?,44434241H7、一個匯編源程序最多可以定義多少個段?段寄存器與所定義的段之間的對應關系是怎樣實現(xiàn)的?答:最多4個段,通過段對應偽指令ASSUME 段寄存器名:段名來實現(xiàn)的對應。8、設置一個數(shù)據(jù)段DATA,其中連續(xù)存放6個變量,用段定義語句和數(shù)據(jù)定義語句寫出數(shù)據(jù)段:(1)A1為字符串變量:Example。(2)A2為數(shù)值字節(jié)變量:l00,127,-l,80H,35Q,1101110B。(3)A3為4個0的字變量。(4)A4為A3的元素個數(shù)。(5)A5為A3占用

37、的字節(jié)數(shù)。(6)A6為Al,A2,A3,A4,A5占用的總字節(jié)數(shù)。答:DATA SEGMENT A1 DB Example A2 DB l00,127,一l,80H,35Q,ll0111013 A3 DW 4 DUP(0) A4 DW LENGTH A3 A5 DW A4一A3 ;或SIZE A3 A6 DW $一AlDATA ENDS9、指出下列每一小題中的偽指令表達的操作哪些是錯誤的?錯誤在哪里?自己做。10、指令OR AX, 0FC8H OR 563FH中,問兩個OR操作分別在什么時候進行?有什么區(qū)別?用立即數(shù)寫出此等價指令。答:第一個OR是CPU執(zhí)行指令時完成的操作,第二個OR是匯編程

38、序匯編時完成的操作。用立即數(shù)寫出的等價指令是OR AX, 5FFFH。11、指出下列每一對偽指令語句的區(qū)別自己做。12、請進行宏與子程序的比較。教材P6013、請用流程圖表示完整匯編程序的上機過程。教材P6114、請默寫兩段程序的基本框架。教材P6015、請寫出兩字節(jié)數(shù)據(jù)相乘保存于字中的宏定義。答:參考代碼如下:ABMMACRO OPR1,OPR2,OPR3 ;宏定義,三個形參PUSH AXPUSH BX MOV AL,OPR1MOV BL,OPR2MUL BLMOV OPR3,AXPOP BXPOP AXENDM ;宏定義結束 第5章 匯編程序設計1、程序的三種基本結構是什么?請分別畫出各自

39、核心部分的流程圖。P662、請畫出將1字節(jié)二進制數(shù)據(jù)轉化成十六進制數(shù)顯示的流程圖。自己畫3、編程實現(xiàn)兩個字節(jié)變量相乘送字變量的程序。答:DATA SEGMENT A DB l2H B DB 34H C DW ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV AL,A MUL B MOV C,AX :C=AB MOV AH,4CH ;返回DOS INT 21HCODE ENDS END START4、編程實現(xiàn)從鍵盤接收2個一位十進制數(shù)并計算和顯示它們的積。(如輸入7和9則顯示為:7*9=63)

40、答:CODE SEGMENT ASSUME CS:CODEAGAINl:MOV AH,1 ;錄入第一位 INT 2lH CMP AL,0 JB AGAINl CMP AL,9 JA AGAINl MOV DH,AL SUB DH,30H MOV DL,* ;顯示”*” MOV AH,2 INT 21HAGAIN2:M0V AH,1 ;錄入第二位 INT 21H CMP AL,0 JB AGAIN2 CMP AL,9 JA AGAIN2 SUB AL,30H MUL DH ;相乘 AAM ;分離十位和個位 MOV DH,AL ;暫存?zhèn)€位 MOV DL,AH :顯示十位 ADD DL,30H MO

41、V AH,2 INT 21H MOV DL,DH ;顯示個位 ADD DL,30H INT 21H MOV AH,4CH INT 21HCODE ENDS END AGAINl5、編程實現(xiàn)從鍵盤接收兩位十六進制數(shù)并將其轉化為等值的十進制數(shù)顯示出來(如輸入7CH=124,要求至少設計一個子程序)自己寫6、編程實現(xiàn)三個變量值的排序(分別用無符號數(shù)和有符號數(shù)處理)。答:實現(xiàn)A、B、C三個變量從小到大排序的程序如下。DATA SEGMENTA DB l2HB DB 34HC DB 23HDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,D

42、ATA MOV DS,AX MOV AL,A CMP AL,B JBE NEXTl ;無符號,有符號用JLE XCHG AL,B MOV A,ALNEXTl:CMP AL,C JBE NEXT2 :無符號,有符號用JLE XCHG AL,C MOV A,ALNEXT2:MOV AL,B CMP AL,C JBE NEXT3 ;無符號,有符號用JIE XCHG AL,C MOV B,ALNEXT3:MOV AH,4CH ;返回DOS INT 21HCODE ENDS END START7、編程實現(xiàn)任意個有符號字節(jié)數(shù)據(jù)之和(和要求用字變量存放)。答:DATA SEGMENT A DB ;任意個字節(jié)

43、數(shù)據(jù) N EQU $-A ;元素個數(shù) SUM DW ?DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATASTAR:MOV AX,DATA MOV DS,AX LEA SI,A XOR DX,DX MOV CX,NAGAIN:MOV AL,SI】 CBW ADC DX,AX LOOP AGAIN MOV SUM,DX MOV AH,4CH :返回DOS INT 21HCODE ENDS END START8、編寫一個菜單選擇處理程序。自己寫9、編寫一子程序實現(xiàn)從某字數(shù)組中選出最大值。答: 求數(shù)組元素最大值過程名MAX,數(shù)組首址為Sl,元素個數(shù)為CX,最大值

44、由AX帶出。MAX PROC NEAR PUSH SI PUSH CX MOV AX,S1AGAIN:CMP AX,SI JGE NEXT ;有符號數(shù),若為無符號數(shù)則JAE MOV AX,SINEXT:INC SI INC SI LOOP AGAIN POP CX POP SI RETMAX ENDP10、編寫一子程序實現(xiàn)從某字數(shù)組中求出平均值(設其和不會超出范圍)。答:;求數(shù)組元素之和函數(shù)SUM,數(shù)組首址為Sl,數(shù)組元素個數(shù)為CX,和由AX帶出。SUM PROC NEAR PUSH SI PUSH CX XOR AX,AXAGAIN:ADD AX,S1 INC Sl INC SI LOOP

45、AGAIN POP CX POP Sl RET SUM ENDP11、從鍵盤接收一串字符,并另起一行逆序顯示該字符串。答:DATA SEGMENT BUF DB 81,0,81 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX LEA DX,BUF MOV AH,l0 ;接收一串字符 INT 2lH MOV DL,0DH ;顯示回車換行 MOV AH,2 INT 21H MOV DL,0AH MOV AH,2 INT 21H MOV CL,BUF+1 ;取接收的字符數(shù) XOR CH,CH

46、LEA BX,BUF+1 ADD BX,CX ;BX指向串尾AGAIN:MOV DL,BX ;逆向顯示 MOV AH,2 TNT 21H DEC BX LOOP AGAIN MOV AH,4CH INT 2lHCODE ENDS END START 12、假設密碼為“123456”,從鍵盤接收密碼并驗證,若正確則顯示“歡迎使用本系統(tǒng)”,否則顯示“密碼錯誤,您無權使用!”。自己寫13、從鍵盤輸入1字節(jié)的兩位十六進制數(shù)據(jù),并分別用二進制、八進制、十進制、十六進制顯示出來其等價的值。自己寫第6章 Intel 808688微處理器1、8086/88 和傳統(tǒng)的8位計算機相比在執(zhí)行指令方面有什么不同?有什

47、么優(yōu)點?答:總線接口部分和執(zhí)行部分是分開的,每當EU執(zhí)行一條指令時,造成指令隊列空出2個或空出一個指令字節(jié)時 ,BIU馬上從內存中取出下面一條或幾條指令,以添滿他的指令隊列。這樣,一般情況下,CPU在執(zhí)行完一條指令后,便可馬上執(zhí)行下一條指令,不像以往8位CPU那樣,執(zhí)行完一條指令后,需等待下一條指令。即EU從指令隊列中取指令、執(zhí)行指令和BIU補充指令隊列的工作是同時進行的。這樣大大提高了CPU利用率,降低了系統(tǒng)都對存儲器速度的要求。2、8086有哪兩種工作模式?其主要區(qū)別是什么?答:答:8086有最大和最小兩種工作模式,最小工作模式是指MNMX引腳為高電平,系統(tǒng)中只有80868088微處理器,

48、系統(tǒng)中的所有控制信號都直接由CPU產(chǎn)生。最大工作模式是指MNMX引腳為低電平,它是相對于最小模式而言的,系統(tǒng)中除了80868088作為處理器外,還包含數(shù)值運算協(xié)處理器8087、輸入輸出協(xié)處理器8089,以及總線控制器8288和總線仲裁控制器8289等支持芯片,從而可以完成更復雜的運算或控制任務。3、請畫出8086/88 CPU功能模塊圖4、請說明8088與8086的主要區(qū)別。答:教材P81、P82和P915、請畫出8088CPU最小模式核心示意圖。參考P85圖6.8最小模式的8086CPU子系統(tǒng)圖6、請畫出8088CPU最大模式核心示意圖。參考P87圖6.10最大模式的8086CPU子系統(tǒng)7、

49、8284時鐘發(fā)生器的功能是什么?它產(chǎn)生哪些信號?這些信號有何作用?教材P838、80868088的基本總線周期由幾個時鐘周期組成?IBM PCXT機中CPU的時鐘周期包括多少?一個輸入或輸出總線周期包括多少個時鐘周期?答:80868088的基本總線周期由4個時鐘周期組成。mM PCXT機中CPU的時鐘周期是210 nS,一個輸入或輸出總線周期至少是4個時鐘周期。說明:總線周期CPU的BIU取指令和傳送數(shù)據(jù)需要的時間。一個基本的總線周期由4個時鐘周期(T狀態(tài))組成,即T1、T2、T3、T4狀態(tài)。(1)在T1狀態(tài),CPU向地址數(shù)據(jù)復用線(ADl5ADO)和地址狀態(tài)復用線(AldS6A1dS3)上發(fā)送地址信息,產(chǎn)生

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論