IBM-PC匯編語(yǔ)言程序設(shè)計(jì)-7_第1頁(yè)
IBM-PC匯編語(yǔ)言程序設(shè)計(jì)-7_第2頁(yè)
IBM-PC匯編語(yǔ)言程序設(shè)計(jì)-7_第3頁(yè)
IBM-PC匯編語(yǔ)言程序設(shè)計(jì)-7_第4頁(yè)
IBM-PC匯編語(yǔ)言程序設(shè)計(jì)-7_第5頁(yè)
已閱讀5頁(yè),還剩53頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

ch71第7章高級(jí)匯編語(yǔ)言技術(shù)ch727.1宏匯編

為什么使用宏匯編?

在編制匯編語(yǔ)言程序過程中,有些功能程序段需要多次重復(fù)使用,所不同的只是參與操作的操作數(shù)。為了減少編程的工作量,通常采用兩種方法:

①將程序段編寫為獨(dú)立的子程序②將程序段定義成宏

大家想一下子程序有什么優(yōu)缺點(diǎn)?什么是宏?

宏(或宏指令)是源程序中一段有獨(dú)立功能的程序代碼,只需定義一次,可以多次調(diào)用。第7章ch731.宏定義用偽指令MACRO/ENDM實(shí)現(xiàn),其語(yǔ)句格式是:宏指令名

MACRO[形參1,形參2,…,形參n]┇

宏定義體

ENDM

7.1.1宏定義、宏調(diào)用和宏展開

說明

宏指令名是該宏定義的名稱。調(diào)用時(shí)使用宏指令名對(duì)該宏定義進(jìn)行調(diào)用。

宏指令符合標(biāo)識(shí)符規(guī)定。宏指令名不能重復(fù),并且指令的第一個(gè)字符必須是字母。但可以和源程序中的其他變量、標(biāo)號(hào)、指令、偽指令名相同,在這種情況下宏指令的優(yōu)先級(jí)最高。

MACRO必須與ENDM成對(duì)出現(xiàn)。MACRO標(biāo)識(shí)宏定義的開始。

形式參數(shù)(即形參,也稱啞元、虛參)是可選項(xiàng),宏可以不帶參數(shù);帶參數(shù)時(shí),多個(gè)形參間用逗號(hào)分隔。第7章2.宏調(diào)用宏調(diào)用的格式為:

宏指令名

[實(shí)參1,實(shí)參2,…,實(shí)參n]

宏展開

宏展開就是宏定義體取代源程序中的宏指令名,而且用實(shí)元取代啞元。匯編源程序時(shí),宏匯編程序?qū)?duì)每條宏指令語(yǔ)句進(jìn)行宏展開,用實(shí)參替代相應(yīng)的形參,對(duì)宏體目標(biāo)代碼作相應(yīng)改變。

說明:實(shí)參可以是常數(shù)、寄存器、存儲(chǔ)單元、地址表達(dá)式、指令的操作碼或者是操作碼的一部分。第7章CallQCallQCallQQ:RET子程序QQA,BQC,DQE,FQMACROX,YENDM主程序主程序主程序展開子程序調(diào)用和宏調(diào)用的工作方式第7章

用一個(gè)例子來說明宏定義、宏調(diào)用和宏展開的情況例:將兩個(gè)16位數(shù)相加,結(jié)果存入16位RESULT單元中。;對(duì)兩數(shù)相加功能進(jìn)行宏定義第7章

BCDADDMACROVARX,VARY,RESULT

MOVAL,VARXADDAL,VARYMOVRESULT,ALMOVAL,VARX+1ADCAL,VARY+1MOVRESULT+1,AL

ENDMDATASEGMENTA1DW1234HA2DW5678HA3DW?

B1DW1357HB2DW2468HB3DW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:PUSHDSMOVAX,0PUSHAX

第7章

MOVAX,DATAMOVDS,AX

BCDADDA1,A2,A3;宏調(diào)用

BCDADDB1,B2,B3

;再次宏調(diào)用

RETCODEENDSENDSTART經(jīng)宏展開后:

PUSHDSMOVAX,0

PUSHAXMOVAX,DATAMOVDS,AX

MOVAL,A1

1ADDAL,A21MOVA3,AL1MOVAL,A1+11ADCAL,A2+1MOVA3+1,AL1MOVAL,B11ADDAL,B21MOVB3,AL1MOVAL,B1+1ADCAL,B2+1MOVB3+1,AL

宏匯編程序在所展開的指令前標(biāo)識(shí)以‘1’號(hào)以示區(qū)別。較早的版本用‘+’第7章7.1.2宏定義中的參數(shù):1宏定義可以無(wú)參數(shù)

savereg

macropushaxpushbxpushcxpushsi

endm2參數(shù)可以是操作碼

amacro p1,p2,p3mov ax,p1

p2

p3endm調(diào)用:

aword_var,inc,ax

展開:

mov ax,word_var1inc

ax第7章ch7113參數(shù)可以是操作碼或操作數(shù)的一部分,但在宏定義體中必須使用分隔符&,即&是操作符,在宏定義中可作為形參的前綴,展開時(shí)把&前后的兩個(gè)符號(hào)連接起來,形成操作碼、操作數(shù)或字符串。&只能出現(xiàn)在宏定義中。例宏定義:SHIFTMARCOX,Y,ZMOVCL,XS&ZY,CLENDM形參Z是操作碼的一部分。宏匯編中規(guī)定,若宏定義體中的形參沒有適當(dāng)?shù)姆指舴?,就不被?dāng)作形參,調(diào)用時(shí)也不會(huì)被實(shí)參代替。上例被調(diào)用時(shí):

SHIFT4,CL,AL

SHIFT6,BX,AR則宏展開時(shí)的目標(biāo)代碼:1MOVCL,41SALAL,CL

1MOVCL,61SARBX,CLch712例

fomacrop1jmpta&p1endm

宏調(diào)用:foword_var宏展開:1Jmptaword_var如果這樣:

fomacrop1jmptap1endm

宏調(diào)用:foword_var宏展開:1Jmp

?ch7134偽操作%不能出現(xiàn)在形參的前面,通常用在宏調(diào)用中,將跟在它后面的表達(dá)式的值轉(zhuǎn)換成以當(dāng)前基數(shù)下的數(shù),在宏展開時(shí),用轉(zhuǎn)換后的值代替形參。例宏定義:MAKERMACROCOUNT,STRMAKER&COUNTDBSTR

ENDMERRMAMACROTEXTCNTR=CNTR+1

MAKER%CNTR,TEXT

ENDM經(jīng)宏調(diào)用:

ch714

CNTR=0ERRMA‘SYNTAXERROR’┇ERRMA‘INVALIDOPERAND’┇宏展開:┇

2MAKER1DB‘SYNTAXERROR’┇2MAKER2DB‘INVALIDOPERAND’┇ch7157.1.3偽指令LOCAL

宏定義體內(nèi)可以使用標(biāo)號(hào)。對(duì)于使用了標(biāo)號(hào)的宏定義,若多次調(diào)用,勢(shì)必產(chǎn)生標(biāo)號(hào)的多重定義,匯編時(shí)出錯(cuò)。解決這一問題可使用偽指令LOCAL,其一般格式為:

LOCAL局部標(biāo)號(hào)1,局部標(biāo)號(hào)2,…

宏匯編程序?qū)闃?biāo)號(hào)分別生成格式為“??XXXX”的唯一的符號(hào)以代替各局部標(biāo)號(hào)。XXXX代表四位十六進(jìn)制數(shù)0000~FFFF。這樣,在匯編源程序中,避免了多次宏調(diào)用時(shí)生成的標(biāo)號(hào)重復(fù)。注意:LOCAL偽操作只能用在宏定義體內(nèi),而且必須是MACRO偽操作后的第一個(gè)語(yǔ)句,在MACRO與LOCAL不能出現(xiàn)注釋和分號(hào)標(biāo)志。

ch716例定義取絕對(duì)值的宏指令如下:

ABSMACROOPS

LOCALPLUSCMPOPS,0JGEPLUSNEGOPSPLUS:MOVAX,OPS

ENDM宏調(diào)用:

ABSCXMOVBX,AX

ABSDX宏展開后的指令為:1

CMPCX,01JGE

??00001NEGCX1??0000:MOVAX,CXMOVBX,AX1CMPDX,01JGE

??00011NEGDX1??0001:

MOVAX,DX7.1.4在宏定義內(nèi)使用宏宏定義中允許使用宏調(diào)用,限制條件是:必須先定義

difmacrox,ymovax,xsubax,y

endm

difsqrmacroopr1,opr2,result

pushdxpushax

difopr1,opr2movresult,axpopaxpopdx

endm

difsqrvar1,var2,var3調(diào)用

宏展開1pushdx1pushax2movax,var12subax,var21movvar3,ax1popax1popdx第7章7.1.5列表偽操作Masm提供了.xall,.lall,sall來控制匯編清單中宏展開的列出情況.xall

為默認(rèn)情況,它指示清單中只列出產(chǎn)生目標(biāo) 代碼的宏展開;.lall

列出包括注釋在內(nèi)的所有宏展開;.sall則不列出任何信息;第7章

如果程序中定義了很多宏,可以把這些宏組合起來建立一個(gè)獨(dú)立的文件,這個(gè)只包含若干個(gè)宏定義的文件稱為宏庫(kù)。擴(kuò)展名是mac或inc來表示。當(dāng)需要使用宏庫(kù)中的某些宏定義時(shí),只需要在該程序的開始用INCLUDE語(yǔ)句說明

INCLUDEC:\MACRO.MAC第7章7.1.6宏庫(kù)的建立與調(diào)用

宏匯編程序提供了偽操作PURGE,用來在適當(dāng)?shù)臅r(shí)候取消宏定義。PURGE偽指令的一般格式是:

PURGE宏定義名[,…]

方括號(hào)表示PURGE可以取消多個(gè)宏定義,宏名之間用逗號(hào)隔開。如宏定義:

SUB

MACROVARX,VARY,RESULT┇

ENDM宏調(diào)用:SUBX,Y,Z

PURGESUB

第7章7.1.7偽指令PURGE7.2重復(fù)匯編

其一般格式為:

REPT表達(dá)式

┇(重復(fù)塊)

ENDM

其中,REPT和ENDM必須成對(duì)出現(xiàn),兩者間的重復(fù)塊是要重復(fù)匯編的部分。表達(dá)式的值用來表示重復(fù)塊的重復(fù)匯編次數(shù)。重復(fù)偽操作不一定要用在宏定義體內(nèi)。

7.2.1定重復(fù)偽指令REPT

有時(shí)匯編語(yǔ)言程序要連續(xù)地重復(fù)完成相同或者幾乎完全相同的一組代碼,這時(shí)可用重復(fù)匯編。第7章例有下列語(yǔ)句:

NUM=0REPT10

NUM=NUM+1DBNUMENDM

匯編后,將數(shù)據(jù)1,2,3,…,10分配給十個(gè)連續(xù)的字節(jié)單元:1DB11DB21DB3┇1DB10第7章7.2.2不定重復(fù)偽指令I(lǐng)RP

其一般格式為:

IRP形參,〈參數(shù)1,參數(shù)2,…〉┇(重復(fù)塊)

ENDM

此偽指令重復(fù)執(zhí)行重復(fù)塊中所包含的語(yǔ)句,重復(fù)的次數(shù)由參數(shù)表中的參數(shù)個(gè)數(shù)決定。重復(fù)匯編時(shí),依次用參數(shù)表中的參數(shù)取代形參,直到表中的參數(shù)用完為止。參數(shù)表中的參數(shù)必須用兩個(gè)三角號(hào)括起來,參數(shù)可以是常數(shù)、符號(hào)、字符串等,各參數(shù)間用逗號(hào)隔開。第7章ch724例多次將AX、BX、CX、DX寄存器內(nèi)容壓棧,宏定義如下:PUSHRMACROIRPREG,〈AX,BX,CX,DX〉

PUSHREGENDM

ENDM匯編后:1PUSHAX1PUSHBX1PUSHCX1PUSHDX

ch7257.2.3不定重復(fù)字符偽指令I(lǐng)RPC

其語(yǔ)句格式為:

IRPC形參,字符串(或〈字符串〉)┇(重復(fù)塊)

ENDM

此偽指令重復(fù)執(zhí)行重復(fù)塊中的語(yǔ)句,重復(fù)匯編的次數(shù)等于字符串中字符的個(gè)數(shù)。每次重復(fù)執(zhí)行時(shí),依次用字符串中的一個(gè)字符取代形參,直到字符串結(jié)束??梢奍RPC偽指令與IRP偽指令類似,只是IRPC用字符串(其三角括號(hào)可以有也可以無(wú))代替了IRP偽指令中的參數(shù)表。ch726例:Irpcx,01234567Dbx+1Endm匯編后:

Db11Db2┇1Db8

再如:可用IRPC實(shí)現(xiàn):PUSHRMACROIRPCREG,ABCD

PUSHREG&XENDMENDM同樣,匯編后也可得到:1PUSHAX1PUSHBX1PUSHCX1PUSHDXch7277.3條件匯編

匯編程序能根據(jù)條件把一段源程序包括在匯編語(yǔ)言程序內(nèi)的或排除在外,這里就用到條件偽操作。條件偽操作的一般格式是:Ifxxargument┇;自變量滿足條件匯編此塊[ELSE]┇;自變量不滿足條件匯編此塊

ENDIF

說明:匯編程序在對(duì)源程序匯編時(shí),要對(duì)源程序掃描二遍。第一遍建立符號(hào)表,第二遍才把匯編語(yǔ)言指令翻譯成機(jī)器語(yǔ)言指令。那么自變量必須在匯編程序第一遍掃視后就成為確定的數(shù)值。ch728IFexpression;匯編程序求出表達(dá)式的值,如此值不為0, 則滿足條件.IFEexpression;匯編程序求出表達(dá)式的值,如此值為0,則 滿足條件.例:宏指令MAX把三個(gè)變?cè)械淖畲笾捣旁贏X中,而且使變?cè)獢?shù)不同時(shí)產(chǎn)生不同的程序段。7.3.1ch729MAXMACROK,A,B,CLOCALNEXT,OUTMOVAX,AIFK-1IFK-2CMPC,AXJLENEXTMOVAX,CENDIFNEXT:CMPB,AXJLEOUTMOVAX,BENDIFOUT:ENDM宏調(diào)用:MOV1,PMOV2,P,QMOV3,P,Q宏展開:

MOV1,PMOVAX,P1??0001:

MAX2,P,Q1MOVAX,P1??0002:1CMPQ,AXJLE??00031MOVAX,Q1??0003:

MAX3,P,Q,R1MOVAX,P1CMPR,AX1JLE??0004MOVAX,R1??0004:CMPQ,AX1JLE??0005MOVAX,Q1??0005ch730BRANCHMACROXIF($-X)LT128JMPSHORTXELSEJMPNEARPTRXENDIFENDMLAB:MOVAX,BXBRANCHLAB

JMPSHORTLAB該宏要完成什么功能。

宏定義允許遞歸調(diào)用

powermacrox,nsalx,1count=count+1ifcount-npowerx,nendifEndm宏調(diào)用:

count=0powerax,3宏展開:Salax,1Salax,1Salax,1ch731IF1;在匯編程序的第一遍掃視期間滿足條件IF2;在匯編程序的第二遍掃視期間滿足條件

說明:匯編程序在對(duì)包括宏庫(kù)的源程序匯編時(shí)也分兩次掃描,第一次將宏庫(kù)及程序中的宏定義登入宏定義表,第二次掃描時(shí)進(jìn)行宏擴(kuò)展,形成列表文件。大家看書上268頁(yè)的例7.24,然后和259頁(yè)的例7.12比較看有什么不同?

IFB<argument>;如自變量為空,則滿足條件

IFNB<argument>;如自變量不為空,則滿足條件注意:自變量用“<>”括起來7.3.27.3.3ch732例:宏指令GOTOL,X,REL,Y可以根據(jù)不同情況產(chǎn)生無(wú)條件轉(zhuǎn)移指令或比較和條件轉(zhuǎn)移指令。宏定義:

GOTOMACROL,X,REL,YIFB<REL>JMPLELSEMOVAX,XCMPAX,YJ&RELLENDIFENDM宏調(diào)用:

GOTOLOOP1,SUM,NZ,15

GOTOEXIT

宏展開:

┇1MOVAX,SUM1CMPAX,15

JNZLOOP1

┇1JMPEXITch733DISPMACROCHARIFB<CHAR> MOVDL,’‘ELSE MOVDL,CHARENDIF MOVAH,02H INT21HENDM宏調(diào)用:

DISP‘A’DISP下面程序要完成什么樣的功能?ch734IFDEFsymbol

;如符號(hào)已在程序中定義,或者用extrn說明 該符號(hào)是在外部定義的,則滿足條件。IFNDEFsymbol

;如符號(hào)未定義或未通過EXTRN說明為外 部符號(hào)則滿足條件。7.3.4ch735

dividemacrodevidend,divisor,quotientlocalcmop,outcntr=0ifndefdividendcntr=1endififndefdivisorcntr=1endififndefquotientcntr=1endififcntr

exitmendif

movax,dividendmovbx,divisorsubcx,cxcomp:cmpax,bxjboutsubax,bxjnccx

Jmpcompout:movquotient,cxendmch736MOVDIFMACROXIFIDN<&X>,<‘B’>

REPMOVSBELSE

REPMOVSWENDIFENDM宏調(diào)用:MOVDIF‘B’宏展開:1REPMOVSBIFIDN<arg-1>,<arg-2>;如果字符串<arg-1>和字符串<arg-2>相 同,則滿足條件。

IFDIF<arg-1>,<arg-2>;如果字符串<arg-1>和字符串<arg-2>不相同,則滿足條件。在格式中,兩個(gè)參數(shù)必須用尖括號(hào)括起7.3.5ch737例編寫一個(gè)可用功能調(diào)用輸入字符的宏定義。READCHMACRO

char MOVAH,1H INT21H;接受一個(gè)字符,并存入AL中IFNB<char>;若參數(shù)char有實(shí)參與之對(duì)應(yīng)

IFDIF

<char>,<AL>;若參數(shù)char≠AL,則把所輸入字符保存到實(shí)參中

MOV

char,ALENDIFENDIFENDMch7381.在DEBUG上機(jī)調(diào)試程序時(shí),存儲(chǔ)器地址表示為12FA:015F,它的物理地址是()。

a.12FAH

b.1305FH

c.130FFH

d.015FH2.IP指令指針寄存器是屬于()。

a.通用寄存器

b.段寄存器

c.變址寄存器

d.控制寄存器3.下面有語(yǔ)法錯(cuò)誤的指令是()。

a.ADDAL,AH

b.ADD[BX+3],AL

c.ADDAH,[DI]

d.ADD[BP+2],DA1(DA1是變量名)4.完成對(duì)DX的有符號(hào)數(shù)除以2的指令是()。

a.IDIV2

b.SARDX,1

c.RORDX,1

d.RCRDX,15.使進(jìn)位位置1的指令是()。

a.CLC

b.CMC

c.STC

d.NOPch7396.設(shè)AL=-15,要使AL=15應(yīng)執(zhí)行的指令是()。

a.NEGAL

b.NOTAL

c.INCAL

d.DECAL7.在條件轉(zhuǎn)移指令中,結(jié)果為負(fù)數(shù)則轉(zhuǎn)移的指令是()。

a.JNS

b.JX

c.JS

d.JP8.下面的XCHG指令中,語(yǔ)法正確的是()。

a.XCHGAL,DS

b.XCHGBL,[BX]

c.XCHGAL,0FH

d.XCHGBUF1,BUF29.一條指令中目的操作數(shù)不允許使用的尋址方式是()。

a.寄存器尋址

b.立即數(shù)尋址

c.變址尋址

d.寄存器間接尋址10.設(shè)SP=1FFEH,執(zhí)行下列指令后,SP寄存器的值是()。

POPF

PUSHAX

a..2000H

b.2002H

c.1FFCH

d.1FFEHch7401.[]下列標(biāo)號(hào)不合法的是:

A.MOVB.WANGC.F8D.AB32.[]語(yǔ)句DADADW‘AB’,‘CD’,‘E’,‘F’匯編后占用的存儲(chǔ)空間是:

A.4個(gè)字節(jié)

B.8個(gè)字節(jié)

C.6個(gè)字節(jié)

D.5個(gè)字節(jié)3.[]PSW中使用的標(biāo)志位以及其中的狀態(tài)標(biāo)志位、控制標(biāo)志位的位數(shù)分別是:

A.9,6,3B.9,8,1C.9,7,2D.16,9,74.[]指令A(yù)DDAX,[BX][DI]中源操作數(shù)的尋址方式是:

A.段內(nèi)寄存器間接尋址

B.段間寄存器間接尋址

C.基址加變址尋址

C.寄存器尋址5.[]在偽指令語(yǔ)句NUMBERDW1234H中的NUMBER 項(xiàng)稱為:

A.標(biāo)號(hào)

B.變量

C.偽操作符

D.數(shù)據(jù)

ch7416.[]在存儲(chǔ)器中保留待定的10個(gè)字節(jié)單元的偽指令語(yǔ)句是:

A.NUMBEQU10B.NUMBDW10DUP(?)

C.NUMBDB10D.NUMBDB2DUP(5DUP(?))7.[]把匯編語(yǔ)言源程序翻譯成目標(biāo)代碼的程序是:

A.編譯程序

B.解釋程序

C.匯編程序

D.連接程序8.[]下列指令中,不影響PSW的指令是:

A.MOVB.TESTC.SALD.CLD9.[]下列敘述不正確的是:

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

B.目的操作數(shù)不能是立即數(shù)和段寄存器。

C.不能在兩個(gè)存儲(chǔ)單元間直接傳送數(shù)據(jù)。

D.兩個(gè)段寄存器之間不能直接傳送數(shù)據(jù)。10.[]匯編語(yǔ)言在程序設(shè)計(jì)語(yǔ)言家族中屬于:

A.第一代語(yǔ)言

B.第二代語(yǔ)言

C.第三代語(yǔ)言

D.第四代語(yǔ)言

ch7421、設(shè)DS=8225H,DI=3942H,指令NEG

BYTE

PTR[DI]操作數(shù)的物理地址是(

)A、85B92HB、86192HC、BB690HD、12169H2、下列寄存器組中在段內(nèi)尋址時(shí)可以提供偏移地址的寄存器組是(

)A、AX,BX,CX,DXB、BX,BP,SI,DIC、SP,IP,BP,DXD、CS,DS,ES,SS3、循環(huán)指令LOOPNZ終止循環(huán)的條件是(

)。

A、CX=0,且Z=0B、CX=0,或Z=1C、CX≠0,且Z=0D、CX≠0,或Z=14、對(duì)寄存器AX的內(nèi)容乘以4的正確指令序列是(

)。

A、SHR

AX,1

SHR

AX,1B、SHL

AX,1

SHL,AX,1C、ROL

AX,1

ROL

AX,1D、RCR

AX,1

RCR

AX,15、保存字除法商的寄存器是(

)。

A、AXB、AHC、ALD、通用寄存器

ch7436、設(shè)DH=10H,執(zhí)行NEG

DH指令后,正確的結(jié)果是(

)。

A、DH=10H

C=1B、DH=0F0H

C=0C、DH=10H

C=0D、DH=0F0H

C=17、下列傳送指令中有語(yǔ)法錯(cuò)誤的是(

)。

A、MOV

CS,AXB、MOV

DS,AXC、MOV

SS,AXD、MOV

ES,AX8、下面指令執(zhí)行后,改變AL寄存器內(nèi)容的指令是(

)。

A、TEST

AL,02HB、OR

AL,ALC、CMP

AL,BLD、AND

AL,BL9、一條指令中目的操作數(shù)不允許使用的尋址方式是()A.寄存器尋址

B.立即數(shù)尋址

C.變址尋址

D.寄存器間接尋址10、執(zhí)行下面指令序列后,結(jié)果是(

)。

MOV

AL,82HCBWA、AX=0FF82HB、AX=8082HC、AX=0082HD、AX=0F82Hch7441.指令JMPFARPTRDONE屬于()。參考答案為:C

A.段內(nèi)轉(zhuǎn)移直接尋址B.段內(nèi)轉(zhuǎn)移間接尋址

C.段間轉(zhuǎn)移直接尋址D.段間轉(zhuǎn)移間接尋址2.下列敘述正確的是()。參考答案為:C

A.對(duì)兩個(gè)無(wú)符號(hào)數(shù)進(jìn)行比較采用CMP指令,對(duì)兩個(gè)有符號(hào)數(shù)比較用CMPS指令

B.對(duì)兩個(gè)無(wú)符號(hào)數(shù)進(jìn)行比較采用CMPS指令,對(duì)兩個(gè)有符號(hào)數(shù)比較用CMP指令

C.對(duì)無(wú)符號(hào)數(shù)條件轉(zhuǎn)移采用JAE/JNB指令,對(duì)有符號(hào)數(shù)條件轉(zhuǎn)移用JGE/JNL指令

D.對(duì)無(wú)符號(hào)數(shù)條件轉(zhuǎn)移采用JGE/JNL指令,對(duì)有符號(hào)數(shù)條件轉(zhuǎn)移用JAE/JNB指令3.一個(gè)有128個(gè)字的數(shù)據(jù)區(qū),它的起始地址為12ABH:00ABH,請(qǐng)給出這個(gè)數(shù)據(jù)區(qū)最末一個(gè)字單元的物理地址是()。參考答案為:C

A.12CSBH

B.12B6BH

C.12C59H

D.12BFEH4.在下列指令的表示中,不正確的是()。參考答案為:C

A.MOVAL,[BX+SI]

B.JMPSHORTDONI

C.DEC[BX]

D.MULCL5.在進(jìn)行二重循環(huán)程序設(shè)計(jì)時(shí),下列描述正確的是()。參考答案為:A

A.外循環(huán)初值應(yīng)置外循環(huán)之外;內(nèi)循環(huán)初值應(yīng)置內(nèi)循環(huán)之外,外循環(huán)之內(nèi)

B.外循環(huán)初值應(yīng)置外循環(huán)之內(nèi);內(nèi)循環(huán)初值應(yīng)置內(nèi)循環(huán)之內(nèi)

C.內(nèi)、外循環(huán)初值都應(yīng)置外循環(huán)之外

D.內(nèi)、外循環(huán)初值都應(yīng)置內(nèi)循環(huán)之外,外循環(huán)之內(nèi)ch7456.條件轉(zhuǎn)移指令JNE的測(cè)試條件為()。參考答案為:A

A.ZF=0

B.CF=0

C.ZF=1

D.CF=17.8086CPU在基址加變址的尋址方式中,變址寄存器可以為()。參考答案為:D

A.BX或CX

B.CX或SI

C.DX或SI

D.SI或DI8.已知BX=2000H,SI=1234H,則指令MOVAX,[BX+SI+2]的源操作在()中。參考答案為:A

A.?dāng)?shù)據(jù)段中偏移量為3236H的字節(jié)B.附加段中偏移量為3234H的字節(jié)

C.?dāng)?shù)據(jù)段中偏移量為3234H的字節(jié)D.附加段中偏移量為3236H的字節(jié)9.執(zhí)行如下程序:

MOVAX,0

MOVBX,1

MOVCX,100

A:

ADDAX,BX

INCBX

LOOPA

HLT

執(zhí)行后(BX)=(

)。參考答案為:C

A.99

B.100

C.101

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

A.5000

B.5050

C.5100

D.5150ch7461.在堆棧段中,存放棧頂?shù)刂返募拇嫫魇牵ǎ.IP B.SP C.BX D.BP2.匯編語(yǔ)言程序中,反映指令操作結(jié)果的標(biāo)志是()。A.狀態(tài)標(biāo)志

B.控制標(biāo)志

C.ZF D.DF3.書寫匯編語(yǔ)言程序時(shí)規(guī)定,對(duì)字母開頭的十六進(jìn)制數(shù),其前面必須加()。A.0 B.D C.B D.H4.計(jì)算機(jī)中用來存儲(chǔ)程序、數(shù)據(jù)等信息的記憶裝置是()。A.控制器

B.運(yùn)算器

C.CPU D.存儲(chǔ)器

5.MOV[SI][BX],AL,該指令中自操作數(shù)采用的尋址方式是()。A.基址加變址

B.寄存器

C.寄存器間接

D.寄存器相對(duì)

ch7476.MULWORDPTR[SI]指令中的乘積是存放在()、AX中。A.CX B.BX C.DX D.SI7.匯編語(yǔ)言中,存放下一條將要執(zhí)行的指令地址寄存器是()。A.SP B.AX C.DI D.IP8.在計(jì)算機(jī)中,以先進(jìn)后出方式工作的存儲(chǔ)空間是()。A.存儲(chǔ)器

B.RAM C.ROM D.堆棧

9.TESTAH,30H指令的功能與()指令功能相類似。A.AND B.CMP C.SUB D.OR10.在存儲(chǔ)器中留60個(gè)字的空單元的偽指令是()。A.ARRAYEQU60 B.ARRAYDW60C.ARRAYDB60DUP(?)

D.ARRAYDW60DUP(?)

ch7481.用DEBUG調(diào)試匯編語(yǔ)言程序時(shí),顯示某指令的地址是2F80:F400,此時(shí)段寄存器CS的值是()。A.F400H B.2F80H C.F4000H D.2F800H2.設(shè)DS=1100H,(12000H)=80H,(12001H)=20H,(12002H)=30H,執(zhí)行MOVAX,[1000H]則AX=()。A.8000H B.0080H C.2080H D.8020H3.下列四條指令中錯(cuò)誤的是()。A.MOVAX,[SI]

B.MOVAX,[DI]C.MOVAX,[SI+DI]

D.MOVAX,[SI-DI]4.下列四條指令執(zhí)行后不影響標(biāo)志位的是()。A.JNCNEXTB.CMPAX,

BXC.SHLAX,

1D.ORAL,

AL5.已知AX=0001H,下列四條指令執(zhí)行后,不能使ZF=1的語(yǔ)句是()。A.DECAXB.SUBAX,

1C.ANDAX,

1D.CMPAX,1ch7496.在8086/8088系統(tǒng)中,約定用于形成堆棧段數(shù)據(jù)物理地址的寄存器有()。A.SS,

SP,

BPB.SS,

SP,

BXC.DS,

BX,

BPD.DS,

SP,

BP7.有指令MOVAX,1234H,指令中的立即數(shù)1234H是存儲(chǔ)在()。A.數(shù)據(jù)段

B.代碼段

C.附加段

D.堆棧段8.要在程序中定義緩沖區(qū)BUF,保留9個(gè)字節(jié)存儲(chǔ)空間的語(yǔ)句是()。A.BUFDW9B.BUFDB9C.BUFDB9DUP(?)

D.BUFDW9DUP(?)9.已知AL=56H,BL=34H,都是壓縮BCD碼,要執(zhí)行二數(shù)相加,正確的指令是()。A.ADDAL,BLB.ADCAL,BLC.ADDBL,ALD.ADCBL,ALDAADAADAADAA10.在執(zhí)行子程序段內(nèi)調(diào)用CALLSUBR指令后,SP的值()。A.加1 B.減1 C.加2 D.減2ch7501.Intel8086CPU的段寄存器有______________________________________________。2.Intel8086CPU的SP寄存器的主要作用是____________________________________。3.(CS)=1000H,(DS)=2000H,(ES)=3000H,(SS)=4000H,(DI)=a100,操作數(shù)[DI+1000H]的尋址方式是____________________,物理地址是________________。4.

志寄存器中OF標(biāo)志位的主要作用是__________________________________。5.TEST指令的功能是__________________________________。6.指令LEA__AX,[SI+100H]的具體操作是______________________________。7.有符號(hào)二進(jìn)制字節(jié)數(shù)可表示的數(shù)的范圍是____________________________。8.執(zhí)行一條POP__AX指令后,SP的內(nèi)容發(fā)生的變化是______________________。9.AL寄存器的內(nèi)容為28H,執(zhí)行指令OR__AL,33H后,AL的值為____________。10.測(cè)試寄存器AL和BL的值是否相等而不改變其值應(yīng)使用指令__________________。

ch7511.用戶為了解決自己的問題,用匯編語(yǔ)言所編寫的程序,稱為()。

①目標(biāo)程序②源程序③可執(zhí)行程序④匯編程序2.某系列微機(jī)對(duì)存儲(chǔ)器的分段,如果每一個(gè)段最多的字存儲(chǔ)單元(16位二進(jìn)制)是32K,那么表示段內(nèi)字節(jié)單元偏移地址的二進(jìn)制位數(shù)應(yīng)是()。

①20位②16位③15位④12位3.可用作寄存器間接尋址或基址、變址尋址的地址寄存器,正確的是()。

①AX,BX,CX,DX

②DS,ES,CS,SS

③SP,BP,IP,BX

④SI,DI,BP,BX4.用一條指令僅實(shí)現(xiàn)將BX+SI=>AX的方法是()。

①XCHG

AX,[BX][SI]

②MOV

AX,[BX+SI]

③LEA

AX,BX[SI]

④LEA

AX,[BX][SI]5.設(shè)SP初值為2000H,執(zhí)行指令“PUSH

AX”后,SP的值是()。

①1FFFH

②1998H

③2002H

④1FFEHch7526.條件轉(zhuǎn)移指令JB產(chǎn)生程序轉(zhuǎn)移的條件是()。

①CF=1

②CF=0

③CF=1和ZF=1

④CF=1和ZF=07.選用串操作指令時(shí),錯(cuò)誤的操作是()。

①置方向標(biāo)志位

②根據(jù)串操作指令設(shè)置重復(fù)次數(shù)并送入CX

③設(shè)置源操作數(shù)及目的操作數(shù)指針④源操作數(shù)和目的操作數(shù)都可以加段超越8.設(shè)AL=20H,SI=0500H,DS=3000H,(30500H)=0C0H,CF=1。執(zhí)行SBB

AL,[SI]后,正確的結(jié)果是()。

①AL=5FH

SF=1

CF=1

②AL=60H

SF=1

CF=0

③AL=5FH

SF=0

CF=1

④AL=60H

SF=0

CF=09.設(shè)AX=1000H

NEG

AX

NOT

AX執(zhí)行上述指令后,正確的結(jié)果是()。

①AX=1001H

②AX=0FFFH

③AX=1000H

④AX=0111H10.CBW指令的功能是()。

①把源操作數(shù)的符號(hào)位擴(kuò)展到目的操作數(shù)中②把AL中的符號(hào)位擴(kuò)展到AH中

③把AH中的符號(hào)位擴(kuò)展到AL中

④把AX中的符號(hào)位擴(kuò)展到DX中

ch7531.下列寄存器中,作為16位寄存器的是()。

A.ALB.BLC.CHD.DX2.在程序運(yùn)行過程中,確定下一條指令的物理地址的計(jì)算表達(dá)式是()。

A.DS*16+SIB.ES*16+DIC.CS*16+IPD.SS*16+SP3.物理地址(10FF0H)=10H,(10FF1H)=20H,(10FF2H)=30H,從地址10FF1H中取一個(gè)字的內(nèi)容是()。A.1020HB.3020HC.

溫馨提示

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

評(píng)論

0/150

提交評(píng)論