微型計算機原理與接口技術第三版(張榮標)答案_第1頁
微型計算機原理與接口技術第三版(張榮標)答案_第2頁
微型計算機原理與接口技術第三版(張榮標)答案_第3頁
微型計算機原理與接口技術第三版(張榮標)答案_第4頁
微型計算機原理與接口技術第三版(張榮標)答案_第5頁
已閱讀5頁,還剩40頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

微型計算機原理與接口技術第三版(張榮標)答案

微型計算機原理與接口技術第三版答案

第1章練習題

1.選擇題

(1)BCA(2)A⑶DA⑷C

2.填空

(1)10,12

(2)取出指令,執行指令

(3)

(4)內部碼

3.簡答題

(1)微處理器,微型計算機和微型計算機系統三者有何聯系與區

別?

答:微處理器是把原來的中央處理單元CPU的復雜電路(包括運

算器和控制器)做在一片或幾片大規模集成電路的芯片上。把這種微

縮的CPU大規模集成電路稱為微處理器。

微型計算機是以微處理器為核心,再配備上用大規模集成電路工

藝制成的存儲器和I/O接口就構成了微型計算機。

以微計算機為核心,再配備上系統軟件、I/O設備、輔助電路和電

源就構成了微機系統。微型計算機系統包括硬件和軟件了兩大部分。

(2)計算機中為什么采用二進制數表示?

答:計算機是一種電器設備,內部采用的都是電子元件,用電子

元件表示兩種狀態是最容易實現的,比如電路的通和斷、電壓高低等

等,而且也穩定和容易控制。把兩種狀態用0,1來表示,就是用二進制

數表示計算機內部的數據。

(3)簡述程序的運行過程。

答:即取指令一分析指令一執行指令。根據程序計數器PC中的值

從程序存儲器讀出現行指令,送到指令寄存器。將指令寄存器中的指

令操作碼取出后進行譯碼,分析其指令性質,然后執行指令。

(4)設兩個正的浮點數如下。

1)若是否一定有?

2)若S1和S2均為規格化的數,且,是否一定有?

答:1)若不一定有。

若SI=111001016,S2=00100101B

當Pl=01B時,P2=10B時,

2)若S1和S2均為規格化的數,且,一定有。

浮點規格表示要求對浮點二進制正數,其尾數數字S部分的最高

位必須是1,故不會出現上述情況,當時,一定有。

4.計算題

(1)計算十進制數-47的原碼、反碼、補碼(8位二進制的形式

表示),并說明8位二進制原碼、反碼、補碼所能表示的數值范圍

(用十進制表示)。

解:[-47]原=10101111

[-4刀反=11010000

[-4刀補=11010001

8位二進制原碼表示的范圍為-127?+127,反碼表示的范圍為-

127~+127,補碼表示的范圍為-128~+127。

(2)將十進制數658.125轉換成二進制、八進制、十六進制和BCD

碼。

解:658/16=41...余數為2

41/16=2.?.余數為9

2/16=0…余數為2

0.125x16=2小數部分為0,整數部分為2

658.125D=292.2H=001010010010.0010B=1222.1Q=

011001011000.000100100101(BCD數)

(3)設浮點數的表示格式為階碼4位(包括階符1位)、尾數8

位(包括尾符1位)。階碼和尾數均用補碼表示。寫出二進制數X=-

0.0010110011B的規格化浮點數表示。

解:X二-0.0010110011B=-0.10110011X

S=0100110

Sf=1

J=110

Jf=1

規格化浮點數為1no10100110

(4)若X=-79,Y=+97,求[-X]補,[Y]補,[X-Y]補,[X+Y]補,

[-X-Y]補,要求給出求解過程,并指明運算后的溢出情況。

解:[-X]補=01001111

兇補二10110001

[Y]補=01100001

[-Y]補=10011111

[X-Y]補=[X]補+[-Y]補=01010000

10110001

+10011111

101010000

CS=1,CP=0,負溢出

[-X+YX卜=[-X]補+[Y]補=10110000

01001111

+01100001

10110000

CS=0,CP=1,正溢出

[以-丫]補=[以]補+[-Y]補=11101110

01001111

+10011111

11101110

CS=0,CP=0,無溢出

第2章練習題

1.選擇題

(1)D(2)A(3)B(4)C(5)C(6)B(7)A(8)A

2填空題

(1)地址總線的寬度,OOOOOH~OFFFFFH

(2)SS,DS,CS,ES

(3)第33()引腳

(4)SS,DS

(5)奇地址區,偶地址區,高8位,低8位

3.簡答題

(1)什么是指令周期?什么是總線周期?一個總線周期至少包

括幾個時鐘周期?

答:指令周期是一條指令執行所需的時鐘周期,CPU在執行指令

過程中,凡需執行訪問存儲器或訪問I/O端口的操作都統一交給BIU

的外部總線完成,進行一次訪問所需的時間稱為一個總線周期。一般

一個基本的總線周期由4個時鐘周期組成。

(2)8086CPU中,標志寄存器包含哪些標志位?各標志位為

。,T分別表示什么含義?

答:標志寄存器包含狀態標志和控制標志,狀態標志包括符號標

志、零標志、奇/偶標志、進位標志、輔助進位標志、溢出標志,控制

標志包括方向標志、中斷標志、跟蹤標志。

符號標志(SF)用來指出前面運算執行后的結果是正還是負,結

果為負,則;結果為正則零標志(用來指出前面

SF=1,SF=OeZF)

運算執行后的結果是否為零,結果為零,則ZF=1;結果為非零,則

奇/偶標志(用來指出前面運算結果的低位中所含的

ZF=0oPF)81

的個數為偶數還是奇數結果為偶結果為奇進位

,,PF=1;,PF=Oe

標志(CF),當執行加法運算使最高位產生進位或執行減法運算弓I起

最高位產生借位時否則輔助進位標志(當執

ZCF=1,CF=0oAF),

行加法運算使第3位往第4位上有進位或減法運算使第3位從第4位

有借位時,則AF=1,否則AF=O。溢出標志(OF),當運算的結果超

出了范圍是就會產生溢出,OF=1,否則OF=0。方向標志(DF)在

串操作指令中用來控制串操作過程中地址的增減,當DF=0,則地址不

斷遞增;當DF=1,則地址會不斷遞減。中斷標志(IF)在中斷過程中

控制是否響應可屏蔽中斷的請求,當下二0,則CPU不能響應可屏蔽中

斷請求當IF=L則CPU可以接受可屏蔽中斷請求。跟蹤標志(TF)在

中斷過程中控制是否響應單步中斷的請求,當TF=1,則CPU按跟蹤

你方式執行指令;當TF=O,則CPU不會響應單步中斷。

(3)8086CPU中有哪些通用寄存器和專用寄存器?說明他們的

作用。

答:4個通用寄存器,AX:16位的累加器;BX:16位的基數寄

存器,可用于寄存器間接尋址;CX:16位的計數寄存器,可作為程序

循環計數寄存器;DX:16位的數據寄存器,可作為I/O指令專用間接

尋址寄存器。

4個專用寄存器,BP:16位的基數指針寄存器,用來存放位于堆

棧段中的一個數據區基址的偏移地址;SP:16位的堆棧指針寄存器,

存放棧頂的偏移地址;SI:16位的源變址寄存器,用于存放當前數據

段的偏移地址;DI:16位的目的變址寄存器,也用來存放當前數據段

的偏移地址。

(4)在8086CPU中,已知CS寄存器和IP寄存器的內容分別如

下所示,請確定其物

理地址。

1.CS=1000HJP=2000H

2.答:物理地址:CS*16+IP=10000H+2000H=12000H

3.CS=1234H,IP=OCOOH

4.答:物理地址:CS*16+IP=12340H+0C00H=12F40H

5.⑸設(AX)=2345H,(DX)=5219H,請指出兩個數據相加或相減

后,FLAG中狀態標志位的狀態。

6.答:相加:0010001101000101

7.+0101001000011001

8.0111010101011110

9.CF=0,SF=0,ZF=0,AF=0,OF=0zPF=0

10.相減:0010001101000101

.0101001000011001

.1101000100101100

.CF=1,SF=1,ZF=0,AF=1,OF=1/PF=0

(6)8086CPU在最小模式下構成計算機系統至少應該包括哪幾

個基本的部分?

答:一片8284A時鐘發生器,三片8282或74LS373地址鎖存

器,兩片8286總線接收器。

(7)簡述堆棧指示器SP有什么功能?堆棧的操作過程是怎樣的?

試舉例說明。

答:堆棧指示器(SP)存放棧頂的偏移地址,以便存取位于當前

堆棧段中的數據。

舉例:PUSHBX;將寄存器BX的內容壓入堆棧。

操作過程分析:執行PUSH指令時,SP先自動減2,BX的低8位

放入SP所指單元中,高8位放入SP+1所指單元中。

第3章練習題

1.選擇題

(1)D(2)C(3)A(4)A

2.填空題

(1)字節遞增8DH,5CH,3BH,1AH

(2)遞增

(3)60H0

(4)1F02C

3.問答題

(1)試分別說明換碼指令和串操作指令所用的隱含寄存器及標志

位,并說明各自的工作過程。

答:換碼指令XLAT所用的隱含寄存器為BX和AL。指令〃XLAT〃

的工作過程:將BX和AL中的值相加,把得到的值作為地址,然后將

此地址所對應的單元中的值取到AL中。

串操作指令所用的隱含寄存器和標志位為CX、SI、DI和DFO字

符串傳送指令〃REPMOVSB”的工作過程:將DS:SI邏輯地址所指

存儲單元的字節傳送到ES:DI邏輯地址所指的內存單元中,當DF=0

時,SI和DI均增1,CX減1;當DF=1時,SI和DI均減1,CX減

lo重復執行上述操作,直到CX=0時停止。

(2)RET與IRET兩條指令有何區別?并說明各自的應用場合。

答:RET是從堆棧中彈出斷點地址,裝入IP或IP與CS中,從而

段內返回的目的。主要用于子程序的返回。IRET是中斷返回指令,是

專門為中斷服務程序返回設計的。

(3)試分別舉例說明8086CPU乘法與除法指令所用的隱含寄存

器。

答:乘法指令有無符號數乘法指令MUL和有符號數乘法指令

IMUL。MUL隱含寄存器AX,IMUL隱含寄存器AX和DXO如指令

〃MULDL〃的功能是將DL中的內容與AL中的內容相乘,結果放在

AX中。

除法指令也有無符號數除法指令DIV和有符號數除法指令IDIVe

DIV隱含寄存器AXJDIV隱含寄存器AX和DXO如指令〃IDIVBX〃

的功能是將DX和AX中的32位有符號數除以BX中的16位有符號

數,商在AX中,余數在DX中。

(4)簡述堆棧指示器SP有什么功能?堆棧的操作過程是怎樣的?試

舉例說明。(教材P85)

(5)8086CPU有哪些操作數的尋址方式?請分別舉例說明。

答:8086CPU中操作數尋址可分為4種:立即尋址、寄存器尋址、

存儲器尋址和I/O端口尋址。立即尋址如MOVAX,3412H。寄存器尋

址如MOVAX,BX。存儲器尋址可分為五類:直接尋址如MOV

AXJ7834H];寄存器間接尋址如MOVAX,[BX];寄存器相對尋址如

MOVAXJBX+12H];基址加變址尋址方式如MOVAXJBX+SI];相

對的基址和變址尋址如MOVAH/BX+SI+2468H]。I/O端口尋址包括

兩類:直接端口尋址如INAL,27H;間接端口尋址如OUTDX,AL。

4.請指出下列指令中源操作數和目的操作數的尋址方式。

(1)MOVSIJ20;目的操作數為寄存器尋址,源操作數為立即尋

址;

(2)MOVBPJBX]舊的操作數為寄存器尋址,源操作數為寄存

器間接尋址;

(3)MOVBXJ200];目的操作數為寄存器尋址,源操作數為直接

尋址;

(4)PUSHDS;源操作數為寄存器尋址;

(5)POPBX;目的操作數為寄存器尋址;

(6)ANDDLJBX+SI+30H];目的操作數為寄存器尋址,源操作

數為相對的基址和變址尋址;

5.請寫出如下程序片段中每條邏輯運算指令執行后標志ZF、SF、

和PF的狀態:

MOVALZ4CH;ZF不變,SF不變,PF不變

ANDAL,OFOH;ZF=OrSF=0zPF=O

ORBL,4CH;ZF=O,SF=0,PF=O

XORAL,AL;ZF=1zSF=0,PF=1

6.請寫出如下程序片段中每條算術運算指令執行后標志CF、ZF、

SF、OF、PF和AF的狀態:

MOVBL,54H;各標志位保持不變

ADDBL,4BH;CF=O,ZF=OxSF=1,OF=1,AF=1,PF=O

CMPBLz0B6H;CF=lzZF=0,SF=1,OF=0zAF=0,PF=O

SUBBL,BL;CF=O,ZF=1,SF=0,OF=0,AF=1,PF=O

INCBL;CF=O,ZF=O,SF=O,OF=0,AF=0,PF=O

7.(DS)=1000H/(SS)=2500H/(SI)=0100H/(BX)=0800H,(BP)=06

OOH,指出下列指令的目的操作數字段尋址方式,并計算目的操作數字

段的物理地址。

(1)MOV[BX]rCX

目的操作數為寄存器間接尋址

目的操作數的物理地址為:DSX16+0800H=10800H

(2)MOV[2000H],BX

目的操作數為直接尋址

目的操作數的物理地址為:DSxl6+2000H=12000H

(3)MOV[BP],BX

目的操作數為寄存器間接尋址

目的操作數的物理地址為:SSxl6+0600H=25600H

(4)MOV[BP+200],BX

目的操作數為寄存器相對尋址

目的操作數的物理地址為:SSxl6+0600H+C8H=256C8H

(5)MOV[BX+3OO][SI]rAX

目的操作數為相對基址加變址尋址

目的操作數的物理地址為:

DSxl6+0800H+12CH+0100H=10A2CH

8.已知(SS)=800H,(SP)=0040H,(CX)=OAFOH,

(DX)=201Ho下列指令連續執行,請指出每條指令執行后SS、SP、

AX、BX寄存器中的內容是多少?

PUSHCX;SS=0800H,SP=OO3EH,AX不變,BX不變

PUSHDX;SS=0800H,SP=OO3CH,AX不變,BX不變

POPAX;SS=0800H,SP=OO3EH,AX=0201H,BX不變

POPBX;SS=0800H,SP=0040H,AX=0201H,BX=0AF0H

9.閱讀下列各小題的指令序列,在后面空格中填入該指令序列的

執行結果。

(1)MOVDL,37H

MOVALZ85H

ADDAL,DL

DAA

AL=22H,BL=37H,CF=1

(2)MOVDX,1F45H

STC

MOVCX,95

XORCHQFFH

SBBDX;CX

DX=1FBOH,CF=1

10.已知程序段如下。

CMPCX,BX

JNCLI

JNCL2

JMPL3

假設有以下三組CX,BX值,那么在程序執行后,分別轉向哪里?

(1)(CX)=D3O1H,(BX)=D301H

答:轉向L1

(2)(CX)=2E50H;(BX)=8301H

答:轉向L2

(3)(CX)=477BH1(BX)=10DCH

答:轉向L1

11.設4個BCD碼DTLDT2、DT3、DT4分別放在AL、AH、

CL.CH的低4位,請編寫程序段,將這4個數按如下要求合并存放

到BX寄存器中。

BXDTIDT2DT3DT4

解:程序段如下:

MOVBXQ0H

ANDAXZOFOFH

ANDCX.OFOFH

MOVBL,CL

MOVCL,4

SHLBLZCL

ADDBL,CH

MOVBHZAL

SHLBH,CL

ADDBH,AH

12.請用串操作指令實現將10-99這90個數從2100H開始的內

存單元搬到3100H開始的內存單元處。

解:程序段如下:

MOVDS,2000H

MOVES3OOOH

CLD

MOVCXz90

MOVSIJOOH

MOVDI,100H

REPMOVSB

第4章練習題

1.選擇題

(1)BC(2)A(3)C(4)D

2.問答題

(1)變量和標號有什么異同之處?

答:變量和標號都有三種屬性:段地址、偏移地址及類型。變量

是存放在存儲器單元中的操作數,其值可以改變,變量的類型可以是

BYTE(字節)、WORD(字)、DWORD(雙字)等;標號是可執行

指令語句地址的符號表示,即用標志符來表示地址,標號的類型可以

是NEAR(近)或FAR(遠)。

(2)簡述匯編語言中偽指令的基本作用和特點,與機器指令相比

有何區別?

答:偽指令語句沒有對應的機器代碼,經匯編程序匯編后并不產

生目標代碼,由匯編程序對源程序匯編期間進行處理,主要作用是完

成變量的定義、存儲器的分配、段結構的定義,段的分配、過程的定

義程序開始和結束的指示等。而機器指令由CPU來執行,它的每一

條指令語句在源程序匯編時都要產生可供計算機執行的指令代碼(即目

標代碼)。

(3)試簡述宏調用與子程序調用各自的作用和相互之間的區別。

答:宏調用的作用是在定義宏指令后,通過宏指令來表示對應的

程序片段。子程序調用的作用是定義一個由主程序可以用CALL指令調

用的程序。兩者的區別:宏調用比子程序調用執行速度快;子程序調

用使用CALL語句實現,在CPU執行時進行處理,而宏調用由宏匯編

軟件MASM中的宏處理程序來處理;子程序調用比宏調用節省內存空

間;宏調用比子程序調用靈活。

(4)8086匯編語言程序中段的類型有幾種?段定義語句中定位

類型、組合類型和類別各起什么作用?

答:段類型有四類:數據段、代碼段、堆棧段、附加段。定位類

型用于規定20位的段起始地址。組合類型規定該段與其他段的位置關

系。類別名的主要作用是將所有分類名相同的邏輯段組成一個段組。

3.根據題意定義變量

(1)將字節數據12H,567H存放在變量DATA1的存儲單元中。

DATA1DW12H,567H

(2)將字節數據56H,0BCH存放在變量DATA2的存儲單元中。

DATA2DB56HQBCH

(3)在DATA3為首地址的存儲單元中連續存放字節數據5個W

6個(1,2,3),20個空單元。

DATA3DB5DUP(A),6DUP(1,2,3),20DUP(?)

(4)在STR1為首地址的存儲單元中存放字符串’HOWARE

YOU'。

STR1DB'HOWAREYOU'

4.已知某數據段經匯編后數據在存儲器中存放格式如下圖,試寫

出數據段定義。

DATA100H

(字節數據)0AH

10H

DATA204H

15

(字節數據)08H

08H

08H

09H

DATA377H

(字數據)65H

6CH

63H

6FH

6DH

???

解:DATA1DB00H,0AH,10H

DATA2DB15DUP(04H,3DUP(08H),09H)

DATA3DW6577H,636CH,6D6FH

5.設數據段數據定義如下。

DATASEGMENT

STRDB'GOODMORNING-;$#

ADRDW3DUP(0,2z5)

DISPDW3

DATAENDS

(1)畫出內存分配圖。

STR47H

(字節數據)4FH

4FH

44H

20H

4DH

4FH

52H

4EH

49H

4EH

47H

21H

24H

ADROOH

3

(字數據)00H

02H

00H

05H

00H

DISP03H

(字數據)00H

(2)分別用兩種求偏移量的指令將STR的偏移地址送BX.

解:①LEABX,STR

②MOVBXQFFSETSTR

6.寫出以下指令在匯編后目標程序中對應的指令。

7.同時對于兩條指令中分別出現的兩個AND和兩個OR是不是同

一種含義?為什么?

(1)MOVBXJ234HGT1000H對應MOVBXQFFFFH

(2)SBBDXJ024SHR3對應SBBDXQ080H

(3)ANDAL,7AND47H對應ANDAL,07

(4)ORDL,NOT(7OR54H)對應ORDLZA8

(5)MOVAX,HIGH(1000H+5)對應MOVAX,0010

(6)ADDAXZHIGH1000H+5對應ADDAX,0015

注意:匯編后顯示的立即數均為16進制數

第(3)、(4)條指令中出現的兩個AND和OR中,前面的

AND和OR是指令系統中的指令助記符,是在程序執行時進行運算的;

后面的AND和OR是邏輯運算符,是在編程過程中進行運算的,邏輯

運算對象只能是常數,其結果也是常數。

8.程序在數據段中定義的數據如下。

DATASEGMENT

VARIDB4,6

VAR2DD200DUP(?)

DATAENDS

以下三條指令分別匯編成什么?(可立即數方式表示)

(l)MOVCL,LENGTHVAR2匯編成MOVCL,C8

(2)MOVBLJYPEVARI匯編成MOVBL,01

(3)MOVBXzSIZEVAR2匯編成MOVBXQ320

注意:匯編后顯示的立即數均為16進制數

9.給定宏定義如下。

DIFMACROX,Y

MOVAX,X

SUBAX,Y

ENDM

ABSDIFMACROVI,V2,V3

LOCALNEXT

PUSHAX

DIFVI,V2

CMPAX,0

JGENEXT

NEGAX

NEXT:MOVV3,AX

POPAX

ENDM

試展開以下調用,并判定調用是否有效(展開后的指令必須符合

8086CPU指令系統要求)。

(1)ABSDIFDX,AX,CX

+PUSHAX

+MOVAXZDX

+SUBAX,AX

+CMPAX,0

+JGENEXT

+NEGAX

+NEXT:MOVCX,AX

+POPAX

(2)ABSDIF[100]/[DI],BX

+PUSHAX

+MOVAXJ100]

+SUBAXJDI]

+CMPAX,0

+JGENEXT

+NEGAX

+NEXT:MOVBX,AX

+POPAX

(3)ABSDIF[BX+SI],[BPL1OOH;調用無效。語法錯誤(立即數的使

用)。

10.寫一個宏定義,要求能把任意一個寄存器的最低位移至另一個

寄存器的最高位中。

解:宏定義如下:

SMOVMACROXI,X2

ANDXI,0001H

RORXI,1

ANDX2JFFFH

ORX2,X1

ENDM

n利用DOS功能調用從鍵盤輸入60個字符到緩沖區BUF中,

在按下ENTER鍵后在屏幕上顯示這些字符。請寫出程序段。

解:程序段如下:

DATASEGMENT

BUFDB60;用戶定義存放60個字節的緩沖區

NUMBDB?;系統填入實際輸入字符字節數

CHARSDB60DUP(?);存放輸入字符的ASCII碼值

DATAENDS

CODESEGMENT

ASSUMECS:CODEZDS:DATA

START:MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETBUF

MOVAH,0AH

INT21H

XORBX,BX

MOVBL,NUMB

MOVCHARS[BX];$,;字符串后加一個結束符

MOVDLQDH;回車

MOVAH,2

INT21H

MOVDLZOAH;換行

MOVAH,2

INT21H

MOVDX,OFFSETCHARS

MOVAH,9

INT21H

MOVAH,4cH

INT21H

CODEENDS

ENDSTART

第5章練習題

2.讀程序

(1)欲把AX寄存器的內容倒序,即D15-D0,D14-D1,…,

D0-D15,請在空格處填上正確的指令。

MOVBX,AX

MOVCX,16

AGAIN:RCLBXJ

RCRAX,1

LOOPAGAIN

(2)若要完成50-(1+2+3+4+5)的運算,并把最終運算結果轉

換成分離8421BCD碼,高位。AH,低位->AL,請在空格處填上正確

的指令。

MOVCX,5

MOVAX,50

NEXT:SUBAKCX

LOOPNEXT

AAM

(3)有一輸出設備,8位狀態端口地址為62H,最高位為時,CPU

可以向該設備的8位數據端口(地址61H)發送數據;否則,等待。

根據題意,請在空格處填上正確的指令。

WAIT:INAL,62H

TESTAL,80H

JNZWAIT

OUT61H,AL

(4)要求把源串AREA1中的100個字傳送給目的串AREA2,指針

按地址增量方向修改,請在空格處填寫正確的指令。

MOVSLOFFSETAREA1

MOVDI,OFFSETAREA2

MOVCXJ00

CLD

REPMOVSW

2.編程題

(1)試編寫一程序,把數組STRING中存放的20個8位二進制

數分成正數數組和負數數組,并統計正數、負數和零的個數,結果分

別存放在P、M、Z三個單元。

DATASEGMENT

STRINGDB20DUP(?)

POSIDB20DUP(?)

NEGADB20DUP(?)

PDBOOH

MDBOOH

ZDBOOH

DATAENDS

CODESEGMENT

ASSUMECS:CODEZDS:DATA

START:MOVAX,DATA

MOVDS,AX

XORBX,BX

MOVSI,BX

MOVDLBX

MOVCX,20

LP:MOVALZSTRING[BX]

CMPALZO

JGEPl

MOVNEGA[DI],AL

INCDI

INCM

JMPNEXT

PUNEP2

INCZ

JMPNEXT

P2:MOVPOSI[SI],AL

INCSI

INCP

NEXT:INCBX

LOOPLP

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

(2)試編寫一程序,完成10個一位十進制數累加,累加結果以

分離式BCD碼形式存放于AH(高位),AL(低位)寄存器。

DATASEGMENT

STRINGDB'1112220004'

DATAENDS

CODESEGMENT

ASSUMECS:CODEZDS:DATA

START:MOVAX,DATA

MOVDS,AX

MOVCXz10

XORBX,BX

MOVAX,0

LP:ADDAL,STRING[BX]

AAA

INCBX

LOOPLP

MOVAH,4cH

INT21H

CODEENDS

ENDSTART

(3)試編寫一程序,將2個字節的二進制數,變換成用ASCII碼

表示的四位十六進制數(用四字節表示)。

DATASEGMENT

NUMDW12345;0?65535

ASCDB4DUP(?)

DATAENDS

CODESEGMENT

ASSUMECS:CODEZDS:DATA

START:MOVAX,DATA

MOVDS,AX

MOVBX,NUM

LEADIZASC

MOVCX/0404H

LP1:ROLBX,CL

MOVDLZBL

ANDDLZOFH

CMPDLJO

JBLP2

ADDDL,7

LP2:ADDDL,'O'

MOV[DI]ZDL

INCDI

DECCH

JNZLP1

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

(4)試用串操作指令SCAS,在10個字節的數據塊BLOCK中,

搜索與2EH相等的數,若找到,則將該數地址存放于ADR中,并在

SIGNAL單元中作標記OFFH;否則,SIGNAL為00H。

DATASEGMENT

BLOCKDB26H,27H,28H,29H,2AH,2BH,2cH,2DH,2EH,2FH

ADRDW?

SIGNALDB?

DATAENDS

CODESEGMENT

ASSUMECS:CODEZDS:DATAZES:DATA

START:MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVDI,OFFSETBLOCK

CLD

MOVCXJO

MOVALZ2EH

REPNZSCASB

JNZAA

MOVSIGNAL,OFFH

DECDI

MOVADRZDI

JMPNEXT

AA:MOVSIGNAL,OOH

NEXT:MOVAH,4cH

INT21H

CODEENDS

ENDSTART

(5)請按如下說明編寫子程序。

子程序功能:把用ASCII碼表示的兩位十進制數轉換為壓縮BCD

碼。

入口參數:DH:十位數的ASCII碼,DL:個位數的ASCII碼。

出口參數:AL:對應壓縮BCD碼。

TRANSPROCNEAR

PUSHCX

PUSHDX

MOVCL,4

SUBDH,'O'

SUBDL,O

SHLDHZCL

ADCDL,DH

MOVALZDL

POPCX

POPDX

RET

TRANSENDP

(6)編寫一程序,計算100個16位正整數之和,如果和不超過

16位字的范圍(0~65535),則保存其和到SUM,如超過則顯示

"Overflow!〃。

DATASEGMENT

DAT1DW25DUP(OO34H,O345H/OO0OH/OOOOH)

SUMDW?

STRINGDB'Overflow!'QDHQAH;$'

DATAENDS

CODESEGMENT

ASSUMECS:CODEZDS:DATA

START:MOVAX,DATA

MOVDS,AX

MOVSLOFFSETDAT1

MOVBXQFFSETSUM

MOVCXJ00

XORAX,AX

LI:ADCAX,[SI]

JCOVER

INCSI

INCSI

LOOPLI

MOV[BX],AX

JMPNEXT

OVER:MOVDX,OFFSETSTRING

MOVAH,9

INT21H

NEXT:MOVAH,4cH

INT21H

CODEENDS

ENDSTART

3.問答題

(1)匯編語言程序的開發有哪些步驟,其工作過程需哪些軟件來

實現?可產生哪些輸出文件?

答:步驟如下:1)明確任務,確確算法2)繪制流程圖3)編寫

匯編語言程序4)上機調試程序。

編寫匯編語言程序時:1)需要EDIT.COM軟件建立源程序文件,

并保存為.ASM文件。2)需MASM.EXE軟件匯編源程序文件,可產

生擴展名為OBJ的目標文件、擴展名為LST的列表文件和擴展名為

CRF的對照文件。3)需要LINK.EXE軟件與目標文件連接,可產生擴

展名為EXE的可執行文件、擴展名為MAP的列表文件和擴展名為LIB

的庫文件。

上機調試時,需要DEBUG.EXE調試軟件。

(2)程序結束軟中斷有哪幾種實現方法?有什么區別?

答:程序結束軟中斷有三種實現方法:INT20H、INT21H、INT

27H。

INT20H的功能是終止當前進程,關閉所有打開的文件,清除磁

盤緩沖區,返回控制臺的命令接收狀態,實現程序退出時,不需要任

何入口參數。INT21H用于系統功能調用,該軟中斷包括3種情況:

無返回程序結束(入口參數AH=O,無返回號)、程序結束并駐留

(入口參數AH=31H,返回號AL=1)、帶返回程序結束(入口參數

AH=4CH,返回號AL=1)oINT27H用于駐留退出,入口參數

DX=XX設置駐留程序的長度。

(3)用匯編語言編程序有哪幾種結構?

答:順序結構;分支結構;循環結構;子程序結構。

(4)子程序結構中,主程序和子程序之間參數傳遞有哪幾種方法?

答:參數傳遞的實現方案可分為:寄存器傳送、固定緩沖區傳送、

地址表傳送、堆棧傳送。

第6章練習題

1.選擇題

(DC,(2)B,(3)C

2.填空題

(1)隨機存取存儲器,丟失,只讀存儲器,不會丟失

(2)電荷,電荷泄露,刷新

(3)128,10

(4)48000H,4FFFFH,32K

3.簡答題

(1)半導體存儲器的主要性能指標有哪些?

答:半導體存儲器的主要性能指標有:存儲容量、存取速度、功

耗、可靠性、價格。

(2)存儲器芯片由哪幾部分組成?各部分功能是什么?

答:存儲芯片由存儲矩陣、地址譯碼器、存儲器控制電路、三態

雙向緩沖器組成。存儲矩陣的功能是把能夠寄存二進制信息的基本電

路的集合體的這些基本存儲電路按陣列形式排列和編址;地址譯碼器

的功能是將CPU發送來的地址信號進行譯碼后產生地址編碼,以便選

中存儲矩陣中的某一個或某幾個基本存儲電路,使其在存儲器控制邏

輯的控制下進行讀/寫操作;存儲器控制電路通過相應的信號引腳,接

收來自CPU或外部電路的控制信號,經組合變換,產生芯片內部各部

分的控制信號;三態雙向緩沖器的作用是使組成半導體RAM的各個存

儲芯片很方便地與系統數據總線相連接。

(3)簡述SRAM和DRAM的各自特點。

答:SRAM的特點為速度快,不必配合內存刷新電路,可提高整

體的工作效率,但集成度低,功耗較大,相同的容量體積較大。

DRAM的特點是需要刷新來補充電荷。

(4)DRAM為什么要刷新?存儲系統如何進行刷新?

答:DRAM由電容組成,通過高低電平表示存儲的狀態,由于是

電容器作為載體,產生電荷泄露,故需要刷新來補充電荷。刷新按行

進行,即每當CPU或外部電路對動態存儲器提供一個行地址信號,使

存儲體中的某一行被選中,同時令列地址無效,即關閉所有的列選通

道,這樣,該行中所有基本存儲電路的數據將在內部讀出,并在相應

列刷新放大器作用下被放大和刷新。

(5)什么是高速緩沖器?與主體有什么關系?基本工作原理是什

么?

答:高速緩沖器為緩存,位于CPU與內存之間的臨時存儲器,以

提高CPU數據輸入輸出速率。高速緩沖器的原理是根據局部性原理,

把主存儲器中訪問概率高的內容存放在緩沖器中,當CPU需要讀取數

據時就首先在緩沖器中查找是否有所需內容,如果有則直接從緩沖器

中讀取;若沒有則再主存中讀取該數據,然后同時送往CPU的高速緩

沖器。

3.一個5124的RAM芯片需要多少根地址線?多少根數據線?若

要組成一個64Ki的存儲器,需要多少個RAM芯片?多少芯片組?多

少根芯片組選擇地址線?

答:一個5124的RAM芯片需要9根地址線,4根數據線。組成

一個64K&的存儲器需要256個RAM芯片,128個芯片組,7根芯片

組選擇地址線。

4.由Intel2164DRAM芯片組成一個64K8的存儲器,共需多少個

DRAM芯片?若進行刷新操作,需要幾次才能刷新完畢?

答:組成一個64K&的存儲器,共需8個DRAM芯片。需要128

次才能刷新完畢,7個觸發器。

第7章練習題

1.選擇題

(1)B(2)A.B(3)C

2.填空題

(1)01B0H,01B3H,4

(2)8,36

(3)中斷請求、中斷判優、中斷響應、中斷服務、中斷返回

3.問答題

(1)試說明8086CPU對INTR的響應過程。若某外部中斷源通

過8259A的IR4接入8086CPU系統,試說明應做哪幾個方面的工作

才能使該中斷正常工作。

答:響應過程:1)CPU在每執行完一條指令后,自動檢測是否有

INTR中斷請求;2)判斷是否響應INTR線上的中斷請求;3)確定中

斷向量地址;4)保存斷點;5)執行中斷服務程序;6)中斷返回。

若外部中斷源通過IR4接入8086系統,應做:1)設置8259A的

初始化命令字和相關操作命令字;2)系統開中斷。

(2)說明軟中斷與子程序調用在使用時有何區別。

答:軟中斷是由CPU根據程序的某條指令或者程序員對標志寄存

器中某個標志位的設置而產生的;子程序調用是由CALL指令引起的。

(3)采用DMA方式為什么能進行高速數據傳送?

答:DMA是一種直接存儲器存取方式,利用這種方式,可以在沒

有CPU干預的情況下,存儲器與外設之間或存儲器與存儲器之間進行

直接數據傳輸,這樣可以大大提高數據傳輸的速度。

(4)簡述DMA控制器8237A的工作周期。

答:8237A在系統中的工作狀態可分為兩種工作周期:DMA空閑

周期和DMA有效周期。

當8237A的所有通道均沒有DMA請求時,芯片即處于空閑周期,

此時8237A作為普通接口芯片受CPU控制,處于從屬狀態。當8237A

采樣到某通道有DMA請求,即向CPU發總線請求信號,一旦獲得總

線控制權則由空閑周期進入有效周期,此時8237A作為系統的主控芯

片,處于主控狀態.

(5)8237A在進行單字節方式DMA傳送和塊傳送時,有什么區

別?

答:1)單字節傳送方式:每次DMA操作僅傳送一個字節數據,傳

送后當前地址寄存器加1或減1,并將當前字節計數器減1,保持請求

信號HQR無效,交出總線控制權,隨后再次請求DMA傳送下一個字

節數據,如此往復直到當前字節計數器減為OFFFFH時終止。

2)數據塊傳送方式:8237A一旦獲得總線控制權,便開始連續傳

送數據,每傳送一個字節就自動修改地址,并使要傳送的字節數減1,

直到當前字節計數器減為OFFFFH時產生終止信號,或者受到外部的信

號時結束傳送,交出總線權。

4.下面是一個對8259A進行初始化的程序,請加上注釋,并具體

說明各初始化命令字的含義。

MOVAL,13H;設置ICW1命令字邊沿觸發方式,單片8259A

需要設置ICW4

MOVDX,40H

OUTDXZAL

INCDX;DX增1,為設置下面的命令字做準備

MOVALz08H;設置ICW2中斷類型號為從08H~OFH

OUTDX,AL

MOVAL,09H;設置ICW4為8088模式,一般E0I緩沖方式,

全嵌套方式

OUTDX,AL

系統分配給8259A的I/O地址為40H和41H

5.設8259A的偶地址是1000H,試編寫屏蔽8259A中的IR3,

IR4和IR6中斷請求的程序。

MOVDX,1000H;指向8259A的偶地址

MOVALZO1O11OOOB;使11\/m的口3、D4、D6位為1

OUTDX,AL

8259A的OCW1可以實現中斷源的屏蔽與開放。

6.某8086CPU系統的中斷系統由兩片8259A級聯組成,從片聯

在主片的IR3上,主、從8259A的IR5上各接有一個外部中斷源,其

中斷類型碼分別為ODH,95H。假設它們的中斷入口地址均在同一段

中,段基址為1000H,偏移地址分別是200H,300H;所有中斷都采

用邊沿觸發方式、全嵌套方式、正常EOI結束方式。

(1)寫出主、從8259A中斷向量地址的范圍;

(2)試編寫全部初始化程序。

解:(1)主8259A的中斷類型碼的范圍為:O8HOFH,中斷向量地址的

范圍為:20H3cH。從8258A的中斷類型碼的范圍:90H97H,中斷向量期止范圍

為:240H25cH。

(2)主8259A初始化程序段

MOVAX,00H

MOVDS,AX;中斷向量表的段地址為0000H

MOVBXQDH4;取中斷向量地址

MOVAX,200H;取中斷向量并送入中斷向量表

MOV[BX]fAX

MOVAX,1000H

MOV[BX+2LAX

MOVALQOOIOOOIB;ICW1邊沿愈蟲發,級聯方式,寫入ICW4

OUT30HtAL

MOVAL,08H;ICW2中斷類型號范圍

OUT31HfAL

MOVALfOOOOOlOOB;ICW3從片聯在主片的IR3上

OUT31HfAL

MOVAL^OOUIOIB;ICW4全嵌套方式,正常EOI結束方式

OUT31H,AL

從8259A初始化程序段

MOVAXQ0H

MOVDS,AX;中斷向量表的段地址為0000H

MOVBX,95HA;取中斷向量地址

MOVAX,300H;取中斷向量并送入中斷向量表

MOV[BX],AX

MOVAXJ000H

MOV[BX+2],AX

MOVAL^OOIOOOIB

OUT36H,AL

MOVALz90H

OUT37HZAL

MOVAL,00000011

OUT37H,AL

MOVAL,0001

7.設計8237A的初始化程序。要求:通道0工作于快傳送寫模式,

地址加1變化,允許自動預置功能;通道1工作于單字節傳送,地址

減1變化,禁止自動預置功能;通道2、通道3和通道1工作于相同

的方式。8237A的DACK為高電平有效,DREQ為低電平有效,采用

循環優先級方式啟動8237A工作。

MOVDXQMA+0DH;DMA+0DH為復位命令端口地址

MOVAL,0;發復位命令

OUTDX,AL

MOVALJ0110100B;設置通道0方式字

MOVDXQMA+0BH

OUTDX,AL

MOVALZO1OO1OO1B;設置通道1方式字

MOVDX,DMA+0BH

OUTDXZAL

MOVAL^IOOIOIOB;設置通道2方式字

MOVDX,DMA+0BH

OUTDX,AL

MOVAL,01001011B;設置通道3方式字

MOVDX,DMA+0BH

OUTDXZAL

MOVALJOOIOOOOB;設置控制字

MOVDX,DMA+08H

OUTDX,AL

8.試編寫程序段,要求利用8237A在存儲區的兩個區域BUF1和

BUF2之間直接傳送數據,傳送的數據長度為64KB

MOVAL,04H

MOVDX,DMA+08H;控制寄存器端口

OUTDX,AL;設控制字,禁止8237A工作

MOVDXQMA+0DH;復位命令端口

OUTDX,AL;發復位命令

MOVDXQMA+00H;通道0地址寄存器端口

MOVAX,BUF1;源數據區首址

OUTDX,AL;寫入地址彳氐8位

MOVAL,AH

OUTDX,AL;寫入地址高8位

MOVDXQMA+02H;通道1基地址與當前地址

MOVAX,BUF2;目的數據區首址

OUTDX,AL;寫入地址彳氐8位

MOVAL,AH

OUTDX,AL;寫入地址高8位

MOVDXQMA+03H;通道1基計數與當前字節計數

MOVAX,OFFFFH

OUTDX,AL;寫入初始值低8位

MOVALZAH

OUTDX,AL;寫入初始值高8位

MOVDX,DMA+0CH;先/后觸發器端口

OUTDXZAL;清先/后觸發器端口

MOVDX,DMA+0BH;方式寄存器端口

MOVAL,88H

OUTDX,AL;設通道0方式字,數據塊讀增量

MOVDXQMA+0CH

OUTDXZAL;清先/后觸發器端口

MOVDXQMA+0BH;方式寄存器端口

MOVAL,85H

OUTDX,AL;設通道1方式字,數據塊寫增量

MOVDX,DMA+0CH

OUTDX,AL;清先/后觸發器端口

MOVDXQMA+OFH;主屏蔽字端口

MOVAL,0CH

OUTDXZAL;屏蔽通道2、3

MOVDXQMA+OCH

OUTDX,AL;清先/后觸發器端口

MOVDX,DMA+08H;控制寄存器端口

MOVALz01H

OUTDX,AL;設控制字,允許存儲器到存儲器,啟動8237A工作

MOVDXQMA+OCH

OUTDX,AL;清先/后觸發器端口

MOVDX,DMA+09H;請求寄存器端口

MOVAL,04H

OUTDX,AL;向通道0發出DMA請求

MOVDXQMA+08H;讀狀態寄存器端口

AA1:INAL,DX

JZAA1

MOVDXQMA+OCH

OUTDX,AL;清先/后觸發器端口

MOVDX,DMA+09H;請求寄存器端口

MOVAL,OOH

OUTDX,AL;通道0撤銷DMA請求

MOVDXQMA+OCH

OUTDX,AL;清先/后觸發器端口

MOVDXQMA+08H;設控制字

MOVAL,04H

OUTDX,AL;禁止8237A工作

HLT

第8章練習題

1.選擇題

(1)C(2)B

2.填空題

設某接口的狀態端口地址為100H,狀態位從D7位輸入,數據端

口的地址為200H,輸入數據的總字節數為200,輸入數據段放在內存

單元的首地址為300,查詢式輸入數據的程序段如下。

MOVSL300

MOVCX,200

INPUT:INALJOOH

TESTAL,80H

JZINPUT

INAL200H

MOV[SI]ZAL

INCSI

LOOPINPUT

3.問答題

(1)當接口電路與系統總線相連接時,為什么要遵循〃輸入要經

過三態,輸出要鎖存〃的原則?

答:接口電路是介于主機和外設之間的一種緩沖電路,它使外設

與總線隔離,起緩沖、暫存數據的作用。因為數據總線是各種設備以

及存儲器傳送數據的公共總線,任何設備都不允許長期占用數據總線,

而僅允許被選中的設備在讀/寫周期中享用數據總線,這就需要接口

電路為輸入設備提供三態緩沖作用,只在讀/寫周期中為被選中的設

備開放與系統數據總線

溫馨提示

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

評論

0/150

提交評論