《微機原理與接口技術》(第四版)周何琴課后習題答案_第1頁
《微機原理與接口技術》(第四版)周何琴課后習題答案_第2頁
《微機原理與接口技術》(第四版)周何琴課后習題答案_第3頁
《微機原理與接口技術》(第四版)周何琴課后習題答案_第4頁
《微機原理與接口技術》(第四版)周何琴課后習題答案_第5頁
已閱讀5頁,還剩53頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、頁眉內容第1章緒論作業(yè)1.將下列二進制數(shù)轉換成十進制數(shù)。(1) B=202(2) 00111101B=61(3) 01001101B=77(4) B=1643.將下列十進制數(shù)分別轉換為二進制數(shù)和十六進制數(shù)。(2) 76= 100 1100B =4CH(4) 134= 1000 0110B =86H4.求下列十進制數(shù)的 BCM(1) 327=11 0010 0111 (BCW)(2) 1256=1 0010 0101 0110( BCD)6.求出下列10進制數(shù)的原碼、反碼和補碼(2) +85(4) -85解:85=0101 0101B原碼:+85= 0101 0101B -85= 1101 01

2、01B反碼:+85= 0101 0101B -85= 1010 1010B補碼:+85= 0101 0101B -85= 1010 1011B10.畫出微型計算機的基本結構框圖,說明各部分的主要功能是什么?解:微型計算機的基本結構框圖如下:微處理器CPU控制微處理器與存儲器或 I/O設備間的數(shù)據(jù)交換;進行算術和邏輯運算等操作;判定和控 制程序流向。微處理器主要完成:(1)指令控制:從存儲器中取指令,指令譯碼;(2)數(shù)據(jù)加工:簡單的算術邏輯運算;(3)操作控制:在微處理器和存儲器或者I/O之間傳送數(shù)據(jù);(4)時間控制:程序流向控制。存儲器:用來存放數(shù)據(jù)和指令。I/O接口:主機和外設間的橋梁,提供

3、數(shù)據(jù)緩沖驅動、信號電平轉換、信息轉換、地址譯碼、定時控制等 各種功能。I/O設備:輸入原始數(shù)據(jù)和程序,轉換成計算機能識別的信息,送入存儲器去等待處理。輸出運算結果。 總線:連接計算機系統(tǒng)中各功能部件的信息通道。第2章8086CPU作業(yè)2. 8086CPU內部由哪兩部分組成?它們的大致是如何工作的?答:(1) 8086CPU由指令執(zhí)行部件EU和總線接口部件 BIU兩部分組成。 BIU先執(zhí)行讀存儲器操作,從給定地址單元中取出指令,送到先進先出的指令隊列中等待執(zhí)行。存儲器的物理地址=CS 16+IP,在地址加法器 中形成。EU從指令隊列中取走指令,經(jīng)EU控制器譯碼分析后,向各部件發(fā)控制命令,以完成執(zhí)

4、行指令的操作。BIU與EU是并行工作方式。 當指令隊列已滿,EU在執(zhí)行指令,未向總線接口單元BIU申請讀/寫內存或I/O操作時,BIU處于空閑狀態(tài)。指令執(zhí)行過程中,若需對存儲器或I/O端口存取數(shù)據(jù),EU就要求BIU去完成相應的總線周期。5.兩個帶符號數(shù)1011 0100B和1100 0111B相加,運算后各標志位的值等于多少?哪些標志位是有意 義的?如果把這兩個數(shù)當成無符號數(shù),相加后哪些標志位是有意義的?解:(1)兩個帶符號數(shù): 不考慮CF標志1011 0100 + 1100 01111 0111 1011運算后各標志位狀態(tài)如下:CF=1 ,有進位,對于帶符號數(shù),無意義。PF=1,結果有偶數(shù)個

5、1AF=0,無半進位,非 BCD碼運算,無意義。ZF=0,結果非0SF =0,結果為正數(shù)OF=1,溢出(兩個負數(shù)相加,結果變成了正數(shù))(2)兩個無符號數(shù): 不考慮SF和OF標志1011 0100 + 1100 01111 0111 1011運算后各標志位狀態(tài)如下:CF=1 ,有進位PF=1,結果有偶數(shù)個1ZF=0,結果非0AF、SF、 OF無意義。20 .簡要解釋下列名詞的意義。CPU :中央處理單元 CPU (Control Processing Unit)也稱微處理器,是微型計算機的核心部件,由運 算器ALU、控制器、寄存器組以及總線接口等部件組成。主要完成各種運算,負責對整機的控制。存儲

6、器:用于存儲程序和數(shù)據(jù)的硬件設備。堆棧:堆棧是一種數(shù)據(jù)結構,是內部 RAM的一段區(qū)域。設置堆棧的目的是用于數(shù)據(jù)的暫存,中斷、 子程序調用時斷點和現(xiàn)場的保護與恢復。IP:指令指針寄存器,用于控制 CPU的指令執(zhí)行順序(只存放偏移量),只能和代碼段寄存器 CS配 合使用,可以確定當前所要取的指令的內存地址, 且始終指向代碼段中下一條將要讀取到 CPU指令隊列的 那條指令。順序執(zhí)行程序時, CPU每取一個指令字節(jié),IP自動加1,指向下一個要讀取的字節(jié)。SP:堆棧指針寄存器,用于指示堆棧的棧頂?shù)刂菲屏康募拇嫫?,它決定了堆棧在內部RAM中的物理位置。只能和SS段寄存器配合使用,且始終指向堆棧的棧頂,在

7、堆棧指令中隱含的使用它來定位棧頂數(shù) 據(jù)。BP:基址指針寄存器。用于存放偏移量,通常和SS段寄存器配合使用,在間接尋址中用于定位堆棧段中的內存單元。段寄存器:由于CPU內部的寄存器都是16位的,為了能夠提供 20位的物理地址,8086系統(tǒng)中采用 了存儲器分段的方法。規(guī)定存儲器的一個段為 64KB,由段寄存器來確定存儲單元的段基址, 由指令提供該 單元相對于相應段起始地址的 16位偏移量。狀態(tài)標志:表示前一步操作(如加、減等)執(zhí)行以后, ALU所處的狀態(tài),后續(xù)操作可以根據(jù)這些狀態(tài) 標志進行判斷,實現(xiàn)轉移。控制標志:可以通過指令人為設置,用以對某一種特定的功能起控制作用(如中斷屏蔽等),反映了人們對

8、微機系統(tǒng)工作方式的可控制性。物理地址:存儲器的實際地址,它是指 CPU和存儲器進行數(shù)據(jù)交換時所使用的地址。物理地址是由段 地址與偏移地址共同決定的,計算物理地址的表達式為:物理地址=段地址 x 16 +偏移地址邏輯地址:是在程序中使用的地址,它由段地址和偏移地址兩部分組成。邏輯地址的表示形式為 段地址:偏移地址頁眉內容機器語言:直接用二進制編碼表述的指令系統(tǒng)語言,通常稱為機器語言,機器語言指令是計算機惟一能直接識別和執(zhí)行的指令。匯編語言:便于記憶和使用,通常使用匯編語言(符號指令或指令助記符)來描述計算機的指令系統(tǒng)。指令:讓計算機完成某種操作的命令稱為指令。指令系統(tǒng):一臺計算機所能識別、執(zhí)行的

9、指令的集合就是它的指令系統(tǒng)??偩€:連接計算機系統(tǒng)中其他主要功能部件的橋梁,是計算機系統(tǒng)中信息輸送的樞紐,只有通過總線,計算機系統(tǒng)的各部件才能實現(xiàn)相互通信。內部總線:微處理器內部各個器件之間傳送信息的通路。系統(tǒng)總線:微處理機機箱內的底板總線。可分為:ISA、 EISA、 VESA 局部總線、PCI 局部總線等。時鐘周期:CPU 時鐘頻率的倒數(shù)稱為時鐘周期,也稱T 狀態(tài)??偩€周期:BIU 完成一次訪問存儲器或I/O 端口操作所需要的時間稱為總線周期。一個基本的總線周期是由 4 個(或 4 個以上)時鐘周期組成的。指令周期:執(zhí)行一條指令所需要的時間稱為指令周期,不同指令的指令周期的長短是不同的。一個

10、指令周期是由幾個總線周期組成的。21 . 要完成下列運算和控制,用什么標志判別?其值是什么?( 1 )比較兩數(shù)是否相等?( 2)兩數(shù)運算后結果是正數(shù)還是負數(shù)?( 3)兩數(shù)相加后是否溢出?( 4)奇偶校驗判斷。( 5)兩數(shù)相減后比較大小。( 6)中斷信號能否允許?答:( 1 )比較兩數(shù)是否相等:兩數(shù)相減后用零標志ZF 判斷, ZF=1 ,則相等。( 2)兩數(shù)運算后結果是正數(shù)還是負數(shù):用符號標志SF判斷,SF=1,則結果為負數(shù)。( 3)兩數(shù)相加后是否溢出:用溢出標志OF判斷,OF=1,則有溢出。( 4)奇偶校驗判斷:采用偶校驗方式,判定是否要補“ 1”?用奇偶標志 PF 判斷,若數(shù)據(jù)結果低8 位中

11、含有偶數(shù)個“1",則PF=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)

12、生的,適用于規(guī)模較小的微機應用系統(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立即尋址寄存器尋址(

13、3) MOV BX, SI寄存器間接尋址寄存器尋址(4) MOV 5BX, BL寄存器尋址寄存器相對尋址(5) MOV BP+100H, AX寄存器尋址寄存器相對尋址(6) MOV BX+DI, $立即尋址基址變址尋址(7) MOV DX, ES:BX+SI基址變址尋址寄存器尋址(8) MOV V ALBP+DI, DX寄存器尋址相對基址加變址尋址(9) IN AL, 05HI/O 端口尋址(或直接尋址)寄存器尋址(10) MOV DS, AX寄存器尋址寄存器尋址2 已知: DS=1000H, BX=0200H, SI=02H, 內存 10200H10205H 單元的內容分別為10H, 2AH

14、, 3CH, 46H,59H, 6BH 。下列每條指令執(zhí)行完后(1)MOV AX, 0200H ;(2) MOV AX, 200H ;(3) MOV AX, BX ;(4) MOV AX, 3BX;(5) MOV AX, BX+SI ;(6) MOV AX, 2BX+SI ;6指出下列指令中哪些是錯誤的,錯在什么地方( 1 ) MOV DL, AX( 2) MOV 8650H, AX( 3) MOV DS, 0200H( 4) MOV BX, 1200H( 5) MOV IP, 0FFH( 6) MOV BX+SI+3, IP( 7) MOV AX, BXBP( 8) MOV AL, ES:B

15、P( 9) MOV DL, SIDI( 10) MOV AX, OFFSET 0A20H( 11) MOV AL, OFFSET TABLE( 12) XCHG AL, 50H( 13) IN BL, 05H( 14) OUT AL, 0FFEH10. 已知 AX=2508H , BX=0F36H位 CF 等于什么?( 1 ) AND AH , CL(2) OR BL , 30H(3) NOTAX(4) XORCX,0FFF0H(5) TEST DH , 0FH(6) CMPCX,00H(7) SHR DX, CL(8) SARAL ,1(9) SHLBH ,CL( 10 ) SAL AX ,

16、 1( 11) RCL BX, 1( 12) ROR DX, CL11. 假設數(shù)據(jù)定義如下:DATA SEGMENTAX 寄存器的內容各是什么?AX 內容(AX)=0200H(AX)=2A10H(AX)=0200H(AX)=5946H(AX)=463CH(AX)=6B59H錯在什么地方錯誤,源和目的操作數(shù)類型不匹配,DL 是 8 位寄存器,AX 是 16 位寄存器。錯誤,立即數(shù)不能作為目的操作數(shù)。錯誤,不能用立即數(shù)直接給段寄存器賦值。錯誤,不能在兩個存儲單元之間直接傳送數(shù)據(jù)錯誤, IP 不能作目的操作數(shù)或不能用立即數(shù)直接給IP 寄存器賦值。錯誤, IP 不能作源操作數(shù)。錯誤,基址變址尋址方式必

17、須是一個基址寄存器與一個變址寄存器,不能兩個同時為基址寄存器(BX 、 BP 均為基址寄存器)。正確。錯誤,基址變址尋址方式必須是一個基址寄存器與一個變址寄存器,不能兩個同時為變址寄存器(SI、 DI 均為變址寄存器)。錯誤, OFFSET 后必須是存儲單元標號地址,不能是立即數(shù)。錯誤,操作數(shù)類型不匹配,AL 為 8 位, TABLE 為 16 位。錯誤,交換指令XCHG的操作數(shù)不能是立即數(shù)。錯誤, IN 指令的目的操作數(shù)必須是累加器錯誤, OUT 指令的源操作數(shù)必須是累加器,目的操作數(shù)為8 位 I/O 端口地址或用DX做橋梁的16 位I/O 端口地址。CX=0004H ,DX=1864H ,

18、求下列每條指令執(zhí)行后的結果是什么?標志(AH )=04HCF=0(BL )=36HCF=0(AX )=0DAF7HCF 不變(不影響( CX) =0FFF4H CF=0(DH )=18HCF=0(CX )=0004HCF=0DX) =0186H CF=0( AL ) =04H CF=0BH ) =0F0H CF=0AX ) =4A10H CF=0CF=0, ( BX) =1E6CHCF=1, ( BX) =1E6DH, ( DX) =4186H CF=0CF )CF=0STRING DB The Personal Computer & TVDATA ENDS試用字符串操作指令編程完成以

19、下功能:( 1 )把該字符串傳送到附加段中偏移地址為GET_CHAR 開始的內存單元中。解:程序段如下:LEASI, STRING;置源串偏移地址;置目的串偏移地址;置串長度;方向標志復位;字符串傳送LEA DI , GET_CHARMOV CX, 26CLDREP MOVSB12編程將AX 寄存器中的內容以相反的次序傳送到DX 寄存器中,并要求AX 中的內容不被破壞,然后統(tǒng)計 DX 寄存器中1 的個數(shù)是多少。解:將 AX 的內容用ROR 循環(huán)右移,16 次之后 AX 的內容不變(如果用算術/邏輯右移SHL/SAL ,則 AX的內容破壞,需要用堆棧PUSHU AX/POP AX 保護) ,其最

20、低位移入CF 中, 再使用 RCL 循環(huán)左移將CF 中的值移入DX 中。并且,如果CF 的值為1,則將BL 加 1 。MOV CX, 16XOR BL, BLLP1:ROR AX, 1JNC LP2INC BLLP2:RCL DX,1LOOP LP1HLT調試程序:STACK SEGMENT STACKDB 100 DUP(?)STACK ENDSDATA SEGMENTBUF DW 12BUF1 DW 100 DUP (?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUSH DSMOV AX,DA TAMOV DS,

21、AXMOV AX,1234HMOV CX, 16XOR BL, BLLP1:ROR AX, 1JNC LP2INC BLLP2:RCL DX,1LOOP LP1HLTCODE ENDS END START15. 某班有七個同學的英語成績低于80 分,分數(shù)存在ARRAY 數(shù)組中,試編程完成以下工作:給每人加5分,結果存到NEW 數(shù)組中 .解:STACK SEGMENT STACKDB 100 DUP(?)STACK ENDSDATA SEGMENTARRAYDB 7 DUP(?)NEWDB 7 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,S

22、S:STACKSTART:MOV CX, 7MOV BX, 0LP1:MOV AL, ARRAYBXADD AL, 05HDAAMOV NEWBXI, ALINC BXLOOP LP1HLTCODE ENDSEND START調試程序:STACK SEGMENT STACKDB 100 DUP(?)STACK ENDSDATA SEGMENTARRAYDB65H,76H,78H,54H,90H,85H,68HNEWDB7 DUP(?)BUF1 DW 100 DUP (?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUS

23、H DSMOV AX,DA TAMOV DS,AXMOV CX, 7MOV BX, 0LP1:MOV AL, ARRAYBXADD AL, 05HDAAMOV NEWBXI, ALINC BXLOOP LP1HLTCODE ENDSEND START某班有七個同學的英語成績低于80 分,分數(shù)存在ARRAY 數(shù)組中,試編程完成以下工作:( 1)給每人加5 分,結果存到NEW 數(shù)組中( 2)把總分存到SUM 單元中( 3)把平均分存到AVERAGE 單元中解:STACK SEGMENT STACKDB 100 DUP(?)STACK ENDSDATA SEGMENTARRAYDB 7 DUP(?)

24、NEWDB 7 DUP(?)SUMDW 0AVGDB 0DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV CX,7MOV SI,0MOV SUM, 0MOV AH, 0LP1:MOV AL,ARRAYSIADD AL, 05HDAAMOV NEWSI, ALADD AL ,SUMDAAMOV SUM,ALADC AH, 0DAAMOV SUM+1, AHINC SILOOP LP1MOV AX, SUMMOV BL,07HDIV BLMOV AVG, ALHLTCODE ENDSEND START 調試程序:STACK

25、SEGMENT STACKDB 100 DUP(?)STACK ENDSDATA SEGMENTARRAYDB65H,76H,78H,54H,90H,85H,68HNEWDB7 DUP(?)SUMDB00H,00HAVGDB 0BUF1 DW 100 DUP (?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUSH DSMOV AX,DA TAMOV DS,AXMOV CX, 7MOV SI, 0MOV SUM, 0MOV AH, 0LP1:MOV AL, ARRAYSIADD AL, 05H DAAMOV NEWSI

26、, ALADD AL , SUM DAAMOV SUM,ALADC AH, 0MOV SUM+1, AHINC SILOOP LP1MOV AL, SUMMOV AH,SUM+1MOV BL,07H DIV BLMOV AVG, AL HLTCODE ENDS END START13. 設 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 標 號

27、的 地址為3400:0ABCH 。說明下列每條指令執(zhí)行完后,程序分別轉移到何處執(zhí)行?JMP 指令(1)JMP PROG_N段內直接近轉移,目的地址為1200H:0278H( 或 12278H)(2)JMP BX段內寄存器間接轉移,目的地址為1200H:0300H( 或 12300H)(3)JMP BX物理地址=DSX 10H+BX=2000H X 10H+0300H=20300H(20300H)=4800H f IP段內存儲器間接轉移,目的地址為1200H:4800H( 或 16800H)(4)JMP FAR PROG_F段間直接轉移,目的地址為3400H:0ABCH( 或 34ABCH)(5

28、)JMP DWORD PTRBX物理地址=DSX 10H+BX=2000H X 10H+0300H=20300H(20300H)=4800H f IP, (20302H)=00FFH f CS段間存儲器間接轉移,目的地址為00FFH:4800H( 或 057F0H)JMP 改為 CALL 后,目的地址與JMP 相同。(1)CALL PROG_N段內直接調用,3字節(jié)指令,目的地址為1200H:0278H( 或 12278H), 0103H 入棧, SP=03FEH(2)CALL BX段內寄存器間接調用,2 字節(jié)指令,目的地址為1200H:0300H( 或 12300H) , 0102H 入棧,S

29、P=03FEH(3)CALL BX段內存儲器間接調用,2字節(jié)指令,目的地址為1200H:4800H( 或 16800H), 0102H 入棧,SP=03FEH(4)CALL FAR PROG_F段間直接調用,5 字節(jié)指令,目的地址為3400H:0ABCH( 或 34ABCH) , 1200H 和 0105H 分別入棧,SP=03FCH(5)CALL DWORD PTRBX段間間接調用,2 字節(jié)指令,目的地址為00FFH:4800H( 或 057F0H), 1200H 和 0102H 分別入棧,SP=03FCH部分調試程序:STACK SEGMENT STACKDB 100 DUP(?)STAC

30、K ENDSDATA SEGMENTBUF DW 12BUF1 DW 100 DUP (?)ORG 300HDB 00H,48H,0FFH,00HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUSH DSMOV AX,DA TAMOV DS,AXMOV BX,0300HCALL PROG_N頁眉內容CALL BXCALL BXORG 0278PROG_N:RETORG 0300HRETORG 4800HRETHLTCODE ENDSEND START14. 如在下列程序段的括號中分別填入以下指令:( 1) LOOP NE

31、XT(2) LOOPE NEXT(3) LOOPNE NEXTAX, BX, CX, DX 寄存器的內容分別是什么試說明在這三種情況下,程序段執(zhí)行完后,START: MOV AX, 01HMOV BX, 02HMOV DX, 03HMOV CX, 04HNEXT:INC AXADD BX, AX SHR DX, 1DELAY5 : MOV CX, N4解:()LOOP 過程:AXBXCX初始值01H02H循環(huán)1 次02H04H循環(huán)2 次03H07H循環(huán)3 次04H0BH結果:循環(huán)4 次05H10HAXBXCX(1)05H10H00H(2)02H執(zhí)行一次,ZF=0,04H退出循環(huán)。03H(3)0

32、3H執(zhí)行兩次,ZF=1 ,退出循環(huán)。07H退出循環(huán)。02HDX04H03 H03H 01H02H00H01H00H00H00HDX00H01H00H5ms 的子程序。20.設8086CPU的時鐘頻率為5MHz ,請編寫延時解:微機的主頻率為5MHz則:時鐘周期=主頻率的倒數(shù)=1/ (5X10-6) =0.2 s 延時5ms需要的時鐘周期數(shù) =5ms/ 0.2 s=25000延時子程序如下:頁眉內容DLY1 : NOPLOOP DLY1RET應該有 25000=4+ 3 XN+ 17N=1250=04E2H延時子程為:DELAY5 : MOV CX , 04E2HDLY1 : NOPLOOP D

33、LY1RET3 X N17 X ( N-1) + 516X (N-1) + 5+16,才能實現(xiàn)要求的延時。則第4章作業(yè)P1535 .閱讀下列程序,說明每條指令執(zhí)行后的結果是什么?X1 DB 65H,78HX2 DW 06FFH, 5200HX3 DD ?GO: MOV AL, TYPE X1MOV BL, TYPE X2MOV CL, TYPE X3MOV AH, TYPE GOMOV BH, SIZE X2MOV CH, LENGTH X3解:(1)前三條語句的功能是設置數(shù)據(jù)于數(shù)據(jù)段中,從數(shù)據(jù)段偏移地址0000H開始存放。變量偏移地址X10000H0001HX20002H0003H0004H

34、0005HX30006H0007H0008H0009H程序匯編后結果如下:六條程序執(zhí)行結果如下:(AL) =01H;設置變量類型屬性,字節(jié)數(shù)(BL) =02H;設置變量類型屬性,字節(jié)數(shù)(CL) =04H;設置變量類型屬性,字節(jié)數(shù)(AH) =0FFH ;設置GO顯示類型,近標號,為-1,補碼表示(BH) =02H;設置數(shù)據(jù)類型,無 DUP時,返回數(shù)據(jù)類型的字節(jié)數(shù)(CH) =01H;無 DUP 時,返回 1。程序執(zhí)行后結果如下:HU13CF:000013CF:0000IEPUSHDSL3CF;O001B0GE13EOU»XF13GE1JCF:0004QEDDMOWDG,AN物1(拓TW1

35、nonAU HI13CF:0000日地MOVBL, 0213CF:030AB104MDUCL. 0413GF;aaacH4FFEWftH.FF13Cr:000ED7B2nonDIL 02nCF:0AlHBEffinnutlH.fll13CF:n012IFPOPDS13CF:0013F4HLTisct.yun02B8FFFFADDBH,IBX+S1*FFFF113CF:0I318GWPU&H13CF:fiF119MDU13CF:001C50PJSH由X1丸上MIDLEAftX, LBP+FE/fi JHG-13CF;0000 13CF2O013lfiX=FFP11BX=fRP2CX=R1

36、DS=0OB0SP0664BP =0009 SI =ffl«0 DI=QeS0|Dt>=lJB7ES =±5E7s«=13C7CS=13CFIP =0613 NU UP EI PL NZ NA P0 NCE3CF:Uk113 F4HLT調試程序如下:STACK SEGMENT STACKDB100 DUPSTACK ENDSDATA SEGMENTX1 DB 65H,78HX2 DW 06FFH, 5200HX3 DD ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUSH DSMOV

37、 AX,DA TAMOV DS,AXGO: MOV AL, TYPE X1MOV BL, TYPE X2MOV CL, TYPE X3MOV AH, TYPE GOMOV BH, SIZE X2MOV CH, LENGTH X3POP DSHLTCODE ENDSEND START6 .畫出示意圖,說明下列變量在內存中如何讓存放?A1 DB 12H,34HA2 DB Right.'A3 DW 5678HA4 DB 3 DUP(1)設置數(shù)據(jù)于數(shù)據(jù)段中,從數(shù)據(jù)段偏移地址0000H開始存放。變量偏移地址數(shù)據(jù)A10000H12H12.編程實現(xiàn),從鍵盤輸入一個十進制數(shù)09,查表求鍵入數(shù)字的七段代

38、碼(共陽極LED顯示器的段碼),存入DL中,并在鍵入數(shù)字之前,顯示提示信息“Please input a number(09):解:STACK SEGMENT STACKDB 100 DUPSTACK ENDSDATA SEGMENTTABLE DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90HBUF DB 'Please input one number(0 9):',0DH,0AH,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES

39、:DATA頁眉內容START: PUSHMOVMOVMOVMOVDSAX,DA TADS,AXDX,OFFSET BUFAH,09HMOVSI, ALINT 21HMOV AH,1INT 21HAND AL,0FHMOV BX,OFFSET TABLEXLATMOV DL,ALPOP DSHLTCODE ENDSEND START調試結果:數(shù)字5 的共陽極LED 七段碼為92H 。15. 已知:在內存BUF 開始的單元中,存在一串數(shù)據(jù):58, 75, 36, 42, 89。編程找出其中的最小值存入MIN 單元中,并將這個數(shù)顯示在屏幕上。解:STACK SEGMENT STACKDB 100 D

40、UP(?)STACK ENDSDATA SEGMENTBUF DB 58H, 75H, 36H, 42H, 89HMIN DB 0DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA, SS:STACKSTART: PUSH DSMOV AX, DA TAMOV DS, AXMOV CX, 4MOV BX, OFFSET BUFMOV AL, BXST1: INC BXCMP AL, BXJBE NEXTMOV AL, BXNEXT:LOOP ST1MOV MIN, ALAND AL, 0F0HROR AL, CLADD AL, 30HMOV DL, ALM

41、OV AH, 02HINT 21HMOV AL, MINAND AL, 0FHADD AL, 30HMOV DL, ALMOV AH, 02HINT 21HPOP DSMOV AH, 4CHINT 21HHLTCODE ENDSEND START18. 某班有 20 個同學的微機原理成績存放在LIST 開始的單元中,要求編程先從高到低的次序排列好,再求出總分和平均值,分別存放在SUM 和 AVER 開始的單元中。解:STACK ENDSDATA SEGMENTLIST DB 65H,76H,78H,54H,90H,85H,68H,66H,77H,88HDB 99H, 89H, 79H, 69H

42、,75H,85H,63H,73H,83H,93HSUM DW 0AVER DB 0BUF DB 100 DUP (?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUSHMOVMOVMOVMOVLP0: MOVMOVLP1: MOVINCCMPJNCMOVMOVDSAX,DA TADS,AXDI, OFFSET LISTBX, 19SI, DICX, BXAL, SISIAL, SILP2DL, SISI-1, DL頁眉內容LP2:LOOPLP1DECBXJNZLP0LP3:MOVCX, 20MOVBX, OFFSET

43、LISTMOVSUM, 0XORAX, AXLP4: ADDAL, BXDAAADCAH, 0INCBXLOOP LP4MOV SUM, AXMOV BL, 20HDIV BLADD AL,0DAAMOV AVER ALPOP DSHLTCODE ENDSEND START20. 編程將存放在AL 中的無符號二進制數(shù),轉化成十六進制數(shù),再轉換成ASII 碼并顯示在屏幕上。解:程序如下:STACK SEGMENT STACKDB 100 DUP(?)STACK ENDSDATA SEGMENTDB 100 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE, DS

44、:DATA, SS:STACKSTART: PUSH DSMOV AX, DA TAMOV DS, AXMOV DH, ALMOV CH, 02HST1: MOV CL, 4ROR DH, CLMOV AL, DHAND AL, 0FHADD AL, 30HCMP AL, 39H頁眉內容JBE DISPADD AL, 07HDISP: MOV DL, ALMOV AH, 02HINT 21HDEC CHJNZ ST1POP DSMOV AH, 4CHINT 21HHLTCODE ENDSEND START調試程序如下:STACK SEGMENT STACKBUF DB 01111000BDB

45、100 DUP(?)STACK ENDSDATA SEGMENTDB 100 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA, SS:STACKSTART: PUSH DSMOV AX, DA TAMOV DS, AXMOV AL, BUFMOV DH, ALMOV CH, 02HST1: MOV CL, 4ROR DH, CLMOV AL, DHAND AL, 0FHADD AL, 30HCMP AL, 39HJBE DISPADD AL, 07HDISP: MOV DL, ALMOV AH, 02HINT 21HDEC CHJNZ ST

46、1POP DSMOV AH, 4CH頁眉內容INT 21HHLTCODE ENDSEND START21. 編寫程序,使用三種以上的方法,將存儲器中2000H 開始的地址單元中的100 字節(jié)數(shù)據(jù)復制到3000H 開始的存儲器地址單元中。解:( 1 )利用通用傳送指令MOVMOV SI , 2000H注意這里如果是標號地址,則必須用OFFSETMOV DI , 3000HMOV CX , 100LP1 : MOV AL , SIMOV DI , ALINC SIINC DILOOP LP1HLTMOV CX , 100MOV BX , 0LP0: MOV AL , 2000BXMOV 3000B

47、X , ALINC BXLOOP LP0 HLT ( 2)利用交換指令XCHGMOV SI , 2000H MOV DI , 3000H MOV CX , 100 LP2:MOV AL , SIXCHG DI , AL INC SI INC DI LOOP LP2 HLT ( 3)利用換碼指令XLATMOV BX , 2000HMOV DI , 3000HMOV CX , 100LP3: XOR AL , ALXLATMOV DI, ALINC BXINC DILOOP LP3 HLT ( 4)利用堆棧實現(xiàn)數(shù)據(jù)傳送MOV SI , 2000HMOV DI , 3000HMOV CX , 50L

48、P4:PUSH SIPOP DIINC SIINC SIINC DIINC DILOOP LP4 HLT( 5)利用串操作指令REP MOVSBMOV SI , 2000HMOV DI , 3000HMOV CX , 100CLD; DF=0, SI、 DI 自動 +1REP MOVSBHLT調試程序:STACK SEGMENT STACKDB 100 DUP(?)STACK ENDSDATA SEGMENTORG 2000HDB 11H,22H,33H,44H,55H.66H,77H,88H,99HDB 100 DUP(?)ORG 3000HDB 100 DUP(?)DATA ENDSCOD

49、E SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:PUSH DSMOV AX,DA TAMOV DS,AXMOV SI,2000HMOV DI,3000HMOV CX,100LP1: MOV AL,SIMOV DI,ALINC SIINC DILOOP LP1POP DSHLTCODE ENDSEND START22. 在 DATA 開始的4 個單元中存放著一個32 位數(shù), 求出其中的“ 1的個數(shù),”并存入 COUNT 單元中。解:DATA SEGMENTDATA1 DBCOUNTDATA ENDS0FEH, 86H, 7CH, 35HDB 00HST

50、ACKSTACKCODESEGMENTDB 100 DUP(?)ENDSSEGMENTCS: CODE , DS: DATA, SS: STACK DSMOVAX, DATAMOVDS,AXMOVAX,STACKMOVSS,AXMOVSI,OFFSETMOVBX,SIMOVDX,SI+2MOVCX,32XOR AL , ALLP1 : RCRDX,1RCRBX,1JNCLP2INCALLP2: LOOPLP1MOVCOUNT, ALPOPDSDATA1ASSUMESTART: PUSHMOV AH , 4CHINT 21HHLTCODE ENDSEND START1. 下列變量各占多少字節(jié)?A1DW23H ,5876H4 字節(jié)A2DB3 DUP(?) , 0AH , 0DH , $6 字節(jié)A3DD5 DUP (1234H , 567890H )4X 2X5=40 字節(jié)A4DB4 DUP(3 DUP ( 1 , 2, ABC ) )5X3X4=60 字節(jié)調試程序:STACK SEGMENT STACKDB 100 DUP(?)STACK ENDSDATA SEGMENTDA1DW 23H,

溫馨提示

  • 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

提交評論