版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《數(shù)字系統(tǒng)上》課件
- 學(xué)??茖W(xué)調(diào)研報(bào)告范文
- 維修主管應(yīng)聘報(bào)告范文
- 數(shù)學(xué)下冊(cè)相遇問課件題北京版
- 《數(shù)字邏輯與EDA設(shè)計(jì)》課件-第6章
- 《高壓聚乙烯》課件
- 消防報(bào)告范文
- 2025年株洲道路運(yùn)輸貨運(yùn)從業(yè)資格證考試項(xiàng)目
- 2025年云南貨運(yùn)從業(yè)資格證模擬考試下載什么軟件
- 2025年百色貨運(yùn)從業(yè)資格模擬考試題
- 最新X公司事業(yè)部建設(shè)規(guī)劃方案
- 十一學(xué)校行動(dòng)綱要
- GB 1886.6-2016 食品安全國(guó)家標(biāo)準(zhǔn) 食品添加劑 硫酸鈣(高清版)
- 關(guān)于房屋征收及土地收儲(chǔ)過程中的稅收政策(僅供參考)
- 唯一住房補(bǔ)貼申請(qǐng)書(共2頁(yè))
- 單面多軸鉆孔組合機(jī)床動(dòng)力滑臺(tái)液壓系統(tǒng)課程設(shè)計(jì)
- 中醫(yī)養(yǎng)生脾胃為先PPT文檔
- 門窗工程成品保護(hù)方案(附圖)
- 八年級(jí)國(guó)學(xué)經(jīng)典誦讀二十首詩(shī)詞
- (完整版)A4作文格紙可直接打印使用
- 淺談班組安全教育
評(píng)論
0/150
提交評(píng)論