匯編語言試題_第1頁
匯編語言試題_第2頁
匯編語言試題_第3頁
匯編語言試題_第4頁
匯編語言試題_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1匯編語言試題。及參考答案

一,填空題

1.ZF標志位是標志結果是否為零的,若結果O,ZF為(0),否則ZF為(1).當ZF為1時,SF為(0)

2.標號可以有兩種類型屬性.它們是()和()

3.8位無符號整數(shù)的表示范圍為0-255,寫成16進制形式為(),8位有符號整數(shù)的表示范圍為

-128--+127,寫成16進制形式為()

4.偽指令DB,GROUP和NAME三個標號名字域必須有名字的是(GROUP),不得有名字

的是(NAME),可有可無名字的是(DB).

5.循環(huán)程序通常由()()()和循環(huán)結果外理四部分構成

6.在數(shù)值不達式中,各種運算符可可混合使用,其優(yōu)先次序規(guī)則*/()于+,-區(qū)01<(很()于

AND,LT()于GT

7.宏指令定義必須由偽指令(macro)開始,偽指令(ENDM)結束,兩者之間的語句稱為(宏體)

8.調用程序與子程序之間的參數(shù)傳遞方法有四種,即堆棧法()()()

9.分別用一條語句實現(xiàn)下述指明的功能

(1)棧頂內容彈出送字變量AYW()

(2)雙字變量AYD存放的地址指針送ES和SI()

⑶變量AY2類型屬性送AH()

(4)不允許中斷即關中斷()

(5)將字符串'HOWAREYOUY存入變量AYB()

(6)子程序返回調用程序()

(7)地址表達式AYY[4]的偏移地址送字變量ADDR()

(8)AX的內容加1,要求不影響CF()

(9)BX的內容加1,要求影響所有標志位()

(10)若操作結果為零轉向短號GOON()

二,單選題

l.IBMPC微機中,有符號數(shù)是用()表示的

1.原碼2.補碼3.反碼4.BCD碼

2.把匯編源程序變成代碼程序的過程是()

1.編譯2.匯編3.編輯4.鏈接

三,己知:VAR1,VAR2的類型屬性分別為字和字節(jié),標號LPFAR的類型屬性為FAR.指出下列

非法語句的錯誤原因

l.POPCS()

2.INC[BX]()

3.MVL8O

4.JLELPFAR()

5.MOVDB,1800()

6.MOV[DI],VAR1

7.SUBAX,VAR2()

8.CMPSSAX()

四,簡答題

1.試述子程序的一般結構組成

2.標號有哪三個屬性其含義是什么

3.試述CMPAX,BX和SUBAX,BX兩條語句的異同點

五,閱讀如下程序段,回答所提出的問題,假定X1,X2,...XN為無符號數(shù).

ORG100H

BLOKDWX1,X2,...,XN

COUNTEQU($-BLOK)/2

RESULTDWCOUNT,

LEABX,BLOK-2

MOVCX,RESULT

XORAX,AX

GOON:ADDBX,2

CMPAXJBX]

JAENEXT

MOVAX,|BXJ

NEXT:LOOPGOON

MOVRESUET+2,AX

程序段執(zhí)行完,回答下述問題

RESUET+2字存儲單元的內容=()

BX=()

程序循環(huán)次數(shù)二()

六,在下述程序段的每一空框內填入一個語句(不得修改其它語句),以實現(xiàn)如下功能:字節(jié)變量

STR中存放著一個字符串,以0DH為結束標志,試求串長度并送字變量COUNT中.

LEASLSTR

()

XORCX,CX

GOON:CMPAL,|SI]

()

INCCX

()

JMPGOON

NEXT:MOVCOUNTCX

七,編制將DS段中名為BUFB的字節(jié)存儲區(qū)改寫為空白字符(編碼為20H)的程序段.假定

BUFB存儲區(qū)定義為BUFBDBNDUP。八'),其中N為字面常量.

八,己知宏指令為:

SHIFTMACRORECOUNT

MOVAX,COUNT

IFRRLE64

MOVCL,3

SHRAX,CL

IFRRLT16

MOVCL,6

SHRAX,CL

ENDIF

ENDIF

ENDM

宏調用為:SHIFT15,7FFFH

SHIFT80.9FFFH

寫出宏擴展后的等效源程序段.

九,編寫完整程序,功能是把N個8個二進制數(shù)據(jù)轉換成16進制字符數(shù)據(jù).假定N個數(shù)據(jù)存放

在字節(jié)變量VARB中,轉換后的字符數(shù)據(jù)存放在HVARB中,提示0-9的字符碼為

30H-39H,A--F的字符碼為41H--46H

匯編語言試題<>答案

一,填空題

(1)1,0,0

(2)NEAR或近程,FAR或遠程

(3)0-FFH,80H-7FH

(4)GROUP,NAME,DB

(5)循環(huán)準備,循環(huán)體,循環(huán)的控制與修改

(6)高,低,等

(7)MACRO,ENOM,宏體

(8)約定寄存器法,約定存儲單元法,向量傳遞法

(9)(POPAYW)(LESSI,AYD)(MOVAH,TYPEAY2)(CLI)(AYBDB"HOWARE

YOU!")(RET)(MOVADDR,OFFSETAYY[4])(INCAX)(ADDBX,1)(JZGOON)

二,選擇題

1.(2)

2.(2)

三,

l.CS不能作目的操作數(shù)

2/BX]=義性

3.乘法指令源操作數(shù)不能是立即數(shù)

4.遠程標號不能作為條件轉移指令的操作數(shù)

5.立即數(shù)不能直接送段寄存器

6.兩個操作數(shù)不能同時為存儲器操作數(shù)

7.操作數(shù)不配,AX為字,VAR2為字節(jié)

8.段寄存器不能作為運算指令的操作數(shù)

四,簡答題

1.由保存現(xiàn)場,取入口參數(shù),加工處理,進也口友數(shù),恢復現(xiàn)場和返回程序

2.段屬性指定義該標號的段地址偏移屬性:指該標號的偏移地址類型屬性:指標號是在定義

它的段內引用還是在其它段引用

3.相同點:都執(zhí)行AX-BX操作,影響所有標志位且對檔志位的影響相同不同點:CMP執(zhí)行后

AX,BX內容不改變,而SUB執(zhí)行后,AX內為AX-BX之差,即內容變化了

五,

MAX(X1,X2,...XN)

(COUNT-1)

六,

(MOVAL,ODH)

(JENEXT或JZNEXT)

(INCSI)

七,

MOVAX,SEGBUFB

MOVDS,AX

LEASIBUFB

MOVCX,N

GOON:MOVBYTEPTR[SI],20H

INCSI

LOOPGOON

八,

MOVAXJFFFH

MOVCL,3

SHRAX,CL

MOVCL,6

SHRAX,CL

MOVAX,9FFFH

九,

DATASEGMENT

VARBDB45,36,377Q,...,U011011B

NEQUS-VARB

HVARBDB2NDRP()

DATAENDS

STACKSEGMENTPARASTACK“STACK”

DB256DUP()

STACKENDS

CODESEGMENT

ASSUMECS:COOE,DS:DATA,SS:STACK

MAIN:PROCFAR

PUSHDS

SUBAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVDX,N

LEADI,HVARB

LEASI,VARB;置初值

GOCN:MOVAH,[SI]

MOVAL,AH

ANDAH,0F0H

MOVCU4

SHRAH,CL

CMPAH,9

JNANEXT1

ADDAH,7

NEXT1:ADDAH,30H

ANDAL,DFH

CMPAL,9

JNANEXT2

ADDAL,7

NEXT2:ADDAL,30H

MOV[DI],AH

MOV[DI],AL

ADDDI,2

INCSI

DECDX

JNZGOON

RET

MAINENDP

CODEENDS

ENDMAIN

2匯編語言程序設計試題及答案匯編語言程

序設計試題及答案

?、單項選擇題(本大題共20小題,每小題1分,共20分)在每小題列出的四個備選項中只有?個是符合題目

要求的,請將其代碼填寫在題后的括號內。錯選、多選或未選均無分。

I.CPU要訪問的某一存儲單元的實際地址稱()

A.段地址B.偏移地址

C.物理地址D.邏輯地址

2.某存儲單元的物理地址是12345H,可以作為它的段地址有()

A.2345HB.12345H

C.12340HD.1234H

3.執(zhí)行后使BX=0的同時也使CF=0,OF=0的指令是()

A.XORBX,BXB.ORBX,BX

C.ANDBX,BXD.CMPBX,BX

4.循環(huán)控制指令LoopNZ/LoopNE控制循環(huán)繼續(xù)執(zhí)行的條件是()

A.CXM且ZF=1B.CX并且ZF=0

C.CX邦或ZF=1D.CX和或ZF=0

5.在執(zhí)行DAA指令,當高四位BCD碼校正時產(chǎn)生進位,如要把此進位值送入AH中,對這進位值的操作應是

()

A.DAA校正指令的功能已自動加在AH中

B.進位值在AF中,校正后根據(jù)AF內容再加在AH中

C.進位值在CF中,校正后根據(jù)CF內容再加在AH中

D.進位值在AL最高位上,校正后根據(jù)AL最高位內容再加在AH中

6.AND,OR,XOR,NOT為四條邏輯運算指令,下面的解釋正確的是()

A.指令XORAX,AX執(zhí)行后,AX內容不變,但設置了標志位

B.指令ORDX,1000H執(zhí)行后,將DX最高位置1,其余各位置0

C.指令ANDAX,OFH執(zhí)行后,分離出AL低四位

D.NOTAX,執(zhí)行后,將AX清0

7.在執(zhí)行下列指令時,需要使用段寄存器DS的指令是()

A.STOSWB.ADDAL,CL

C.NEGBXD.INCDA(BX]

8.無論BH小原有的數(shù)是奇數(shù)或偶數(shù),若要使BH中的數(shù)一?定為奇數(shù),應執(zhí)行的指令是()

A.ADDBH,01HB.ORBH,01H

C.XORBH,01HD.TESTBH,01H

9.完成對CL寄存器的內容乘以4的正確操作是()

A.ROLCL,1B.MUL4

ROLCL,1

C.SHLCL,1D.MOVCL,2

SHLCL,1SHLCL,CL

10.下面各傳送指令中,正確的是()

A.MOV[DI],[SI]B.MOV[DX+DI],AL

C.MOVWORDPTR[BX],01OOHD.MOVAL,BX

11.匯編語言語句格式中對名字項的規(guī)定如下,請找出其中錯誤的說法()

A.名字的第一個字符可以是大寫英文字母及小寫英文字母

B.名字的第一個字符可以是字母、數(shù)字及、@、_

C.名字的有效長度W31個字符

D.在名字中不允許出現(xiàn)$

12.要實現(xiàn)使BETA的值為56,應采用語句為()

A.BETADB56B.BETADB56H

C.BETAEQU56D.BETAEQU56H

13.REPZCMPSW指令,重復執(zhí)行的終止條件是()

A.CX=0或ZF=0B.CX=0且ZF=()

C.CX=0或ZF=1D.CX=OJ!LZF=1

14.下面程序段執(zhí)行后,AL中的內容是()

MOVAX,8833H

ADDAL,AH

DAA

A.21B.21H

C.OCIHD.ODDH

15.比較兩個帶符號的數(shù)A、B,當A=B時程序轉移,測試的條件為()

A.ZF=1B.ZF=O

C.SF=1D.SF=O

16.檢查二個無符號數(shù)的關系,若要實現(xiàn)ALNBL時分支去L0P1處,那么在“CMPAL,BL”指令后應跟的分支

指令是()

A.JNCL0P1B.JALOP1

C.JCLOP1D.JGELOP1

17.在下列串操作指令中,同時使用源串和目的串地址指針的指令是()

A.STOSWB.LODSW

C.SCASWD.CMPSW

18.設AL=0AH,卜冽指令執(zhí)行后能使AL=05H的是()

A.NOTALB.ANDAL,OFH

C.XORAL,OFHD.ORAL,OFH

19.DAIDW‘AB',‘CD',、EF','GH'()

MOVAX,DA1+3

指令執(zhí)行后AX中的內容是

A.正FB.iCD,

C.'BCD.'FC

20.使用DOS系統(tǒng)功能調用時,使用的軟中斷指令是()

A.INT21B.INT10H

C.INT16HD.INT21H

二、填空題(本大題共12空,每空0.5分,共6分)請在每小題的空格中填上正確答案。錯填、不填均無分。

21.十六進制數(shù)OFFF8H表示的十進制正數(shù)為,表示的十進制負數(shù)為o

22.若DS=0F3EH,SI=2000H,COUNT=OA8H,指令MOVAX,(SI+COUNT)中,源操作數(shù)的有效地址EA

為,其物理地址為O

23.CPU的標志寄存器中標志位,可以分為兩大類,其中一類稱為_____標志位,另一類稱為標志位。

24.當標志位=1時表示無符號數(shù)運算產(chǎn)生溢出,而當標志位=1是表示帶符號數(shù)運算產(chǎn)生溢出。

25.如JMP指令采用段間間接尋址,那么由4個相鄰字節(jié)單元中存放有轉移地址,其中前兩個字節(jié)存放的是

,而后兩個字節(jié)存放的是o

26.在串操作程序中,通常在重復前綴指令REPZ或REPNZ后,選用的申操作指令是或______才有

實際意義。

27.已知:BX=1357H,DI=2000H,DS=2000H,CS=4000H,分別指出下面各指令中存儲器操作數(shù)的物理地址。

(1)MOVAL,[BX]

(2)MOVCS:LBX+DI],AH

28.OPIDB1,2

0P2DW3412H,5678H

?

■(

MOVAX,OP1+1:字單元(OP1+1)AX

MOVBL,OP2+1:字節(jié)單元(OP2+1)BL

上述二條傳送語句有語法錯誤,請根據(jù)注釋字段的說明,將其改正。

29.下列語句在存儲器中分別為變量分配多少字節(jié)?

(1)AD2DW10DUP(?),10

(2)AD3DD100DUP(?)

30.簡述下面兩條指令分別是什么語法錯誤?

MOV[BX],[SI]

MOVAX,DL

四、程序分析題(本大題共6小題,每小題6分,共36分)

31.MOVDL,AL

NOTDL

TESTDL,04H

JENEXT

1

(■

NEXT:...

若上述程序段執(zhí)行時產(chǎn)生分支,說明AL中的數(shù)第幾位一定為1?程序段執(zhí)行后CF是多少?

32.DAIDBABCDEFGHF

DA2DB9DUP(0)

1?

LEASI,DAI

LEADLDA2

MOVCX,9

CLD

LOP:LODSB

SUBAL,10H

STOSB

LOOPLOP

試問:①寫出程序執(zhí)行后DA2各字節(jié)中的數(shù)據(jù)。

②保持程序功能情況下,程序中可否改寫為

33.已知:BX=4567H

NEGBX

INCBX

NEGBX

DECBX

程序段執(zhí)行后,BX=,CF=o

34.MOVBL,64H

MOVCL,03H

XORAX,AX

AGAIN:ADDAL,BL

ADCAH,0

DECCL

JNZAGAIN

問:(1)該程序段完成的功能是:

(2)AX=。

35.已知數(shù)據(jù)段中定義

DAT1DB12H,34H,56H,78H

MOVCX,0

MOVAX,WORDPTRDAT1

MOVCL,DAT1+3

當程序段執(zhí)行完后AX=?CX=o

36.DAIDB83H,72H,61H,94H,5AH

MOVCX,WORDPTRDAI

ANDCX,OFH

MOVAL,DA1+3

SHLAL,CL

上述指令序列執(zhí)行后,AL=,CL=o

五、程序填空題(本大題共2小題,每小題6分,共12分)

37.在NUMW單元存放有一個0-65535范圍內的整數(shù),將該數(shù)除以500,商和余數(shù)分別存入QU1和REM單元,

請在空行處各填上一條指令完善該程序。

■?

MOVAX,NUMW

XORDX,DX

DIVBX

MOVQUI,AX

38.某程序欲用單個字符顯示的2號功能調用去顯示STRING中的字符串匕OMPUTER,(不顯示字符$!).試

在空白處填上適當?shù)囊粭l指令。

STRINGDB'COMPUTER',$

■?

MOVBX,OFFSETSTRING

LOP:MOVDL,|BX]

MOVAH,02H

INT21H

JNELOP

六、編程序題(本大題共2小題,第39小題6分,第40小題12分,共18分)

39.試編制一程序段,用筆操作指令實現(xiàn)以DA_BY為首址的20H個字節(jié)單元中存放相同字符Y(設DA_BY存

儲區(qū)已有ES指向)。

40.試編制?源程序,統(tǒng)計DA1字單元中含。的個數(shù),如統(tǒng)計的個數(shù)為奇數(shù),則將進位位置1,否則進位位清0。

DATASEGMENT

DAIDWXXXX

DATAENDS

匯編語言程序設計試題答案

1、C;2、D;3、A;4^B;5、C;

6、C:7、D;8、B;9、C;10、C;

11、B:12、C;13、A:14、B;15、A

16、C:17、D;18、C:19、D;20、B

21、+65528;-32760

22、20A8H;11488H

23、狀態(tài);控制

24、CF:OF

25、IP:CS

26、STOS:CMP

27、(1)21357H;(2)43357H

28、MOVAX,WORDPTR(OP1+1)

MOVBL,BYTEPTR(OP2+1)

29、(1)22;(2)400

30、MOV指令不能在兩個存儲器操作數(shù)之間進行;

操作數(shù)類型不匹配

四、

31、第2位;CF=0

32、123456789;不能更改

33、BX=4565H:CF=1

34、AX=012CH,將AX內容乘3送BX中

35、AX=3412H,CX=0078H

36、AL=0A0H,CL=03H

五、

37、MOVBX,500

MOVREM,DX

38、INCBX

CMP[BX],24H

六、

39、LEADI,DA_BY

MOVCX,32

MOVAL,'Y'

CLD

REPSTOSB

40、CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX.DATA

MOVDS,AX

LEAShDAl

MOVCX,16

XORBL,BL

AGAIN:MOVAL,[SI]

HLAL,1

JCNEXT

INCBL

NEXT:INCSI

LOOPAGAIN

TESTBL,01H

JNELI

CLC

JMPDONE

L1:STC

DONE:MOVAH.4CH

INT21H

CODEENDS

ENDSTART

3匯編語言程序設計試題及答案-,單項選擇題(在每小

題的四個備選答案中,選出一個正確的答案,并將其號碼填在題干后的括號內,每小題1

分,共20分)

1.指令JMPFARPTRDONE屬于參考答案為:C

A.段內轉移直接尋址

B.段內轉移間接尋址

C.段間轉移直接尋址

D.段間轉移間接尋址

[解析]略

2.下列敘述正確的是參考答案為:C

A.對兩個無符號數(shù)進行比較采用CMP指令,對兩個有符號數(shù)比較用CMPS指令

B.對兩個無符號數(shù)進行比較采用CMPS指令,對兩個有符號數(shù)比較用CMP指令

C.對無符號數(shù)條件轉移采用JAE/JNB指令,對有符號數(shù)條件轉移用JGE/JNL指令

D.對無符號數(shù)條件轉移采用JGE/JNL指令,對有符號數(shù)條件轉移用JAE/JNB指令

[解析]對于無符號數(shù)和有符號數(shù)的比較都采用CMP指令;

CMPS指令是串比較指令;

對兩個有符號數(shù)的條件轉移指令應是:JAE、JNB、JBE、JNA;

對兩個無符號數(shù)的條件轉移指令應是:JGE、JNL、JLE、JNGo

3.一個有128個字的數(shù)據(jù)區(qū),它的起始地址為12ABH:00ABH,請給出這個數(shù)據(jù)區(qū)最

末一個字單元的物理地址是參考答案為:C

A.12CSBH

B.12B6BH

C.12C59H

D.12BFEH

[解析]末字與首字相隔(128—1=)127個字,且每個字占用2個字節(jié),因此末字單元

的物理地址應為:

首字單元的物理地址+(128-1)x2

即12ABHX10H+00ABH+(128-1)x2=12C59H?

4.在下列指令的表示中,不正確的是參考答案為:C

A.MOVAL,[BX+SI]

B.JMPSHORTDONI

C.DEC[BX]

D.MULCL

[解析]當只有一個存儲器操作數(shù)時,這個操作數(shù)的類型不明確,例如選項C中的[BX],

沒有明確的說明訪問該存儲單元的類型,此時存儲器操作數(shù)就必須需用類型說明,如

DECBYTEPTR[BX]或DECWORDPTR[BX]

但是在題目的選項C中,沒有指出存儲器操作數(shù)類型,所以該指令是不正確的;

而其它選項中的指令均是正確的。

5.在進行二重循環(huán)程序設計時,下列描述正確的是參考答案為:A

A.外循環(huán)初值應置外循環(huán)之外;內循環(huán)初值應置內循環(huán)之外,外循環(huán)之內

B.外循環(huán)初值應置外循環(huán)之內;內循環(huán)初值應置內循環(huán)之內

C.內、外循環(huán)初值都應置外循環(huán)之外

D.內、外循環(huán)初值都應置內循環(huán)之外,外循環(huán)之內

[解析]循環(huán)參數(shù)置初值,應在進入循環(huán)以前給出。

6.條件轉移指令JNE的測試條件為參考答案為:A

A.ZF=0

B.CF=0

C.ZF=1

D.CF=1

[解析]略。

7.8086CPU在基址加變址的尋址方式中,變址寄存器可以為參考答案為:D

A.BX或CX

B.CX或SI

C.DX或SI

D.SI或DI

[解析]略

8.已知BX=2000H,SI=1234H,則旨令MOVAX,[BX+SI+2]的源操作在()中。參

考答案為:A

A.數(shù)據(jù)段中偏移量為3236H的字節(jié)

B.附加段中偏移量為3234H的字節(jié)

C.數(shù)據(jù)段中偏移量為3234H的字節(jié)

D.附加段中偏移量為3236H的字節(jié)

[解析]指令中的源操作數(shù)的尋址方式是相對基址變址尋址,且由于其中的基址寄存器采

用的是BX,所以源操作數(shù)是在數(shù)據(jù)段中,其偏移量為:

BX+SI+2=2000H+1234H+2=3236H

9.執(zhí)行如下程序:

MOVAX,0

MOVBX,1

MOVCX,100

A:ADDAX,BX

INCBX

LOOPA

HLT

執(zhí)行后(BX)=參考答案為:C

A.99

B.100

C.101

D.102

[解析|1)在進入循環(huán)之前,有三條指令分別初始化寄存器:AX為0、BX為1、CX為

100;

2)由于循環(huán)的控制部分采用的是LOOP指令,該指令有使CX減1,并判斷其是

否為0的功能,所以可知該循環(huán)的執(zhí)行次數(shù)為100次;

3)循環(huán)體的主要功能是每次循環(huán)使AX中的內容累加BX的內容,并使BX的內

容加1。

4)直到最后一次(即第100次)循環(huán)時,加到AX中的BX的內容為100,且使

BX加1,即變?yōu)?01后退出循環(huán)體。所以當執(zhí)行完該段程序后,BX的內容為101。

5)該段程序的功能是(AX)=1+2++100=5050

10.上題的程序執(zhí)行后(AX)=參考答案為:B

A.5000

B.5050

C.5100

D.5150

[解析]請參看上題中的分析。

正確答案:Bo

11.對于下列程序段:

AGAIN:MOVAL,[SI]

MOVES:[DI],AL

INCSI

INCDI

LOOPAGAIN

也可用指令完成同樣的功能。參考答案為:A

A.REPMOVSB

B.REPLODSB

C.REPSTOSB

D.REPESCASB

[解析]該段程序的功能是將SI所指向的數(shù)據(jù)段中的數(shù)據(jù)順序傳送給DI所指向的附加段

的一段數(shù)據(jù)區(qū)中,并且每次傳送一個字節(jié),即實現(xiàn)了字節(jié)串傳送的功能,所以也可以使用

REPMOVSB指令來完成同樣的功能。

12.下面指令序列執(zhí)行后完成的運算,正確的算術表達式應是

MOVAL,BYTEPTRX

SHLAL,1

DECAL

MOVBYTEPTRY,AL參考答案為:D

A.y=x2+1

B.x=y2+l

C.x=y2-l

D.y=x2-1

[解析]該段程序的第一條指令的功能是將X傳送給AL;

第二條指令的功能是將AL的內容左移1位,即使得AL的內容擴大2倍;

第三條指令的功能是使AL的內容減1:

第四條指令的功能是將AL傳送給Y;

綜上所述該程序完成的運算是Y=2X-Io

13.在一段匯編程序中多次調用另一段程序,用宏指令比用子程序實現(xiàn)起來。參

考答案為:B

A.占內存空間小,但速度慢

B.占內存空間大,但速度快

C.占內存空間相同,速度快

D.占內存空間相同,速度慢

[解析J1)宏指令簡化程序的書寫,不節(jié)省程序存儲空間,但執(zhí)行時間比子程序短。

2)子程序簡化程序的書寫,也節(jié)省程序的存儲空間,但執(zhí)行時間比宏指令長。

14.在程序執(zhí)行過程中,IP寄存器中始終保存的是參考答案為:B

A.上一條指令的首地址

B.下一條指令的首地址

C.正在執(zhí)行指令的首地址

D.需計算有效地址后才能確定地址

[解析]在程序運行過程中,它始終指向下一條指令的首地址,它與CS代碼段寄存器聯(lián)

合確定下一條指令的物理地址。

15.PSW寄存器中共有位條件狀態(tài)位,有位控制狀態(tài)位。參考答

案為:A

A.6、3

B.3、6

C.8、4

D.4、8

[解析]PSW有6位條件狀態(tài)位:AF、CF、ZF、PF、SF、OF;

PSW有3位控制狀態(tài)位:IF、TF>DF

16.下列指令執(zhí)行時出錯的是參考答案為:A

A.ADDBUF1,BUF2

B.JMPDWORDPTRDAT|BX]

C.MOVAX,[BX+DI]NUM

D.TESTAL,08H

[解析]ADD指令的兩個操作數(shù)不能同時是存儲器操作數(shù),所以選項A中的指令是錯誤

的。

17.已知(AX)=1234H,執(zhí)行下述三條指令后,(AX)=參考答案為:D

MOVBX,AX

NEGBX

ADDAX,BX

A.1234H

B.OEDCCH

C.6DCCH

D.0000H

[解析]第一條指令的功能是將AX一BX,即BX中的內容為1234H;

第二條指令的功能是對BX求補,即BX中的內容變?yōu)橐?234H;

第三條指令的功能是AX+BX—AX,即1234H+(-1234H)=gAX;

所以執(zhí)行三條指令后,AX的內容為0。

18.在下列指令中,指令的執(zhí)行會影響條件碼中的CF位。參考答案為:D

A.JMPNEXT

B.JCNEXT

C.INCBX

D.SHLAX,1

[解析]JMP、JC指令不任何影響狀態(tài)標志位;

INC指令執(zhí)行結果除不影響CF外,其余狀態(tài)標志位(AF、OF、PF、SF、ZF)都受

影響。

SHL指令使CF=O,OF=O,影響ZF、SF、PF標志位,AF無定義。

19.串指令中的目的操作數(shù)地址是由____提供。參考答案為:C

A.SS:[BP]

B.DS:[SI]

C.ES:[DI]

D.CS:[IP]

[解析]略

20.將DX的內容除以2,正確的指令是參考答案為:C

A.DIV2

B.DIVDX,2

C.SARDX,1

D.SHLDX,1

[解析]選項A中的的指令執(zhí)行的操作是:AX/2;

選項B中的的指令書寫格式不正確;

選項C中的的指令執(zhí)行的操作是:將DX的內容右移一位,將使DX的內容縮小為

原先的1/2,即將DX的內容除以2;

選項D中的的指令執(zhí)行的操作是:將DX的內容左移一位,將使DX的內容擴大為原先

的2倍,即將DX的內容乘以2。簡答題(每小題4分,共12分)

1.假定(DX)=101110018,(CL)=0.3,(CF)=1,試確定下列各條指令單獨執(zhí)行

后,DX中的值。

(1)SHRDX,1

(2)RCRDL,1

(3)RCLDX,CL

答:⑴005CH⑵00DCH⑶05CCH

I解析](1)指令:SHRDX,1使DX的內容向右移動了一位,因此DX的內容變?yōu)?/p>

OOOO'OOOO'OlOI'llOOB,即005cH。

(2)指令:RCRDL,1使DL的內容向右循環(huán)帶進位移動了一位,DH的內容不變,

因此DX的內容變?yōu)镺OOO'OOOO'llOrilOOB,即OODCHo

(3)指令:RCLDX,CL使DX的內容向左循環(huán)帶進位移動了3位,因此DX的內容

變?yōu)镺OOO'OIO'UOO'UOOB,即05CCH。

2.寫出完成下述功能的程序段:

(1)傳送25H到AL寄存器

(2)將AL的內容乘以2

(3)傳送15H到BL寄存器

(4)AL的內容乘以BL的內容

并請寫出最后(AX)=?

答:(l)MOVAL,25H

(2)SHLAL,1

(3)MOVBL,15H

(4)MULBL

最后,(AX)=612H=1554

[解析]1)將AL的內容左移1位,將使它的內容擴大2倍,即使AL的內容乘以2。

2)最后,AX的內容應為25H*2*15H=612H=1554

3.寫一程序段,求雙字長數(shù)DX:bX的相反數(shù)。

答:NEGDX

NEGAX

SBBDX,0

[解析]求雙字長數(shù)DX:AX相反數(shù),即對其求補,所以應實現(xiàn)的操作是:

(DX:AX)-0-(DX:AX)

即0:0

-)DX:AX

將上面的算式分解后,即為對DX求補,對AX求補,并從DX中減去將AX求補

時產(chǎn)生的借位。所以相應的指令就是:

NEGDX

NEGAX

SBBDX,0

三,程序分析題(每小題6分,共36分)

1.現(xiàn)有如下程序段:

DATASEGMENTDA3EQU1234H

ORG0020HDA4EQU$-DA2

DAIDW12H,23HDA5DB31H,32H

DA2DB11H,21HDATAENDS

請回答:(1)該程序段已占有的存儲字節(jié)數(shù)是多少?

(2)符號名DA4的值是多少?符號名DA5的值是多少?

答:(1)該程序段已占有的存儲字節(jié)數(shù)是8個字節(jié)。

(2)符號名DA4的值為2,符號名DA5的值是0026H。

[解析]1)偽指令ORG0020H,設置存儲單元起始偏移地址為0020H;

2)符號名DA1的值(即所對應存儲單元的偏移地址)是0020H,該數(shù)據(jù)區(qū)的類型

為字,有2個字數(shù)據(jù),所以共占用4個字節(jié);

3)符號名DA2的值(即所對應存儲單元的偏移地址)是0024H,該數(shù)據(jù)區(qū)的類型

為字節(jié),有2個字節(jié)數(shù)據(jù),所以共占用2個字節(jié);

4)經(jīng)EQU定義的符號名DA3、DA4不占用存儲空間,“$”用來表示當前地址計

數(shù)器的值(0026H),可它們的值分別為DA3=1234H,DA4=2。

5)符號名DA5的值(即所對應存儲單元的偏移地址)是0026H,該數(shù)據(jù)區(qū)的類型

為字節(jié),有2個字節(jié)數(shù)據(jù),所以共占用2個字節(jié);

6)綜上所述,該程序段共占有的存儲字節(jié)數(shù)8個字節(jié)。

2.執(zhí)行下列程序段后,回答問題。

ORG1221HMOVBX,OFFSETNUM

NUMDW12HM0VCL,BYTEPTRNUM+1

...MOVCH,TYPENUM

MOVAX,NUMHLT

請問:(AX)=>(BX)=,(CX)=?

答:(AX)=0012H(BX)=1221H(CX)=0200H

I解析]1)指令MOVAX,NUM的功能是將NUM單元的字內容12H傳送給AX,

使得(AX)=0012H;

2)指令MOVBX,OFFSETNUM的功能是將NUM單元的偏移地址1221H傳送給

BX,使得(BX)=1221H;

3)指令MOVCL,BYTEPTRNUM+1的功能是將NUM+1(1222H)單元的字節(jié)內容

(即NUM字單元的高字節(jié))00H傳送給CL,使得(CL)=00H;

4WMOVCL,TYTENUM的功能是將NUM字單元的類型字節(jié)數(shù)2傳送給CH,

使得(CH)=02H;

5)綜合第4和第5點,可知CX寄存器的內容為0200H。

3.閱讀如下程序:

ADRRDBXXH,XXH,,XXHCMPADRR|BX|,0

NUMEQU$-ADRRLOOPZDON

RETTDB?JNZNEXT

...MOVBL,OFFH

MOVCX,NUMNEXT:MOVRETT,BL

MOVBX,-1HLT

DON:INCBX

請問:(1)該程序完成的功能是什么?

(2)程序執(zhí)行后指出RETT字節(jié)單元中的內容是什么?

答:(1)在以ADRR為起始地址的數(shù)組中,查找第一個非0數(shù)據(jù)。

(2)若找到則將第一個非0數(shù)據(jù)在數(shù)組中的偏移量送入RETT單元中;若無非0數(shù)

據(jù),則將OFFH送入RETT單元中。

I解析]1)程序的前3條指令,用于定義數(shù)據(jù):

以ADRR為起始地址的數(shù)組;

NUM的值為ADRR數(shù)組的數(shù)據(jù)個數(shù);

RETT是一個空的字節(jié)單元

2)該程序的主體是個循環(huán),該循環(huán)的主要功能是在數(shù)組ADRR中第一個非0數(shù)據(jù)。

如果是由于找到,則將第一個非0數(shù)據(jù)在數(shù)組中的偏移量送入RETT單元中;若沒找到非0

數(shù)據(jù),則將OFFH送入RETT單元中。

4.現(xiàn)有一子程序:

SUB1PROCPLUS:TESTBL,80H

TESTAL,80HJEEXITO

JEPLUSXCHANGE:XCHGAL,BL

TESTBL,80HEXITO:RET

JNEEXITOSUB1ENDP

JMPXCHANGE

試回答:(1)子程序的功能是什么?

(2)若調用子程序前AL=9AH,BL=77H,則返回主程序時,AL=,

BL=°

答:⑴子程序的功能是判別AL和BL中的數(shù)是否為異號數(shù),當為異號時

交換,否則不變。

(2)AL=77H,BL=9AH

[解析|1)數(shù)據(jù)是以二進制的形式存儲在計算機中的。數(shù)據(jù)對應的二進制數(shù)的最高

位是數(shù)據(jù)的符號位:若為0表示該數(shù)為正數(shù),若為1表示該數(shù)為負數(shù);

2)TESTAL,80H和TESTBL,80H指令是在測試AL和BL的最高位(即符號位)

的狀態(tài)是1還是0。

3)若兩個數(shù)的最高位(即符號位)的狀態(tài)不同的時候(即兩數(shù)為異號),則執(zhí)行

XCHANGE標號所對應語句,即交換AL和BL中的內容。

4)否則若兩個數(shù)的最高位(即符號位)的狀態(tài)相同的時候(即兩數(shù)為同號),則執(zhí)

行EXIT0標號所對應語句,程序結束,即AL和BL中的內容不被。

5)所以第二問中,AL=9AH,BL=77H:AL中的數(shù)據(jù)的最高位為1,BL中的數(shù)據(jù)的

最高位為0,即兩個數(shù)為異號,所以要交換AL和BL中的內容,即AL=77H,BL=9AH。

5.閱讀程序段:

BLOCKDB20H,1FH,08H,81H,OFFH...LOP1:CMPAL,[SI+1]

RESULTDB?JNGNEXT

...MOVAL,[SI+1]

START:LEASI,BLOCKNEXT:INCSI

MOVCX,[SI]LOOPLOP1

INCSIMOVRESULT,AL

MOVAL,[SI]HLT

>J:(1)該程序完成的功能是什么?

(2)該程序循環(huán)的次數(shù)是多少?

答:(1)該程序完成的功能是從20H(32)個有符號數(shù)中找出最小的數(shù)送入

RESULT單元中。

(2)該程序的循環(huán)次數(shù)是1FH(31)。

[解析]1)指令LEASI,BLOCK的功能是使SI指向了BLOCK數(shù)組的首單元;

2注盼MOVCX,|S1|的功能是將SI指向單元的內容20H傳送給CX,即(CX)=20H;

其后又有指令DECCX,使得CX的內容變?yōu)?FH;再看循環(huán)體的控制部分采用的指令是

LOOP,可知,該循環(huán)的執(zhí)行次數(shù)為1FH次;

3)循環(huán)體的主要功能是將AL中的內容與[SI]所指向數(shù)組的每一個數(shù)據(jù)進行比較,

從數(shù)組中選出最小數(shù)保存在AL中。

4)由于比較后采用的轉移指令是JNG,所以該程序處理的顯然是一組有符號的數(shù)

據(jù)。

6.閱讀如下程序段,回答所提出的問題,假定XI,X2,XN為無符號數(shù)。

ORG100H

BLOKDWX1,X2.XN

COUNTEQU($-BLOLOK)/2

RESULTDWCOUNT,?

LEABX,BLOK-2

MOVCX,RESULT

XORAX,AX

GOON:ADDBX,2

CMPAX,[BX]

JAENEXT

MOVAX,[BX]

NEXT:LOOPGOON

MOVRESULT+2,AX

程序段執(zhí)行完,回答下述問題

RESUET+2字存儲單元的內容=

BX=______

程序循環(huán)次數(shù)=______

答:RESULT+2字存儲單元的內容是MAX(XI,X2,...XN)

BX=100H+2x(COUNT-l)

程序循環(huán)次數(shù)=COUNT

[解析]1)該程序段的開始4條指令定義了以下數(shù)據(jù):

以BLOK為起始地址的字數(shù)組,該數(shù)組首單元的偏移地址(即BLOK)為100H;

COUNT的值為BLOK字數(shù)組的數(shù)據(jù)個數(shù);

RESULT存儲區(qū)的第一個字的內容為COUNT,即BLOK字數(shù)組的數(shù)據(jù)個數(shù);第二

個字的內容為空。

2)循環(huán)體的主要功能是從BLOK字數(shù)組中找出最大數(shù)送入RESULT的第二個字單

元中;

3)循環(huán)次數(shù)為數(shù)組中數(shù)據(jù)的個數(shù),即COUNT個。

4)當循環(huán)結束后,BX中將存放最后一個字數(shù)據(jù)的偏移地址:首字偏移地址+末

字與首字的相隔的字節(jié)數(shù),即100H+2x(COUNT-l)。四,程序填空題(注意:下列各小題

中,每空只能填一條指令!每小題6分,共12分)

1.在表TABLE處存放著N個無符號字節(jié)數(shù),求表中前10個字節(jié)數(shù)的總和并保存在

AX寄存器中。如果總和值超過AX寄存器的容量,則置AX寄存器內容不變。請在程序中

的空格處填入適當指令使其完整。

LEABX,TABLE(2)

MOVCX,10JCENDO

MOVSUM,AXDON:INCBX

MEXT:(1)(3)

ADCAH,0ENDO:HLT

JNCDON

答:(l)ADDAL,[BX]

(2)MOVAX,SUM

(3)LOOPNEXT

I解析]1)程序的前三條指令的功能分別是:

將表TABLE的首址傳送給BX;

將循環(huán)次數(shù)傳送給計數(shù)器CX;

將AX的原值保存在SUM單元中;

以上指令實現(xiàn)了設置循環(huán)初始參數(shù)的功能。

2)標號NEXT所對應的第一個空白處就是循環(huán)體的第一條指令。根據(jù)題目的要求

——求表中前10個字節(jié)數(shù)的總和,可知循環(huán)每次應實現(xiàn)將表TABLE中的數(shù)據(jù)按字節(jié)加法

的方式進行累加到AL中,并且將字節(jié)加法產(chǎn)生的進位加到AH中。所以第一個空白處應填

入指令:

ADDAL,[BX]

3)程序的第五條指令實現(xiàn)的是判斷求得的和是否超過AX寄存器的容量。

4)如果有進位(即已超過AX寄存器的容量),則執(zhí)行第二個空白處的指令,根據(jù)

題目當出現(xiàn)此種情況時,使AX內容不變,即恢復其原值,因此第二個空白處應填入指令:

MOVAX,SUMo

5)如果沒有進位(即未超過AX寄存器的容量),則轉DON。程序將使BX的內

容加1,即使其指向下一個表中的字節(jié)數(shù)據(jù)。接下來就應該將計數(shù)器CX減1,并判斷是否

繼續(xù)下一次循環(huán)。因此,第三個空白處應填入指令:LOOPNEXT。

2.BEG為起始地址的存儲區(qū)域中存放有100個字節(jié)數(shù)據(jù),現(xiàn)將其首、尾顛倒過來,重

新排放這100個字節(jié)數(shù)據(jù)。請在程序中的空格處填入適當?shù)闹噶钍蛊渫暾?/p>

MOVCX,32H

LEASI,BEG

MOVDI,SI

(1)

DON:MOVAL,[SI]

(2)

MOV[SI],AL

(3)

DECDI

LOOPDON

溫馨提示

  • 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

提交評論