《微機原理與接口技術(shù)》(第四版)周何琴課后習(xí)題答案.doc
《《微機原理與接口技術(shù)》(第四版)周何琴課后習(xí)題答案.doc》由會員分享,可在線閱讀,更多相關(guān)《《微機原理與接口技術(shù)》(第四版)周何琴課后習(xí)題答案.doc(50頁珍藏版)》請在裝配圖網(wǎng)上搜索。
______________________________________________________________________________________________________________ 第1章 緒論作業(yè) 1. 將下列二進制數(shù)轉(zhuǎn)換成十進制數(shù)。 (1)11001010B=202 (2)00111101B=61 (3)01001101B=77 (4)10100100B=164 3. 將下列十進制數(shù)分別轉(zhuǎn)換為二進制數(shù)和十六進制數(shù)。 (2)76= 100 1100B =4CH (4)134= 1000 0110B =86H 4. 求下列十進制數(shù)的BCD碼 (1)327=11 0010 0111(BCD碼) (2)1256=1 0010 0101 0110(BCD碼) 6. 求出下列10進制數(shù)的原碼、反碼和補碼 (2)+85 (4)-85 解:85=0101 0101B 原碼:+85= 0101 0101B -85= 1101 0101B 反碼:+85= 0101 0101B -85= 1010 1010B 補碼:+85= 0101 0101B -85= 1010 1011B 10. 畫出微型計算機的基本結(jié)構(gòu)框圖,說明各部分的主要功能是什么? 解: 微型計算機的基本結(jié)構(gòu)框圖如下: 地址總線 I/O總線 微處理器 CPU 存儲器 I/O接口 I/O設(shè)備 數(shù)據(jù)總線 控制總線 微處理器CPU:控制微處理器與存儲器或I/O設(shè)備間的數(shù)據(jù)交換;進行算術(shù)和邏輯運算等操作;判定和控制程序流向。 微處理器主要完成: (1)指令控制:從存儲器中取指令,指令譯碼; (2)數(shù)據(jù)加工:簡單的算術(shù)邏輯運算; (3)操作控制:在微處理器和存儲器或者I/O之間傳送數(shù)據(jù); (4)時間控制:程序流向控制。 存儲器:用來存放數(shù)據(jù)和指令。 I/O接口:主機和外設(shè)間的橋梁,提供數(shù)據(jù)緩沖驅(qū)動、信號電平轉(zhuǎn)換、信息轉(zhuǎn)換、地址譯碼、定時控制等各種功能。 I/O設(shè)備:輸入原始數(shù)據(jù)和程序,轉(zhuǎn)換成計算機能識別的信息,送入存儲器去等待處理。輸出運算結(jié)果。 總線:連接計算機系統(tǒng)中各功能部件的信息通道。 第2章 8086CPU作業(yè) 2. 8086CPU內(nèi)部由哪兩部分組成?它們的大致是如何工作的? 答: (1)8086CPU由指令執(zhí)行部件EU和總線接口部件BIU兩部分組成。 (2) ① BIU先執(zhí)行讀存儲器操作,從給定地址單元中取出指令,送到先進先出的指令隊列中等待執(zhí)行。 存儲器的物理地址=CS′16+IP,在地址加法器S中形成。 ② EU從指令隊列中取走指令,經(jīng)EU控制器譯碼分析后,向各部件發(fā)控制命令,以完成執(zhí)行指令的操作。BIU與EU是并行工作方式。 ③ 當指令隊列已滿,EU在執(zhí)行指令,未向總線接口單元BIU申請讀/寫內(nèi)存或I/O操作時,BIU處于空閑狀態(tài)。 ④ 指令執(zhí)行過程中,若需對存儲器或I/O端口存取數(shù)據(jù),EU就要求BIU去完成相應(yīng)的總線周期。 5. 兩個帶符號數(shù)1011 0100B和1100 0111B相加,運算后各標志位的值等于多少?哪些標志位是有意義的?如果把這兩個數(shù)當成無符號數(shù),相加后哪些標志位是有意義的? 解: (1)兩個帶符號數(shù):不考慮CF標志 1011 0100 + 1100 0111 1 0111 1011 運算后各標志位狀態(tài)如下: CF=1,有進位,對于帶符號數(shù),無意義。 PF=1,結(jié)果有偶數(shù)個1 AF=0,無半進位,非BCD碼運算,無意義。 ZF=0,結(jié)果非0 SF =0,結(jié)果為正數(shù) OF=1,溢出(兩個負數(shù)相加,結(jié)果變成了正數(shù)) (2)兩個無符號數(shù):不考慮SF和OF標志 1011 0100 + 1100 0111 1 0111 1011 運算后各標志位狀態(tài)如下: CF=1,有進位 PF=1,結(jié)果有偶數(shù)個1 ZF=0,結(jié)果非0 AF、SF、 OF無意義。 20. 簡要解釋下列名詞的意義。 CPU:中央處理單元CPU (Control Processing Unit)也稱微處理器,是微型計算機的核心部件,由運算器ALU、控制器、寄存器組以及總線接口等部件組成。主要完成各種運算,負責對整機的控制。 存儲器:用于存儲程序和數(shù)據(jù)的硬件設(shè)備。 堆棧:堆棧是一種數(shù)據(jù)結(jié)構(gòu),是內(nèi)部RAM的一段區(qū)域。設(shè)置堆棧的目的是用于數(shù)據(jù)的暫存,中斷、子程序調(diào)用時斷點和現(xiàn)場的保護與恢復(fù)。 IP:指令指針寄存器,用于控制CPU的指令執(zhí)行順序(只存放偏移量),只能和代碼段寄存器CS配合使用,可以確定當前所要取的指令的內(nèi)存地址,且始終指向代碼段中下一條將要讀取到CPU指令隊列的那條指令。順序執(zhí)行程序時,CPU每取一個指令字節(jié),IP自動加1,指向下一個要讀取的字節(jié)。 SP:堆棧指針寄存器,用于指示堆棧的棧頂?shù)刂菲屏康募拇嫫?,它決定了堆棧在內(nèi)部RAM中的物理位置。只能和SS段寄存器配合使用,且始終指向堆棧的棧頂,在堆棧指令中隱含的使用它來定位棧頂數(shù)據(jù)。 BP:基址指針寄存器。用于存放偏移量,通常和SS段寄存器配合使用,在間接尋址中用于定位堆棧段中的內(nèi)存單元。 段寄存器:由于CPU內(nèi)部的寄存器都是16位的,為了能夠提供20位的物理地址,8086系統(tǒng)中采用了存儲器分段的方法。規(guī)定存儲器的一個段為64KB,由段寄存器來確定存儲單元的段基址,由指令提供該單元相對于相應(yīng)段起始地址的16位偏移量。 狀態(tài)標志:表示前一步操作(如加、減等)執(zhí)行以后,ALU所處的狀態(tài),后續(xù)操作可以根據(jù)這些狀態(tài)標志進行判斷,實現(xiàn)轉(zhuǎn)移。 控制標志:可以通過指令人為設(shè)置,用以對某一種特定的功能起控制作用(如中斷屏蔽等),反映了人們對微機系統(tǒng)工作方式的可控制性。 物理地址:存儲器的實際地址,它是指CPU和存儲器進行數(shù)據(jù)交換時所使用的地址。物理地址是由段地址與偏移地址共同決定的,計算物理地址的表達式為: 物理地址 = 段地址 × 16 + 偏移地址 邏輯地址:是在程序中使用的地址,它由段地址和偏移地 址兩部分組成。 邏輯地址的表示形式為“段地址:偏移地址”。 機器語言:直接用二進制編碼表述的指令系統(tǒng)語言,通常稱為機器語言,機器語言指令是計算機惟一能直接識別和執(zhí)行的指令。 匯編語言:便于記憶和使用,通常使用匯編語言(符號指令或指令助記符)來描述計算機的指令系統(tǒng)。 指令:讓計算機完成某種操作的命令稱為指令。 指令系統(tǒng):一臺計算機所能識別、執(zhí)行的指令的集合就是它的指令系統(tǒng)。 總線:連接計算機系統(tǒng)中其他主要功能部件的橋梁,是計算機系統(tǒng)中信息輸送的樞紐,只有通過總線,計算機系統(tǒng)的各部件才能實現(xiàn)相互通信。 內(nèi)部總線:微處理器內(nèi)部各個器件之間傳送信息的通路。 系統(tǒng)總線:微處理機機箱內(nèi)的底板總線??煞譃椋篒SA、EISA、VESA局部總線、PCI局部總線等。 時鐘周期:CPU時鐘頻率的倒數(shù)稱為時鐘周期,也稱T狀態(tài)。 總線周期:BIU完成一次訪問存儲器或I/O端口操作所需要的時間稱為總線周期。一個基本的總線周期是由4個(或4個以上)時鐘周期組成的。 指令周期:執(zhí)行一條指令所需要的時間稱為指令周期,不同指令的指令周期的長短是不同的。一個指令周期是由幾個總線周期組成的。 21. 要完成下列運算和控制,用什么標志判別?其值是什么? (1)比較兩數(shù)是否相等? (2)兩數(shù)運算后結(jié)果是正數(shù)還是負數(shù)? (3)兩數(shù)相加后是否溢出? (4)奇偶校驗判斷。 (5)兩數(shù)相減后比較大小。 (6)中斷信號能否允許? 答: (1)比較兩數(shù)是否相等:兩數(shù)相減后用零標志ZF判斷,ZF=1,則相等。 (2)兩數(shù)運算后結(jié)果是正數(shù)還是負數(shù):用符號標志SF判斷, SF=1,則結(jié)果為負數(shù)。 (3)兩數(shù)相加后是否溢出:用溢出標志OF判斷,OF=1,則有溢出。 (4)奇偶校驗判斷:采用偶校驗方式,判定是否要補“1”?用奇偶標志PF判斷,若數(shù)據(jù)結(jié)果低8位中含有偶數(shù)個“1”,則PF=1;不用補“1”。 (5)兩數(shù)相減后比較大?。篫F=1,兩數(shù)相等。對于無符號數(shù),CF=1,則被減數(shù)小于減數(shù);CF=0,則被減數(shù)大于減數(shù);ZF=1,則兩數(shù)相等。對于帶符號數(shù),SF⊕OF=1,則被減數(shù)小于減數(shù);SF⊕OF=0,則被減數(shù)大于減數(shù)。 (6)中斷信號能否允許:用中斷允許標志IF判斷,IF=1,則能允許可屏蔽中斷。 22. 說明8086系統(tǒng)中“最小模式”和“最大模式”兩種工作方式的主要區(qū)別。 最小模式(最小工作方式 ):單微處理器系統(tǒng)(系統(tǒng)中只有一個8086微處理器),所有的總線控制信號,都是直接由8086CPU產(chǎn)生的,適用于規(guī)模較小的微機應(yīng)用系統(tǒng)。 當把8086的33腳MN/MX接+5V時,8086 CPU就處于最小工作方式。 最大模式(最大工作方式 ):多微處理器系統(tǒng)(包含有兩個或多個微處理器,一個主處理器8086CPU,其他的處理器稱為協(xié)處理器它們是協(xié)助主處理器工作的。 ),主要用在中等或大規(guī)模的8086系統(tǒng)中。 當把8086的33腳MN/MX接地時, 8086 CPU就處于最大模式。 第3章 作業(yè) 1.分別說明下列指令的源操作數(shù)和目的操作數(shù)各采用什么尋址方式。 源 目的 (1)MOV AX, 2048H 立即尋址 寄存器尋址 (2) MOV CL, 0FFH 立即尋址 寄存器尋址 (3) MOV BX, [SI] 寄存器間接尋址 寄存器尋址 (4) MOV 5[BX], BL 寄存器尋址 寄存器相對尋址 (5) MOV [BP+100H], AX 寄存器尋址 寄存器相對尋址 (6) MOV [BX+DI], ‘$’ 立即尋址 基址變址尋址 (7) MOV DX, ES:[BX+SI] 基址變址尋址 寄存器尋址 (8) MOV VAL[BP+DI], DX 寄存器尋址 相對基址加變址尋址 (9) IN AL, 05H I/O端口尋址(或直接尋址) 寄存器尋址 (10) MOV DS, AX 寄存器尋址 寄存器尋址 2. 已知:DS=1000H, BX=0200H, SI=02H, 內(nèi)存10200H~10205H單元的內(nèi)容分別為10H, 2AH, 3CH, 46H, 59H, 6BH。下列每條指令執(zhí)行完后AX寄存器的內(nèi)容各是什么? AX 內(nèi)容 (1)MOV AX, 0200H; (AX)=0200H (2) MOV AX, [200H]; (AX)=2A10H (3) MOV AX, BX ; (AX)=0200H (4) MOV AX, 3[BX] ; (AX)=5946H (5) MOV AX, [BX+SI]; (AX)=463CH (6) MOV AX, 2[BX+SI] ; (AX)=6B59H 6.指出下列指令中哪些是錯誤的,錯在什么地方 (1)MOV DL, AX 錯誤,源和目的操作數(shù)類型不匹配,DL是8位寄存器,AX是16位寄存器。 (2)MOV 8650H, AX 錯誤,立即數(shù)不能作為目的操作數(shù)。 (3)MOV DS, 0200H 錯誤,不能用立即數(shù)直接給段寄存器賦值。 (4)MOV [BX], [1200H] 錯誤,不能在兩個存儲單元之間直接傳送數(shù)據(jù) (5)MOV IP, 0FFH 錯誤,IP不能作目的操作數(shù)或不能用立即數(shù)直接給IP寄存器賦值。 (6)MOV [BX+SI+3], IP 錯誤,IP不能作源操作數(shù)。 (7) MOV AX, [BX][BP] 錯誤,基址變址尋址方式必須是一個基址寄存器與一個變址寄存器,不能兩個同時為基址寄存器(BX、BP均為基址寄存器)。 (8)MOV AL, ES:[BP] 正確。 (9)MOV DL, [SI][DI] 錯誤,基址變址尋址方式必須是一個基址寄存器與一個變址寄存器,不能兩個同時為變址寄存器(SI、DI均為變址寄存器)。 (10)MOV AX, OFFSET 0A20H 錯誤,OFFSET后必須是存儲單元標號地址,不能是立即數(shù)。 (11) MOV AL, OFFSET TABLE 錯誤,操作數(shù)類型不匹配,AL為8位, TABLE為16位。 (12)XCHG AL, 50H 錯誤,交換指令XCHG的操作數(shù)不能是立即數(shù)。 (13)IN BL, 05H 錯誤,IN指令的目的操作數(shù)必須是累加器 (14)OUT AL, 0FFEH 錯誤,OUT指令的源操作數(shù)必須是累加器,目的操作數(shù)為8位I/O端口地址或用DX做橋梁的16位I/O端口地址。 10. 已知AX=2508H,BX=0F36H,CX=0004H,DX=1864H,求下列每條指令執(zhí)行后的結(jié)果是什么?標志位CF等于什么? (1)AND AH,CL (AH)=04H CF=0 (2)OR BL,30H (BL)=36H CF=0 (3)NOT AX (AX)=0DAF7H CF不變(不影響CF) (4)XOR CX,0FFF0H (CX)=0FFF4H CF=0 (5)TEST DH,0FH (DH)=18H CF=0 (6)CMP CX,00H (CX)=0004H CF=0 (7)SHR DX,CL (DX)=0186H CF=0 (8)SAR AL,1 (AL)=04H CF=0 (9)SHL BH,CL (BH)=0F0H CF=0 (10)SAL AX,1 (AX)=4A10H CF=0 (11)RCL BX,1 CF=1,(BX)=1E6DH, CF=0,(BX)=1E6CH CF=0 (12)ROR DX,CL (DX)=4186H CF=0 11. 假設(shè)數(shù)據(jù)定義如下: DATA SEGMENT STRING DB ‘The Personal Computer & TV’ DATA ENDS 試用字符串操作指令編程完成以下功能: (1)把該字符串傳送到附加段中偏移地址為GET_CHAR開始的內(nèi)存單元中。 解:程序段如下: LEA SI,STRING ;置源串偏移地址 LEA DI,GET_CHAR ;置目的串偏移地址 MOV CX,26 ;置串長度 CLD ;方向標志復(fù)位 REP MOVSB ;字符串傳送 12.編程將AX寄存器中的內(nèi)容以相反的次序傳送到DX寄存器中,并要求AX中的內(nèi)容不被破壞,然后統(tǒng)計DX寄存器中1的個數(shù)是多少。 解:將AX的內(nèi)容用ROR循環(huán)右移,16次之后AX的內(nèi)容不變(如果用算術(shù)/邏輯右移SHL/SAL,則AX的內(nèi)容破壞,需要用堆棧PUSHU AX/POP AX保護),其最低位移入CF中,再使用RCL循環(huán)左移將CF中的值移入DX中。并且,如果CF的值為1,則將BL加1。 MOV CX, 16 XOR BL, BL LP1: ROR AX, 1 JNC LP2 INC BL LP2: RCL DX,1 LOOP LP1 HLT 調(diào)試程序: STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS DATA SEGMENT BUF DW 12 BUF1 DW 100 DUP (?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: PUSH DS MOV AX,DATA MOV DS,AX MOV AX,1234H MOV CX, 16 XOR BL, BL LP1: ROR AX, 1 JNC LP2 INC BL LP2: RCL DX,1 LOOP LP1 HLT CODE ENDS END START 15. 某班有七個同學(xué)的英語成績低于80分,分數(shù)存在ARRAY數(shù)組中,試編程完成以下工作:給每人加5分,結(jié)果存到NEW數(shù)組中. 解: STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS DATA SEGMENT ARRAY DB 7 DUP(?) NEW DB 7 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV CX, 7 MOV BX, 0 LP1: MOV AL, ARRAY[BX] ADD AL, 05H DAA MOV NEW[BXI], AL INC BX LOOP LP1 HLT CODE ENDS END START 調(diào)試程序: STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS DATA SEGMENT ARRAY DB 65H,76H,78H,54H,90H,85H,68H NEW DB 7 DUP(?) BUF1 DW 100 DUP (?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: PUSH DS MOV AX,DATA MOV DS,AX MOV CX, 7 MOV BX, 0 LP1: MOV AL, ARRAY[BX] ADD AL, 05H DAA MOV NEW[BXI], AL INC BX LOOP LP1 HLT CODE ENDS END START 某班有七個同學(xué)的英語成績低于80分,分數(shù)存在ARRAY數(shù)組中,試編程完成以下工作: (1)給每人加5分,結(jié)果存到NEW數(shù)組中 (2)把總分存到SUM單元中 (3)把平均分存到AVERAGE單元中 解: STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS DATA SEGMENT ARRAY DB 7 DUP(?) NEW DB 7 DUP(?) SUM DW 0 AVG DB 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV CX, 7 MOV SI, 0 MOV SUM, 0 MOV AH, 0 LP1: MOV AL, ARRAY[SI] ADD AL, 05H DAA MOV NEW[SI], AL ADD AL ,SUM DAA MOV SUM,AL ADC AH, 0 DAA MOV SUM+1, AH INC SI LOOP LP1 MOV AX, SUM MOV BL,07H DIV BL MOV AVG, AL HLT CODE ENDS END START 調(diào)試程序: STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS DATA SEGMENT ARRAY DB 65H,76H,78H,54H,90H,85H,68H NEW DB 7 DUP(?) SUM DB 00H,00H AVG DB 0 BUF1 DW 100 DUP (?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: PUSH DS MOV AX,DATA MOV DS,AX MOV CX, 7 MOV SI, 0 MOV SUM, 0 MOV AH, 0 LP1: MOV AL, ARRAY[SI] ADD AL, 05H DAA MOV NEW[SI], AL ADD AL , SUM DAA MOV SUM,AL ADC AH, 0 MOV SUM+1, AH INC SI LOOP LP1 MOV AL, SUM MOV AH,SUM+1 MOV BL,07H DIV BL MOV AVG, AL HLT CODE ENDS END START 13. 設(shè)CS=1200H, IP=0100H, SS=5000H, SP=0400H, DS=2000H, SI=3000H, BX=0300H, (20300H)=4800H, (20302H)=00FFH, TABLE=0500H, PROG_N標號的地址為1200:0278 H,PROG_F標號的地址為3400:0ABCH。說明下列每條指令執(zhí)行完后,程序分別轉(zhuǎn)移到何處執(zhí)行? JMP指令 (1)JMP PROG_N 段內(nèi)直接近轉(zhuǎn)移,目的地址為1200H:0278H(或12278H) (2)JMP BX 段內(nèi)寄存器間接轉(zhuǎn)移,目的地址為1200H:0300H(或12300H) (3)JMP [BX] 物理地址=DS×10H+BX=2000H×10H+0300H=20300H (20300H)=4800H→IP 段內(nèi)存儲器間接轉(zhuǎn)移,目的地址為1200H:4800H(或16800H) (4)JMP FAR PROG_F 段間直接轉(zhuǎn)移,目的地址為3400H:0ABCH(或34ABCH) (5)JMP DWORD PTR[BX] 物理地址=DS×10H+BX=2000H×10H+0300H=20300H (20300H)=4800H→IP, (20302H)=00FFH→CS 段間存儲器間接轉(zhuǎn)移,目的地址為00FFH:4800H(或057F0H) JMP改為CALL后,目的地址與JMP相同。 (1)CALL PROG_N 段內(nèi)直接調(diào)用,3字節(jié)指令,目的地址為1200H:0278H(或12278H),0103H入棧,SP=03FEH (2)CALL BX 段內(nèi)寄存器間接調(diào)用,2字節(jié)指令,目的地址為1200H:0300H(或12300H) ,0102H入棧,SP=03FEH (3)CALL [BX] 段內(nèi)存儲器間接調(diào)用,2字節(jié)指令,目的地址為1200H:4800H(或16800H),0102H入棧,SP=03FEH (4)CALL FAR PROG_F 段間直接調(diào)用,5字節(jié)指令,目的地址為3400H:0ABCH(或34ABCH),1200H和0105H分別入棧,SP=03FCH (5)CALL DWORD PTR[BX] 段間間接調(diào)用,2字節(jié)指令,目的地址為00FFH:4800H(或057F0H),1200H和0102H分別入棧,SP=03FCH 部分調(diào)試程序: STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS DATA SEGMENT BUF DW 12 BUF1 DW 100 DUP (?) ORG 300H DB 00H,48H,0FFH,00H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: PUSH DS MOV AX,DATA MOV DS,AX MOV BX,0300H CALL PROG_N CALL BX CALL [BX] ORG 0278 PROG_N:RET ORG 0300H RET ORG 4800H RET HLT CODE ENDS END START 14. 如在下列程序段的括號中分別填入以下指令: (1)LOOP NEXT (2) LOOPE NEXT (3) LOOPNE NEXT 試說明在這三種情況下,程序段執(zhí)行完后,AX, BX, CX, DX寄存器的內(nèi)容分別是什么 START: MOV AX, 01H MOV BX, 02H MOV DX, 03H MOV CX, 04H NEXT: INC AX ADD BX, AX~ SHR DX, 1 ( ) 解: LOOP過程: AX BX CX DX 初始值 01H 02H 04H 03 H 循環(huán)1次 02H 04H 03H 01H 循環(huán)2次 03H 07H 02H 00H 循環(huán)3次 04H 0BH 01H 00H 循環(huán)4次 05H 10H 00H 00H 結(jié)果: AX BX CX DX (1) 05H 10H 00H 00H (2) 02H 04H 03H 01H 執(zhí)行一次,ZF=0,退出循環(huán)。 (3) 03H 07H 02H 00H 執(zhí)行兩次,ZF=1,退出循環(huán)。 20. 設(shè)8086CPU的時鐘頻率為5MHz,請編寫延時5ms的子程序。 解:微機的主頻率為5MHz 則:時鐘周期=主頻率的倒數(shù)=1/(5×10-6)=0.2μs 延時5ms需要的時鐘周期數(shù)= 5ms/ 0.2μs=25000 延時子程序如下: DELAY5:MOV CX,N 4 DLY1:NOP 3 ×N LOOP DLY1 17 ×(N-1)+ 5 RET 16 應(yīng)該有25000=4+ 3 ×N+ 17 ×(N-1)+ 5+16,才能實現(xiàn)要求的延時。則: N=1250=04E2H 延時子程為: DELAY5:MOV CX,04E2H DLY1:NOP LOOP DLY1 RET 第4章作業(yè) P153 5. 閱讀下列程序,說明每條指令執(zhí)行后的結(jié)果是什么? X1 DB 65H, 78H X2 DW 06FFH, 5200H X3 DD ? GO: MOV AL, TYPE X1 MOV BL, TYPE X2 MOV CL, TYPE X3 MOV AH, TYPE GO MOV BH, SIZE X2 MOV CH, LENGTH X3 解: (1)前三條語句的功能是設(shè)置數(shù)據(jù)于數(shù)據(jù)段中,從數(shù)據(jù)段偏移地址0000H開始存放。 變量 偏移地址 數(shù)據(jù) X1 0000H 65H 0001H 78H X2 0002H FFH 0003H 06H 0004H 78H 0005H 00H X3 0006H 隨機數(shù) 0007H 隨機數(shù) 0008H 隨機數(shù) 0009H 隨機數(shù) 程序匯編后結(jié)果如下: 六條程序執(zhí)行結(jié)果如下: (AL)=01H;設(shè)置變量類型屬性,字節(jié)數(shù) (BL)=02H;設(shè)置變量類型屬性,字節(jié)數(shù) (CL)=04H;設(shè)置變量類型屬性,字節(jié)數(shù) (AH)=0FFH;設(shè)置GO顯示類型,近標號,為-1,補碼表示 (BH)=02H;設(shè)置數(shù)據(jù)類型,無DUP時,返回數(shù)據(jù)類型的字節(jié)數(shù) (CH)=01H;無DUP時,返回1。 程序執(zhí)行后結(jié)果如下: 調(diào)試程序如下: STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS DATA SEGMENT X1 DB 65H, 78H X2 DW 06FFH, 5200H X3 DD ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: PUSH DS MOV AX,DATA MOV DS,AX GO: MOV AL, TYPE X1 MOV BL, TYPE X2 MOV CL, TYPE X3 MOV AH, TYPE GO MOV BH, SIZE X2 MOV CH, LENGTH X3 POP DS HLT CODE ENDS END START 6. 畫出示意圖,說明下列變量在內(nèi)存中如何讓存放? A1 DB 12H, 34H A2 DB ‘Right.’ A3 DW 5678H A4 DB 3 DUP(?) (1)設(shè)置數(shù)據(jù)于數(shù)據(jù)段中,從數(shù)據(jù)段偏移地址0000H開始存放。 變量 偏移地址 數(shù)據(jù) A1 0000H 12H 0001H 34H A2 0002H 52H 0003H 69H 0004H 67H 0005H 68H 0006H 74H 0007H 2EH A3 0008H 78H 0009H 56H A4 000AH 隨機數(shù) 000BH 隨機數(shù) 000CH 隨機數(shù) 調(diào)試程序如下: STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS DATA SEGMENT A1 DB 12H, 34H A2 DB 'Right.' A3 DW 5678H A4 DB 3 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: PUSH DS MOV AX,DATA MOV DS,AX POP DS HLT CODE ENDS END START 程序匯編后結(jié)果如下: 12. 編程實現(xiàn),從鍵盤輸入一個十進制數(shù)0~9,查表求鍵入數(shù)字的七段代碼(共陽極LED顯示器的段碼),存入DL中,并在鍵入數(shù)字之前,顯示提示信息“Please input a number(0~9):”。 解: STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS DATA SEGMENT TABLE DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H BUF DB 'Please input one number(0~9):',0DH,0AH,'$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: PUSH DS MOV AX,DATA MOV DS,AX MOV DX,OFFSET BUF MOV AH,09H INT 21H MOV AH,1 INT 21H AND AL,0FH MOV BX,OFFSET TABLE XLAT MOV DL,AL POP DS HLT CODE ENDS END START 調(diào)試結(jié)果: 數(shù)字5的共陽極LED七段碼為92H。 15. 已知:在內(nèi)存BUF開始的單元中,存在一串數(shù)據(jù):58,75,36,42,89。編程找出其中的最小值存入MIN單元中,并將這個數(shù)顯示在屏幕上。 解: STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS DATA SEGMENT BUF DB 58H, 75H, 36H, 42H, 89H MIN DB 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK START: PUSH DS MOV AX, DATA MOV DS, AX MOV CX, 4 MOV BX, OFFSET BUF MOV AL, [BX] ST1: INC BX CMP AL, [BX] JBE NEXT MOV AL, [BX] NEXT:LOOP ST1 MOV MIN, AL AND AL, 0F0H MOV CL,4 ROR AL, CL ADD AL, 30H MOV DL, AL MOV AH, 02H INT 21H MOV AL, MIN AND AL, 0FH ADD AL, 30H MOV DL, AL MOV AH, 02H INT 21H POP DS MOV AH, 4CH INT 21H HLT CODE ENDS END START 18. 某班有20個同學(xué)的微機原理成績存放在LIST開始的單元中,要求編程先從高到低的次序排列好,再求出總分和平均值,分別存放在SUM和AVER開始的單元中。 解: STACK ENDS DATA SEGMENT LIST DB 65H,76H,78H,54H,90H,85H,68H,66H,77H,88H DB 99H, 89H, 79H, 69H,75H,85H,63H,73H,83H,93H SUM DW 0 AVER DB 0 BUF DB 100 DUP (?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: PUSH DS MOV AX,DATA MOV DS,AX MOV DI, OFFSET LIST MOV BX, 19 LP0: MOV SI, DI MOV CX, BX LP1: MOV AL, [SI] INC SI CMP AL, [SI] JNC LP2 MOV DL, [SI] MOV [SI-1], DL MOV [SI], AL LP2: LOOP LP1 DEC BX JNZ LP0 LP3: MOV CX, 20 MOV BX, OFFSET LIST MOV SUM, 0 XOR AX, AX LP4: ADD AL, [BX] DAA ADC AH, 0 INC BX LOOP LP4 MOV SUM, AX MOV BL, 20H DIV BL ADD AL,0 DAA MOV AVER AL POP DS HLT CODE ENDS END START 20. 編程將存放在AL中的無符號二進制數(shù),轉(zhuǎn)化成十六進制數(shù),再轉(zhuǎn)換成ASII碼并顯示在屏幕上。 解: 程序如下: STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS DATA SEGMENT DB 100 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK START: PUSH DS MOV AX, DATA MOV DS, AX MOV DH, AL MOV CH, 02H ST1: MOV CL, 4 ROR DH, CL MOV AL, DH AND AL, 0FH ADD AL, 30H CMP AL, 39H JBE DISP ADD AL, 07H DISP: MOV DL, AL MOV AH, 02H INT 21H DEC CH JNZ ST1 POP DS MOV AH, 4CH INT 21H HLT CODE ENDS END START 調(diào)試程序如下: STACK SEGMENT STACK BUF DB 01111000B DB 100 DUP(?) STACK ENDS DATA SEGMENT DB 100 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK START: PUSH DS MOV AX, DATA MOV DS, AX MOV AL, BUF MOV DH, AL MOV CH, 02H ST1: MOV CL, 4 ROR DH, CL MOV AL, DH AND AL, 0FH ADD AL, 30H CMP AL, 39H JBE DISP ADD AL, 07H DISP: MOV DL, AL MOV AH, 02H INT 21H DEC CH JNZ ST1 POP DS MOV AH, 4CH INT 21H HLT CODE ENDS END START 21. 編寫程序,使用三種以上的方法,將存儲器中2000H開始的地址單元中的100字節(jié)數(shù)據(jù)復(fù)制到3000H開始的存儲器地址單元中。 解: (1)利用通用傳送指令MOV MOV SI,2000H 注意這里如果是標號地址 ,則必須用OFFSET MOV DI,3000H MOV CX,100 LP1: MOV AL,[SI] MOV [DI],AL INC SI INC DI LOOP LP1 HLT MOV CX,100 MOV BX,0 LP0:MOV AL,2000[BX] MOV 3000[BX],AL INC BX LOOP LP0 HLT (2)利用交換指令XCHG MOV SI,2000H MOV DI,3000H MOV CX,100 LP2: MOV AL,[SI] XCHG [DI],AL INC SI INC DI LOOP LP2 HLT (3)利用換碼指令XLAT MOV BX,2000H MOV DI,3000H MOV CX,100 LP3: XOR AL,AL XLAT MOV [DI], AL INC BX INC DI LOOP LP3 HLT (4)利用堆棧實現(xiàn)數(shù)據(jù)傳送 MOV SI,2000H MOV DI,3000H MOV CX,50 LP4: PUSH [SI] POP [DI] INC SI INC SI INC DI INC DI LOOP LP4 HLT (5)利用串操作指令REP MOVSB MOV SI,2000H MOV DI,3000H MOV CX,100 CLD ;DF=0,SI、DI自動+1 REP MOVSB HLT 調(diào)試程序: STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS DATA SEGMENT ORG 2000H DB 11H,22H,33H,44H,55H.66H,77H,88H,99H DB 100 DUP(?) ORG 3000H DB 100 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START:PUSH DS MOV AX,DATA MOV DS,AX MOV SI,2000H MOV DI,3000H MOV CX,100 LP1: MOV AL,[SI] MOV [DI],AL INC SI INC DI LOOP LP1 POP DS HLT CODE ENDS END START 22. 在DATA開始的4個單元中存放著一個32位數(shù),求出其中的“1”的個數(shù),并存入COUNT單元中。- 1.請仔細閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
32 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 微機原理與接口技術(shù) 微機 原理 接口 技術(shù) 第四 課后 習(xí)題 答案
鏈接地址:http://m.appdesigncorp.com/p-1273613.html