微型計算機原理課後習題答案-王忠民主編

王忠民主編             西安電子科技大學出版

部分習題答案

第二章 計算機中的數值和編碼

  1. 將十進制數轉換爲二進制和十六進制

(1)  129.75=1000 0001.11B81.CH      (2)  218.8125=1101 1010.1101BDA.DH

(3)  15.625=1111.101BF.AH           (4)  47.15625=10 1111.0010 1B2F.28 H

 

  1. 將下列二進制數轉換爲十進制和十六進制

       (1)  111010 B=58 =3A H                 (2)  1011 1100.111B= 188.875= BC.E H

       (3)  0.1101 1B=0.84375 =0.D8H           (4)  11110.01 B=30.25 =1E.4H

 

3、完成下列二進制數的加減法運算

       (1) 1001.11+100.01=1110.00          (2)  1101010110.1001-01100001.0011=01110101.0110

       (3) 00111101+10111011=11111000   (4)  01011101.0110-101101.1011=101111.1011

 

4、完成下列十六進制數的加減法運算

       (1)   745CH+56DFH=D14B H         (2) ABF.8H-EF6.AH=9C28.E H     

       (3) 12AB.F7+3CD.05=1678 .FC H     (4)   6F01H-EFD8H=7F29 H

 

5、計算下列表達式的值

       (1)   128.8125+10110101.1011B+1F.2H=101010101.1010B          

       (2)   287.68-10101010.11H+8E.EH=103.CEH                 

       (3)   18.9+1010.1101B+12.6H-1011.1001=36.525

 

6、選取字長n爲8位和16位兩種情況,求下列十進制數的補碼。

       (1)   X=-33的補碼: 1101 1111  1111111111011111

       (2)   Y=+33的補碼: 0010 0001 0000 0000 0010 0001

       (3) Z=-128的補碼:1000 0000  1111 1111 1000 0000

       (4)   N=+127的補碼:0111 1111  0000 0000 0111 1111

       (5)   A=-65的補碼: 1011 1111  1111 1111 1011 1111

       (6)   B=+65的補碼: 0100 0001 0000 0000 0100 0001

       (7)   C=-96的補碼: 1010 0000 1111 1111 1010 0000

       (8)   D=+96的補碼: 0110 0000 0000 0000 0110 0000

 

7、寫出下列用補碼錶示的二進制數的真值

       (1) [X]補=1000 0000 0000 0000 H                   X1000 0000 0000 0000 H32768      

       (2) [Y]補=0000 0001 0000 0001 H                   Y0000 0001 0000 0001 H257         

       (3) [Z]補=1111 1110 1010 0101 H                    Z0000 0001 0101 1011 H347         

       (4) [A]補=0000 0010 0101 0111 H                   A0000 0010 0101 0111 H599

 

8、設機器字長爲8位,最高位爲符號位,試對下列格式進行二進制補碼運算,並判斷結果是否溢出。

       (1)  43+8    

           ∵ [43]補=00101011B,[8]補=00001000B

        ∴  [43]補+[8]補=00101011B+00001000B=00110011B=33H

                            00101011B

                     +    00001000B                                              

                            00110011B                                              

           ∵  CS=0,CD=0,OF=CS⊕CD=0⊕0=0

           ∴  無溢出

 

(1)  43+8                  33H      (無溢出)        (2)  -52+7               D3 H      (無溢出)

(3)  60+90                 96 H      (溢出)          (4)  72-8                  40 H      (無溢出)

     (5)  -33+(-37)        0BA H    (無溢出)         (6)  -90+(-70)      60 H       (溢出)   

       (7)  ―9―(―7)           FE H     (無溢出)          (8)  60-90                 E2 H       (無溢出)

 

9、 設有變量x=11101111B,y=11001001B,z=01110010B,v=01011010B,試計算x+y=?,x+z=?,y+z=?,z+v=?,請問:① 若爲無符號數,計算結果是否正確?② 若爲帶符號補碼數,計算結果是否溢出?

       x+y = 11101111B+11001001B=10111000B=1B8 H

                            1110 1111 B

                     +    1100 1001B

                            1011 1000B

       ① 若爲無符號數                              ② 若爲帶符號補碼數

           ∵ CF=1     ∴ 不正確                   ∵ CF=1,DF=1  OF=0      ∴ 不溢出

 

          x+y = 0B8 H          x+z = 61 H            y+z = 3B H           z+v = 0CC H

     ①   不正確            不正確            不正確            正確   

      ②    不溢出           不溢出            不溢出                  溢出

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

第三章  80X86微處理器

1.簡述8086/8088CPU中BIU和EU的作用,並說明其並行工作過程。

      答: (1) BIU的作用:計算20位的物理地址,並負責完成CPU與存儲器或I/O端口之間的數據傳送。

              (2) EU的作用:執行指令,併爲BIU提供所需的有效地址。

              (3) 並行工作過程:當EU從指令隊列中取出指令執行時,BIU將從內存中取出指令補充到指令隊列中。這樣就實現了取指和執行指令的並行工作。

   

2.8086/8088CPU內部有哪些寄存器?其主要作用是什麼?

      答:80868088CPU內部共有14個寄存器,可分爲4類:數據寄存器4個,地址寄存器4個,段寄存器4個和控制寄存器2個。其主要作用是:

              (1) 數據寄存器:一般用來存放數據,但它們各自都有自己的特定用途。

           AX(Accumulator)稱爲累加器。用該寄存器存放運算結果可使指令簡化,提高指令的執行速度。此外,所有的IO指令都使用該寄存器與外設端口交換信息。  

           BX(Base)稱爲基址寄存器。用來存放操作數在內存中數據段內的偏移地址,

           CX(Counter)稱爲計數器。在設計循環程序時使用該寄存器存放循環次數,可使程序指令簡化,有利於提高程序的運行速度。  

           DX(Data)稱爲數據寄存器。在寄存器間接尋址的IO指令中存放IO端口地址;在做雙字長乘除法運算時,DXAX一起存放一個雙字長操作數,其中DX存放高16位數。

              (2) 地址寄存器:一般用來存放段內的偏移地址。

             SP(Stack Pointer)稱爲堆棧指針寄存器。在使用堆棧操作指令(PUSHPOP)對堆棧進行操作時,每執行一次進棧或出棧操作,系統會自動將SP的內容減2或加2,以使其始終指向棧頂。

           BP(Base Pointer)稱爲基址寄存器。作爲通用寄存器,它可以用來存放數據,但更經常更重要的用途是存放操作數在堆棧段內的偏移地址。

           SI(Source Index)稱爲源變址寄存器。SI存放源串在數據段內的偏移地址。

              DI(Destination Index)稱爲目的變址寄存器。DI存放目的串在附加數據段內的偏移地址。

              (3) 段寄存器:用於存放段地址

           CS(Code Segment)稱爲代碼段寄存器,用來存儲程序當前使用的代碼段的段地址。 CS的內容左移4位再加上指令指針寄存器IP的內容就是下一條要讀取的指令在存儲器中的物理地址。

           DS(Data Segment)稱爲數據段寄存器,用來存放程序當前使用的數據段的段地址。 DS的內容左移4位再加上按指令中存儲器尋址方式給出的偏移地址即得到對數據段指定單元進行讀寫的物理地址。

           SS(Stack Segment)稱爲堆棧段寄存器,用來存放程序當前所使用的堆棧段的段地址。堆棧是存儲器中開闢的按“先進後出”原則組織的一個特殊存儲區,主要用於調用子程序或執行中斷服務程序時保護斷點和現場。

           ES(Extra Segment)稱爲附加數據段寄存器,用來存放程序當前使用的附加數據段的段地址。附加數據段用來存放字符串操作時的目的字符串。

              (4) 控制寄存器

           IP(Instmcdon Pointer)稱爲指令指針寄存器,用來存放下一條要讀取的指令在代碼段內的偏移地址。用戶程序不能直接訪問IP

           FLAGS稱爲標誌寄存器,它是一個16位的寄存器,但只用了其中9位,這9位包括(個狀態標誌位和3個控制標誌位。它用來反映算術運算和邏輯運算結果的一些特徵,或用來控制CPU的某種操作。

 

3.8086/8088CPU中有哪些寄存器可用來指示操作數在存儲器中某段內的偏移地址?

      答:可用來指示段內偏移地址的寄存器共有6個:IPSPBPBXSIDI

 

4.8086/8088CPU中標誌寄存器FLAGS有哪些標誌位?它們的含義和作用如何?

      答:標誌寄存器中的標誌共有9個,分爲兩類:狀態標誌6個和控制標誌3個。其作用是:

              (1) 狀態標誌:用來反映算術和邏輯運算結果的一些特徵。

           CF(Carry Flag)—進位標誌位。當進行加減運算時,若最高位發生進位或借位,則CF1,否則爲0。該標誌位通常用於判斷無符號數運算結果是否超出了計算機所能表示的無符號數的範圍。

           PF(Parity Flag)—奇偶標誌位。當指令執行結果的低8位中含有偶數個1,PF1,否則爲0

           AF(Auxiliary Flag)—輔助進位標誌位。當執行一條加法或減法運算指令時,若結果的低字節的低4位向高4位有進位或借位,則AF1,否則爲0

           ZF(Zero Flag)—零標誌位。若當前的運算結果爲0,則ZF1,否則爲00

           SF(Sign Flag)—符號標誌位。當運算結果的最高位爲1時,SF=1,否則爲00

           OF(Overflow Flag)—溢出標誌位。當運算結果超出了帶符號數所能表示的數值範圍,即溢出時,OF=1,否則爲0。該標誌位通常用來判斷帶符號數運算結果是否溢出o

             (2) 控制標誌位:用來控制CPU的操作,由程序設置或清除。它們是:

             TF(TrapFlag)—跟蹤(陷阱)標誌位。它是爲測試程序的方便而設置的。若將TF180868088CPU處於單步工作方式,否則,將正常執行程序。

           IP(Interrupt Flag)—中斷允許標誌位。它是用來控制可屏蔽中斷的控制標誌位。若用STI指令將IF1,表示允許CPU接受外部從INTR引腳上發來的可屏蔽中斷請求信號;若用CLI指令將IP0,則禁止CPU接受可屏蔽中斷請求信號。IF的狀態對非屏蔽中斷及內部中斷沒有影響。

           DF(DirectionFlag)—方向標誌位。若用STDDF1,串操作按減地址方式進行,也就是說,從高地址開始,每操作一次地址自動遞減;若用CLDDF0,則串操作按增地址方式進行,即每操作一次地址自動遞增。

 

5.8086/8088CPU的地址總線有多少位?其尋址範圍是多少?

      答:8086/8088地址總線有20根,尋址範圍1MB

 

6.什麼叫指令隊列?8086/8088CPU中指令隊列有什麼作用?其長度分別是多少?

      答: (1) 指令隊列:採用“先進先出”原則,按順序存放預執行指令的緩衝器稱爲指令隊列。

            (2) 指令隊列的作用:存放EU將要執行的指令,使CPU的取指和執行指令能並行工作。

              (3) 指令隊列的長度:80866個字節,80884個字節。

 

7.Intel8086與8088有何區別?

      答:80868088的區別有三處:

              (1) 外部數據總線位數不同(即地址/數據分時複用引腳條數不同);

                     808616位:AD15AD0

                     8088 8位:AD7AD0

              (2) 內部指令隊列緩衝器長度不同;

                     80866個字節。當指令隊列出現2個空字節時,BIU將取指補充。

                     80864個字節。當指令隊列出現1個空字節時,BIU將取指補充。

              (3) 外部某些控制總線定義不同。

                  808628號引腳定義爲MIO(S2)8088定義爲IOM(S2)

                  808634號引腳定義爲BHES78088定義爲SS0(HIGH)

 

8.簡述8086 CPU使用地址鎖存信號ALE將地址A15~A0與數據D15~D0分開的工作原理。

      答:在任何一個總線週期的T1狀態,ALE均爲高電平,以表示當前地址/數據複用線上的輸出的是地址信息,在ALE由高變低的下降沿時把地址裝入地址鎖存器,而在T2T3T4狀態,ALE均爲低電平,以表示當前地址/數據複用線上的輸出的是數據信息,此時通過數據收發器進行傳送。

 

9.什麼是邏輯地址?什麼是物理地址?若已知邏輯地址爲BA00:A800,試求物理地址。

      答: 邏輯地址:由段地址和偏移地址表示的存儲單元地址稱爲邏輯地址。

              物理地址:CPU對存儲器進行訪問時實際所使用的20位地址稱爲物理地址。

                邏輯地址爲BA00H:A800H

               物理地址=BA00H×10HA800HC4800H

 

10.簡述堆棧指針寄存器SP的功能及堆棧的操作過程。

      答: (1) SP的功能:指示進棧和出棧操作時的偏移地址。

              (2) 堆棧的操作過程:進棧時,先將SP2,再將數據壓入堆棧(即先移後入);出棧時,先將數據彈出堆棧,再將SP+2(即先出後移)。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

第四章  80X86 指令系統

  1. 指出源操作數的尋址方式

    ⑴ MOV  BX,2000H     ;立即數尋址       ⑵ MOV BX,[2000H]         ;直接尋址     

    ⑶ MOV  BX,[SI]     ;寄存器間接尋址   ⑷ MOV  BX,[SI+2000H]    ;寄存器相對尋址

    ⑸ MOV  [BX+SI],AL  ;寄存器尋址       ⑹ ADD  AX,[BX+DI+80]   ;基址變址相對尋址

    ⑺ MUL  BL            ;寄存器尋址       ⑻ JMP  BX                 ;段內間接尋址

    ⑼ IN   AL,DX        ;端口間接尋址     ⑽ INC WORD PTR [BP+10H]   ;寄存器相對尋址

    ⑾ MOV  CL,LENGTH VAR ;立即數尋址       ⑿ MOV BL,OFFSET VAR1     ;立即數尋址

 

  1. 指出下列指令是否正確 

 (1)  MOV  DS,0100H                  ;錯誤。源操作數是立即數時,目的操作數不能時段寄存器

 (2)  MOV  BP,AL                       ;錯誤。操作數類型不一致

 (3)  XCHG  AH,AL                    ;正確。

 (4)  OUT     310H,AL                   ;錯誤。端口直接尋址的範圍應在0FFH之間

 (5)  MOV    BX,[BX]                    ;正確。

       (6)  MOV    ES:[BX+DI] ,AX     ;正確。

        (7)  MOV    AX,[SI+DI]              ;錯誤。存儲器尋址中有效地址不能由兩個變址寄存器組成

        (8)  MOV    SS:[BX+SI+100H],BX  ;正確。

        (9)  AND  AX,BL                      ;錯誤。操作數類型不一致

(10)  MOV    DX,DS:[BP]              ;正確。

       (11)  ADD    [SI],20H                    ;錯誤。用PTR 說明類型

       (12)  MOV  30H,AL                     ;錯誤。目的操作數不能爲立即數

(13)  PUSH 2000H                          ;錯誤。堆棧指令的操作數不能是立即數

(14)  MOV  [SI],[2000H]              ;錯誤。兩個操作數不能同時爲存儲器操作數

(15)  MOV  SI,AL                        ;錯誤。操作數類型不一致

(16)  ADD    [2000H],20H              ;錯誤。用PTR 說明類型

       (17)  MOV  CS,AX                      ;錯誤。目的操作數不能爲代碼段寄存器

(18)  INC      [DI]                             ;錯誤。需用PTR說明類型

       (19)  OUT  BX,AL                      ;錯誤。端口間接尋址的寄存器只能是DX寄存器

(20)  SHL    BX,3                         ;錯誤。移位次數大於1時應該用CL寄存器

(21)  XCHG  CX,DS                     ;錯誤。交換指令中不能出現段寄存器

(22)  POP    AL                              ;錯誤。堆棧指令的操作數只能是字操作數(16位操作數)

 

  1. 寫出存儲器操作數物理地址的計算表達式

(1)   MOV  AL,[DI]                    ;(DS)×10H(DI)

(2)   MOV  AX,[BX+SI]               ;(DS)×10H(BX)(SI)

       (3)   MOV  5[BX+DI],AL             ;(DS)×10H(BX)(DI)5

(4)   ADD  AL,ES:[BX]              ;(ES)×10H(BX)

(5)   SUB  AX,[1000H]               ;(DS)×10H1000H

(6)   ADC  AX,[BX+DI+2000H]    ;(DS)×10H(BX)(DI)2000H

(7)   MOV  CX,[BP+SI]             ;(SS)×10H(BP)(SI)

(8)   INC   BYTE PTR [DI]          ;(DS)×10H(DI)

 

  1. 若(DS)=3000H,(BX)=2000H,(SI)=0100H,(ES)=4000H,計算下列存儲器操作數的物理地址。

       (1)  (DS)×10H+(BX)=3000H×10H+2000H=32000H  

       (2)  (DS)×10H+(BX)+(SI)+1000H=3000H×10H+2000H+0100H+1000H=33100 H       

(3)  (DS)×10H+(BX)+(SI)=3000H×10H+2000H+0100H=32100 H         

(4)  (ES)×10H+(BX)=4000H×10H+2000H=42000 H

 

5、若(CS)=E000H,說明代碼段可尋址物理存儲空間的範圍。

    ∵ 最小物理地址爲:(CS)×10H+0000H=E0000H

          最大物理地址爲:(CS)×10H+FFFFH=EFFFFH

    ∴ 代碼段可尋址物理存儲空間的範圍是:E0000HEFFFFH

 

6、設(SP)=2000H,(AX)=3000H, (BX)=5000H,執行下列程序段後,(SP)=?,(AX)=?, (BX)=?

              PUSH  AX

              PUSH  BX

              POP  AX

       (SP)1FFEH(AX)5000H (BX)5000H

 

7、試比較SUB AL,09H與CMP AL,09H這兩條指令的異同。若(AL)=08H,分別執行上述兩條指令後,(AL)=?,CF=?,OF=0,ZF=?

      (1)   相同點:兩條指令都能完成(AL)09H的功能,並且都影響六個狀態標誌位;

              不同點:SUB指令將運算結果回送到AL寄存器中,而CMP指令不回送。

       (2) SUB AL,09H             (AL)=FFHCF=1OF=0ZF=0

        CMP AL,09H            (AL)=08HCF=1OF=0ZF=0

8、分別執行下列指令,試求AL的內容及各狀態標誌位的狀態。

       (1) MOV      AL,19H      ;

              ADD       AL,61H       ;(AL)=7AH       OF=0    SF=0     ZF=0     AF=0    PF=0     CF=0

       (2) MOV      AL,19H      ;

              SUB       AL,61H       ;(AL)=B8H        OF=0    SF=1     ZF=0     AF=0    PF=1     CF=1

       (3) MOV      AL,5DH     ;

              ADD       AL,0C6H     ;(AL)=23H        OF=0    SF=0     ZF=0     AF=1     PF=0     CF=1

       (4) MOV      AL,7EH      ;

              SUB       AL,95H       ;(AL)=E9H        OF=1    SF=1     ZF=0     AF=0    PF=0     CF=1

 

9、用最少的指令,實現下述要求的功能。

       (1)   AH的高4位清零。                                               AND       AH0FH                                 

       (2) AL的高4位去反。                                               XOR     AH, 0F0H             

       (3) AL的高4位移到低4位,高4位清0。                 MOV     CL4                               

                                                                                           SHR      ALCL

       (4)  AL的低4位移到高4位,低4位清0。                 MOV     CL4

                                                                                           SHL      ALCL                                   

             

10、設(BX)=6D16H,(AX)=1100H,寫出下列三條指令執行後,AX和BX寄存器中的內容。

              MOV     CL,06H

              ROL       AX,CL

              SHR       BX,CL                      (AX)=4004 H       (BX)=01B4 H

      

11、設初值(AX)=0119H,執行下列程序段後,(AX)=?

              MOV      CH,AH

              ADD       AL,AH

              DAA

              XCHG    AL,CH

              ADC       AL,34H

              DAA

              MOV      AH,AL

              MOV      AL,CH                      (AX)=3520 H

      

12、指出下列程序段的功能。

       (1)   MOV      CX,10

              LEA       SI,First

              LEA       DI,Second

              REP   MOVSB                          First串中前10個字符傳送至Second

       (2)   CLD      

              LEA       DI,[0404H]

              MOV      CX,0080H

              XOR       AX,AX

              REP  STOSW                            將起始地址爲0404 H開始的80 H個單元置成0

 

13、 設(BX)=6F30H,(BP)=0200H,(SI)=0046H,(SS)=2F00H,(2F246H)=4154H,試求執行XCHG  BX,[BP+SI]後,    (BX)=?,(2F246H)=?

              (BX)4154H                      (2F246H)6F30H

 

14、設(BX)=0400H,(DI)=003CH,執行LEA  BX,[BX+DI+0F62H]後,(BX)=?

              (BX)139E H

 

15、設(DS)=C000H,(C0010H)=0180H,(C0012H)=2000H,執行LDS  SI,[10H]後,(SI)=?, (DS)=?

              (SI)0180 H(DS)2000 H

 

16、已知(DS)=091DH,(SS)=1E4AH,(AX)=1234H,(BX)=0024H,(CX)=5678H,(BP)=0024H,(SI)=0012H,(DI)=0032H,(09226H)=00F6H,(09228H)=1E40H,試求單獨執行下列指令後的結果。

       (1) MOV      CL,20H[BX][SI]               ;(CL)0F6 H       

       (2) MOV      [BP][DI],CX                            ;(1E4F6 H)5678 H         

       (3)  LEA       BX,20H[BX][SI]               ;(BX)=0056 H 

              MOV      AX,2[BX]                           ;(AX)=1E40 H

(4)   LDS       SI,[BP][DI]                         ;

       MOV   [SI],BX                             ;((SI))=0024 H              

(5)   XCHG   CX,32H[BX]                     ;

       XCHG   20H[BX][SI],AX               ;(AX)5678 H (09226H)1234 H

17、若CPU中各寄存器及RAM參數如圖所示,試求獨立執行如下指令後,CPURAM相應寄存器及存儲單元的內容是多少?

 

 

CPU

RAM

執行前

執行後

CS

3000H

FFFFH

CX

20506H

06H

不變

DS

2050H

0004H

BX

20507H

00H

不變

SS

50A0H

1000H

SP

20508H

87H

不變

ES

0FFFH

17C6H

DX

20509H

15H

不變

IP

0000H

8094H

AX

2050AH

37H

94H

DI

000AH

1403H

BP

2050BH

C5H

不變

SI

0008H

1

CF

2050CH

2FH

不變

 

1MOV    DX[BX+2]         ;(DX=0006H,(BX=0004H

2PUSH   CX                       ;(SP=0FFEH

3MOV    CXBX        ;(CX=0004H,(BX=0004H

4TEST    AX01         AX=8094H,(CF=0

5MOV    AL[SI]       ;(AL=87H

6ADC     AL[DI]       ;(AL=0CCH,(CF=0

        DAA                          ;(AL=32H

7INC      SI                  ;(SI=0009H

8DEC     DI                 ;(DI=0009H

9MOV    [DI]AL       ;((DI))=94H

10XCHG        AXDX AX=17C6H,(DX=8094H

11XOR    AHBL        ;(AH=84H,(BL=04H

12JMP    DX                ;(IP=17C6H

18、(DS)=2000H,(BX)=1256H,(SI)=528FH,偏移量=20A1H,(232F7H)=3280H,(264E5H)=2450H,試求執行下述指令後的結果。

       (1) JMP   BX                                         ;(IP)1256 H                

       (2) JMP   TABLE[BX]                           ;(IP)3280 H                 

       (3) JMP   [BX][SI]                                 ;(IP)2450 H

19、設(IP)=3D8FH,(CS)=4050H,(SP)=0F17H,當執行CALL  2000H:0094H後,試指出(IP)、(CS)、(SP)、((SP))、((SP)+1)、((SP)+2)和((SP)+3)的內容。

 

CALL指令是5字節指令,下一條指令地址爲4050H:3D94H

所以執行後

              (IP)0094H(CS)2000H(SP)0F13H

              ((SP))94H((SP)1)00H((SP)2)00H((SP)3)20H

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

第五章  彙編語言程序設計

2.PLENTH的值爲0022,它表示當前已分配單元空間;

3.L的值爲6;

5.(AX)=000AH;(BL)=0AH;(CL)=01H;

10.

MOV AX, 4A82H

MOV  DL,AH

AND  DL,0F0H

    MOV  CL,4

SHR  DL,CL

    PUSH  AX

    AND  AH,0FH

    MOV  BH,AH

    AND  AL,0F0H

    MOV  BL,AL

    MOV  CL,4

    SHR  BL,CL

    MOV  CL,BH

    POP  AX

    AND  AL,0FH

11.   data    segment

        string1  db 'I am a student.'

        string2  db 'I am a student .'

        yes      db 'match',0dh,0ah,'$'

        no       db 'no match',0dh,0ah,'$'

data    ends

code    segment     

        assume  cs:code,ds:data,es:data

start:  push  ds          

        sub ax,ax

        push  ax

        mov  ax,data

        mov  ds,ax

        mov  es,ax

        lea  si,string1

        lea  di,string2

        mov  cx,string2-string1

        cld

        repe  cmpsb

        jnz dispno

        mov  ah,9

        lea  dx,yes

        int  21h

        jmp  exit

dispno: mov  ah,9

        lea  dx,no

        int  21h

exit:   MOV  AH,4CH

        INT  21H

code    ends

 

13.  DATA    SEGMENT

        M       DB    11H,22H,33H,44H,64H,87H,34,29,67H,88H,0F6H

                DB      43H,0B7H,96H,0A3H,233,56H,23H,56H,89H

       C     EQU       20

       P     DB  20 DUP(?)

       N     DB  20 DUP(?)

        PLUS    DB     'PLUS',0DH,0AH,'$'

        MINUS   DB     'MINUS',0DH,0AH,'$'

        J   DB   2 DUP(?) 

DATA     ENDS

CODE     SEGMENT

       ASSUME  CS:CODE, DS:DATA

START:  MOV    AX,DATA

       MOV    DS,AX

       LEA    SI,M

       LEA    DI,P

       LEA    BX,N

       MOV    CX,C

       MOV    DX,0

LOOP1:    LODSB

       TEST     AL,80H

    JNZ     MINUS1 ;負數轉移

    MOV  [DI],AL

    INC  DI

    INC   DH  ;存正數個數

       JMP   AGAIN

MINUS1: MOV  [BX],AL

           INC  BX

              INC  DL       ;存負數個數

AGAIN: DEC  CX

        JNZ   LOOP1

        MOV  WORD PTR J,DX    ;存結果

        MOV  DX,OFFSET MINUS

        MOV AH,9

        INT 21H                       ;顯示提示信息

        MOV BL,J

        MOV  CH,2

ROTATE: MOV  CL,4

        ROL  BL,CL

        MOV  AL,BL

        AND  AL,0FH

        ADD  AL,30H

        CMP  AL,3AH

        JL   POR

        ADD  AL,7

POR:   MOV  DL,AL

        MOV  AH,2

        INT  21H

        DEC  CH

        JNZ  ROTATE    ;十六進制形式輸出負數個數

        MOV AH,2

        MOV DL,0DH

        INT  21H

        MOV DL,0AH

        INT  21H

        MOV  DX,OFFSET PLUS

        MOV AH,9

        INT 21H

        MOV DH,J+1

         MOV  CH,2

ROTATE1: MOV  CL,4

        ROL   DH,CL

        MOV  AL,DH

        AND  AL,0FH

        ADD  AL,30H

        CMP  AL,3AH

        JL   POR1

        ADD  AL,7

POR1:  MOV  DL,AL

        MOV  AH,2

        INT  21H

        DEC  CH

        JNZ  ROTATE1

              MOV  AH,4CH

              INT  21H

CODE     ENDS

       END       START

 

第六章  半導體存儲器

2、 (1)  64片  片內尋址線  10根,片間尋址線  6根

       (2) 128片  片內尋址線  11根,片間尋址線  5根

       (3)  16片  片內尋址線  11根,片間尋址線  5根

       (4)   2片  片內尋址線  14根,片間尋址線  2根

3、1024×8的RAM芯片,地址線11根。數據線8根

6、已知:8位微機地址,總線16位,設計12KB存儲系統,其中ROM 佔用0000H開始的8KB,RAM佔用2000H 開始的4KB,存儲芯片分別選用INTEL 2716和2114

分析如下:(1)ROM 2716   2K×8芯片,需4片,做字擴展,片內尋址線11根

RAM 2114   1K×4芯片,需8片,做字位擴展,片內尋址線10根

(2)地址範圍:                             A15  A14  A13  A12  A11  A10

ROM1:0000H~07FFH               0     0     0    0     0    0

ROM2:0800H~0FFFH               0     0     0    0     1    0

 

A15  A14  A13  A12  A11  A10

ROM3:1000H~17FFH               0    0     0    1     0     0

ROM4:1800H~1FFFH               0    0     0    1     1     0

RAM1、2:2000H~23FFH            0    0     1    0     0     0

RAM3、4:2400H~27FFH            0    0     1    0     0     1

RAM5、6:2800H~2BFFH            0    0     1    0     1     0

RAM7、8:2C00H~2FFFH            0    0     1    0     1     1

(3)A11、A12、A13    3:8譯碼器 譯碼輸入   (一級譯碼)

ROM1  :Y0

ROM2  :Y1

ROM3  :Y2

ROM4  :Y3

RAM1、2  :Y4  與  A10      (二級譯碼)

RAM3、4  :Y4  與  A10

RAM5、6  :Y5  與  A10

RAM7、8  :Y5  與  A10

(4)畫圖連接 略

9、8088組成的小型計算機系統,32KB ROM,其地址範圍00000~07FFFH, RAM佔用8KB,地址範圍:08000H~09FFFH。ROM選用 2764(8K×8),RAM選用2114(1K×4)

分析如下  (1)  ROM 2764   8K×8芯片,需4片,做字擴展,片內尋址線13根

RAM 2114   1K×4芯片,需16片,做字位擴展,片內尋址線10根

(2) 地址範圍:                      A15  A14  A13  A12  A11  A10

ROM1   00000~01FFF H               0    0     0                   (一級譯碼)

ROM2   02000~03FFF H               0    0     1   

ROM3   04000~05FFF H               0    1     0   

ROM4   06000~07FFFH                0    1     1

RAM1(組)08000~083FFH                1    0     0    0     0    0   (二級譯碼)

RAM2    08400~087FFH               1    0     0    0     0    1

RAM3    08800~08BFFH               1    0     0    0     1    0

RAM4    08C00~08FFFH               1    0     0    0     1    1

RAM5    09000~093FFH               1    0     0     1     0    0

RAM6    09400~09FFFH               1    0     0     1     0    1

RAM7    09800~09BFFH               1    0     0     1     1    0

RAM8    09C00~09FFFH               1    0     0     1     1    1

(3) ROM1  Y0   (1 # 譯碼器    A15   A14  A13 譯碼輸入)

ROM2  Y1

ROM3  Y2

ROM4  Y3

RAM1  Y0   (2 # 譯碼器  A12  A11  A10譯碼輸入  1 # Y4做2#的控制信號)

RAM2  Y1

RAM3  Y2

RAM4  Y3

RAM5  Y4

RAM6  Y5

RAM7  Y6

RAM8  Y7

(4) 需兩片3:8譯碼器

畫圖連接 略

第七章  輸入 / 輸出 與 中斷

15、01D8 H

16、接通打印機→ 檢查打印狀態→ 發送數據

              OR   AL,01 H

              OUT  0F7H , AL

              IN    AL ,0F6 H

              OUT  0F5H , AL

第八章  可編程接口芯片及應用

  1. 初始化命令字 及 計數初值

              CUNT0  36H或37H       1000

              CUNT1  54H 或55H       100

  1. 始化控制字

(1)99H    (2) B6 H   PC2及PC4 置位命令字  09 H   05 H

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章