




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高级汇编语言技术第7章1ch77.1宏汇编
为什么使用宏汇编?
在编制汇编语言程序过程中,有些功能程序段需要多次重复使用,所不同的只是参与操作的操作数。为了减少编程的工作量,通常采用两种方法:
①将程序段编写为独立的子程序②将程序段定义成宏
宏概念
宏(或宏指令)是源程序中一段有独立功能的程序代码,只需定义一次,可以多次使用。第7章2ch71.宏定义用伪指令MACRO/ENDM实现,其语句格式是:宏指令名
MACRO[形参1,形参2,…,形参n]┇宏定义体
ENDM
7.1.1宏定义、宏调用和宏展开
3ch72.宏调用宏调用的格式为:
宏指令名
[实参1,实参2,…,实参n]
宏展开
宏展开就是宏定义体取代源程序中的宏指令名,而且用实元取代哑元。汇编源程序时,宏汇编程序将对每条宏指令语句进行宏展开,用实参替代相应的形参,对宏体目标代码作相应改变。
说明:实参可以是常数、寄存器、存储单元、地址表达式、指令的操作码或者是操作码的一部分。第7章5ch7CallQCallQCallQQ:RET子程序QQA,BQC,DQE,FQMACROX,YENDM主程序主程序主程序展开子程序调用和宏调用的工作方式第7章6ch7例7.1用宏指令定义两个字操作数相乘,得到一个16位的第三个操作数作为结果。宏定义:Multiplymacroopr1,opr2,resultpushdxpushaxmovax,opr1imulopr2movresult,axpopaxpopdxendm第7章7ch7宏调用:……Multiplycx,var,xyz[bx]……Multiply240,bx,save……第7章宏展开:……pushdxpushaxmovax,cximulvarmovxyz[bx],axpopaxpopdx……pushdxpushaxmovax,240imulbxmovsave,axpopaxpopdx……8ch7例7.4变元可以是操作码或操作数的一部分,但在宏定义体中必须使用分隔符&,即&是操作符,在宏定义中可作为形参的前缀,展开时把&前后的两个符号连接起来,形成操作码、操作数或字符串。&只能出现在宏定义中。宏定义:LEAPMARCOCOND,LABJ&CONDLABENDM宏调用:
…
LEAPZ,THERE…LEAPNZ,HERE…宏展开:
…
JZTHERE…JNZHERE…10ch7例7.6变元是ASCII串宏定义:MSGGENmacroLAB,NUM,XYZLAB&NUMDB‘HELLOMR.&XYZ’endm宏调用:MSGGENMSG,1,TAYLOR宏展开:
MSG1DB‘HELLOMR.TAYLOR’12ch77.1.3LOCAL伪操作例7.8宏定义体内可以使用标号。如宏定义:ABSOLMACROOPERCMPOPER,0JGENEXTNEGOPERNEXT:ENDM如果多次调用该宏定义,必产生标号的多重定义,汇编时出错。解决这一问题可使用伪操作指令LOCAL,其一般格式为:
LOCAL局部标号1,局部标号2,…宏汇编程序将为标号分别生成格式为“??XXXX”的唯一的符号以代替各局部标号。XXXX代表四位十六进制数0000~FFFF。这样,在汇编源程序中,避免了多次宏调用时生成的标号重复。注意:LOCAL伪操作只能用在宏定义体内,而且必须是MACRO伪操作后的第一个语句,在MACRO与LOCAL不能出现注释和分号标志。14ch7上述ABSOL宏定义可改为:ABSOLMACROOPER
LOCALNEXTCMPOPER,0JGENEXTNEGOPERNEXT:
ENDM宏调用:……
ABSOLVAR……
ABSOLBX
……宏展开后的指令为:……1CMPVAR,01JGE??0000NEGVAR1??0000:……1CMPBX,01JGE??00011NEGDX1??0001:
……如果LOCAL后有多个标号,如LABELNEXT,GO,QUIT则宏展开时,汇编程序第一次调用使用??00000取代NEXT,??00001取代GO和??00002取代QUIT,第二次调用则分别用??00003、??00004、??00005取代NEXT、GO和QIUT。15ch77.1.4在宏定义内使用宏(宏嵌套)例7.9宏定义中允许使用宏调用,限制条件是:必须先定义
difmacrox,ymovax,xsubax,y
endmdifsqrmacroopr1,opr2,result
pushdxpushax
difopr1,opr2movresult,axpopaxpopdx
endm宏调用:difsqrvar1,var2,var3
宏展开:1pushdx1pushax2movax,var12subax,var21movvar3,ax1popax1popdx第7章16ch7例7.10宏定义中的宏调用INT21MACROFUNCTINMOVAH,FUNCTININT21HENDMDISPMACROCHARMOVDL,CHAR
INT2102HENDM宏调用:DISP‘?’宏展开:1MOVDL,‘?’2MOVAH,02H2INT21H第7章17ch7例7.11宏定义中含宏定义DEFMACMACROMACNAM,OPERATORMACNAMMACROX,Y,ZPUSHAXMOVAX,XOPERATORAX,YMOVZ,AXPOPAXENDMENDM宏调用:DEFMACADDITION,ADD宏展开:(形成加法宏定义)ADDITIONMACROX,Y,ZPUSHAXMOVAX,XADDAX,YMOVZ,AXPOPAXENDM
宏调用:DEFMACADDITION,SUB宏展开形成减法宏定义宏调用:DEFMACADDITION,OR宏展开形成逻辑或宏定义对形成的宏定义,又可以使用宏调用,如:
ADDITIONVAR1,VAR2,VAR3第7章18ch7例7.12列表伪操作实例演示initzmacro;definemacromovax,@data;initializesegmentmovds,ax;registermoves,axendmpromptmacromessge;definemacro;thismacrodisplaysanymessage;;generatescodethatlinkstoDOSmovah,9;requestdisplayleadx,messge;promptint21hendm;endmacrofinishmacro;definemacromovax,4c00h;endprocessingint21hendm;endmacro.modelsmall.386.stack200h.datamessg1db'Customername?',13,10,'$'messg2db'Customeraddress?',13,10,'$'.code;definecodesegmentbeginprocfar
.sallinitz.xallpromptmessg1.lallpromptmessg2.xallfinishbeginendpendbegin
……300000 .code;definecodesegment310000 beginprocfar32 .sall33 initz34 .xall35 promptmessg1
360007B4091 movah,9;requestdisplay
3700098D160000R1 leadx,messg1;prompt
38000DCD211 int21h39 .lall
40 promptmessg2
41 1 ;thismacrodisplaysanymessage
42 1 ;43000FB4091 movah,9;requestdisplay
4400118D160011R1 leadx,messg2;prompt
450015CD211 int21h
46 .xall47 finish480017B84C001 movax,4c00h;endprocessing
49001ACD211 int21h
50001C beginendp51001C endbegin……20ch7
如果程序中定义了很多宏,可以把这些宏组合起来建立一个独立的文件,这个只包含若干个宏定义的文件称为宏库。扩展名由mac或inc来表示。当需要使用宏库中的某些宏定义时,只需要在该程序的开始用INCLUDE语句说明
includeC:\MACRO.MAC第7章7.1.6宏库的建立与调用21ch7
宏汇编程序提供了伪操作PURGE,用来在删除不用的宏定义。PURGE伪指令的一般格式是:
PURGE宏名[,…]
方括号表示PURGE可以取消多个宏定义,宏名之间用逗号隔开。如宏定义:
SUB
MACROVARX,VARY,RESULT┇
ENDM宏调用:SUBX,Y,Z
PURGESUB
第7章7.1.7伪指令PURGE23ch77.2重复汇编
其一般格式为:
REPT表达式
┇(重复块)ENDM
其中,REPT和ENDM必须成对出现,两者间的重复块是要重复汇编的部分。表达式的值用来表示重复块的重复汇编次数。重复伪操作不一定要用在宏定义体内。
7.2.1定重复伪操作REPT
有时汇编语言程序要连续地重复完成相同或者几乎完全相同的一组代码,这时可用重复汇编。第7章24ch7例7.14把字符A到Z的ASCII码填入数组TABLECHAR=‘A’TABLELABELBYTEREPT26DBCHARCHAR=CHAR+1ENDM经汇编产生:1DB41H1DB42H1DB43H……1DB5AH26ch7例7.15用宏定义及重复伪操作把TAB,TAB+2,TAB+4,…,TAB+8的内容存入堆栈宏定义PUSH_TABMACROKPUSHTAB+KENDM宏调用:
I=0REPT5PUSH_TAB%II=I+2ENDM宏展开:
2PUSHTAB+02PUSHTAB+22PUSHTAB+42PUSHTAB+62PUSHTAB+8
27ch7例7.16建立一个8字的数组,其中每个字的内容是下一个字的地址,而最后一个字的内容是第一个字的地址ARRAYLABELWORDREPT7DW$+2ENDMDWARRAY汇编后得到:1DW$+21DW$+2……1DW$+2DWARRAY28ch7例7.17IRPX,(1,2,3,4,5,6,7,8,9,10)DBXENDM汇编后:1DB11DB2……1DB1030ch7例7.18多次将AX、BX、CX、DX寄存器内容压栈,宏定义如下:PUSHRMACROIRPREG,〈AX,BX,CX,DX〉
PUSHREGENDM
ENDM汇编后:1PUSHAX1PUSHBX1PUSHCX1PUSHDX
31ch77.2.3不定重复字符伪操作IRPC其语句格式为:
IRPC形参,字符串(或〈字符串〉)┇(重复块)ENDM
此伪指令重复执行重复块中的语句,重复汇编的次数等于字符串中字符的个数。每次重复执行时,依次用字符串中的一个字符取代形参,直到字符串结束。可见IRPC伪指令与IRP伪指令类似,只是IRPC用字符串(其三角括号可以有也可以无)代替了IRP伪指令中的参数表。32ch7例7.19Irpcx,01234567DBx+1Endm汇编后:
DB
11DB
2┇1DB8例7.20
PUSHRMACROIRPCREG,ABCDPUSHREG&XENDMENDM同样,汇编后也可得到:1PUSHAX1PUSHBX1PUSHCX1PUSHDX33ch77.3条件汇编
汇编程序能根据条件把一段源程序包括在汇编语言程序内的或排除在外,这里就用到条件伪操作。条件伪操作的一般格式是:Ifxxargument┇;自变量满足条件汇编此块[ELSE]┇;自变量不满足条件汇编此块
ENDIF
说明:汇编程序在对源程序汇编时,要对源程序扫描二遍。第一遍建立符号表,第二遍才把汇编语言指令翻译成机器语言指令。那么自变量必须在汇编程序第一遍扫视后就成为确定的数值。34ch7IF表达式;表达式≠0,则汇编IFE
表达式;表达式=0,则汇编IF1;在第一遍扫视期间满足条件IF2;在第二遍扫视期间满足条件IFDEF
符号;符号已定义,则汇编IFNDEF
符号;符号未定义,则汇编IFB<自变量>;自变量为空,则汇编IFNB<自变量>;自变量不为空,则汇编IFIDN<字符串1>,<字符串2>;串1与串2相同IFDIF<字符串1>,<字符串2>;串1与串2不同35ch7IFexpression;汇编程序求出表达式的值,如此值不为0,则满足条件。IFEexpression;汇编程序求出表达式的值,如此值为0,则满足条件。 例7.21:宏指令MAX把三个变元中的最大值放在AX中,而且使变元数不同时产生不同的程序段。7.3.136ch7MAXMACROK,A,B,CLOCALNEXT,OUTMOVAX,AIFK-1IFK-2CMPC,AXJLENEXTMOVAX,CENDIFNEXT:CMPB,AXJLEOUTMOVAX,BENDIFOUT:ENDM宏调用:MAX1,PMAX2,P,QMAX3,P,Q,R宏展开:
32 33 MAX1,P
340005A10000R1 MOVAX,P3500081 ??0001:36 MAX2,P,Q
370008A10000R1 MOVAX,P38000B1 ??0002:39000B39060002R1 CMPQ,AX40000F7E031 JLE??0003410011A10002R1 MOVAX,Q4200141 ??0003:43 MAX3,P,Q,R
440014A10000R1 MOVAX,P45001739060004R1 CMPR,AX46001B7E031 JLE??000447001DA10004R1 MOVAX,R4800201 ??0004:49002039060002R1 CMPQ,AX5000247E031 JLE??0005510026A10002R1 MOVAX,Q5200291 ??0005:
宏定义37ch7例7.22宏指令BRANCH产生一条转向X的指令,当它相对X的距离小于128字节时产生JMPSHORTX,否则产生JMPNERPTRX(X必须位于该转移指令之前,即低地址区)BRANCHMACROXIF($-X)LT128JMPSHORTXELSEJMPNEARPTRXENDIF宏展开产生:
JMPSHORTX或JMPNEARPTR
X如LAB:MOVAX,BXBRANCHLAB
BRANCHLAB将展开为:JMPSHORTLAB38ch7例7.23宏定义允许递归调用
powermacrox,nsalx,1count=count+1ifcount-npowerx,nendifendm宏调用:count=0powerax,3宏展开:Salax,1Salax,1Salax,139ch7IF1;在汇编程序的第一遍扫视期间满足条件IF2;在汇编程序的第二遍扫视期间满足条件
说明:汇编程序在对包括宏库的源程序汇编时也分两次扫描,第一次将宏库及程序中的宏定义登入宏定义表,第二次扫描时进行宏扩展,形成列表文件。例7.24对例7.12使用宏库的程序实现中,在INCLUDE语句前加上IF1,是INCLUDE语句只在汇编的第一遍扫描期间出现,这样宏库的拷贝将不在汇编清单中出现,以节省空间。7.3.240ch7已建立宏库(文件名macro.mac);alibraryofmacrosequences-macro.macinitzmacro;definemacromovax,@data;initializesegmentmovds,ax;registermoves,axendmpromptmacromessge;definemacro;thismacrodisplaysanymessage;;generatescodethatlinkstoDOSmovah,9;requestdisplayleadx,messge;promptint21hendm;endmacrofinishmacro;definemacromovax,4c00h;endprocessingint21hendm;endmacro宏库的使用IF1Includemacro.macENDIF.modelsmall.386.stack200h.datamessg1db'Customername?',13,10,'$'messg2db'Customeraddress?',13,10,'$'.code;definecodesegmentbeginprocfar
.sallinitz.xallpromptmessg1.lallpromptmessg2.xallfinishbeginendpendbegin
41ch7IFDEFsymbol;如符号已在程序中定义,或者用extrn说明 该符号是在外部定义的,则满足条件。IFNDEFsymbol;如符号未定义或未通过EXTRN说明为外 部符号则满足条件。7.3.342ch7
movax,dividendmovbx,divisorsubcx,cxcomp:cmpax,bxjboutsubax,bxjnccx
jmpcompout:movquotient,cxendm例7.25
dividemacrodevidend,divisor,quotientlocalcmop,outcntr=0ifndefdividendcntr=1endififndefdivisorcntr=1endififndefquotientcntr=1endif;只要有一个参数未定义将从EXITM处退出该宏定义而不做进一步展开ifcntr
exitmendif
宏定义43ch7宏调用IF1Includemacro.macENDIFPurgeprompt.modelsmall.386.stack200h.datadivdnddw200;dividneddivsordw25;divsiorquotntdw?;quotient.code;definecodesegmentbeginprocfar
.sallinitz.xalldividedivdnd,divsor,quotnt.lalldividedivdnd,divsor,quont.xallfinishbeginendpendbegin
宏展开见教材P27444ch7IFB<argument>;如自变量为空,则满足条件IFNB<argument>;如自变量不为空,则满足条件注意:自变量用“<>”括起来7.3.4例7.26宏指令GOTOL,X,REL,Y可以根据不同情况产生无条件转移指令或比较和条件转移指令。宏定义:
GOTOMACROL,X,REL,YIFB<REL>JMPLELSEMOVAX,XCMPAX,YJ&RELLENDIFENDM宏调用:┇
GOTOLOOP1,SUM,NZ,15┇
GOTOQIUIT宏展开:
┇1MOVAX,SUM1CMPAX,15
JNZLOOP1
┇1
JMPQUIT45ch7DISPMACROCHARIFB<CHAR> MOVDL,’‘ELSE MOVDL,CHARENDIF MOVAH,02H INT21HENDM宏调用:DISP‘A’DISP例7.27宏定义DISP可以在给出参数时,在屏幕上显示该字符;不给出参数时,则可显示“空格”。宏定义:
宏展开:DISP‘A’1MOVDL,‘A’MOVAH,02H1INT21HDISPMOVDL,‘’1MOVAH,02H1INT21H46ch7IFIDN<arg-1>,<arg-2>;如果字符串<arg-1>和字符串<arg-2>相同,则满足条件。
IFDIF<arg-1>,<arg-2>;如果字符串<arg-1>和字符串<arg-2>不相同,则满足条件。在格式中,两个参数必须用尖括号括起7.3.547ch7例7.28宏定义利用参数为B或W而产生REPMOVSB或REPMOVSW的指令,如不给出参数,则产生REPMOVSB指令。宏定义:
movifmacrotag;definemacroifidn<&tag>,<b>repmovsb;movebytesexitmendififidn<&tag>,<w>repmovsw;movewordselse;noBorW,defaulttoBrepmovsbendifendm
宏调用:if1includemacro.macendifpurgeprompt
.modelsmall.386.stack200h.data.code;definecodesegmentbeginprocfar.sallintz.xallmovifbmovifwmovif.sallfinishbeginendp宏展开见教材P277
48ch7作业1371649ch71.在DEBUG上机调试程序时,存储器地址表示为12FA:015F,它的物理地址是()。
a.12FAH
b.1305FH
c.130FFH
d.015FH2.IP指令指针寄存器是属于()。
a.通用寄存器
b.段寄存器
c.变址寄存器
d.控制寄存器3.下面有语法错误的指令是()。
a.ADDAL,AH
b.ADD[BX+3],AL
c.ADDAH,[DI]
d.ADD[BP+2],DA1(DA1是变量名)4.完成对DX的有符号数除以2的指令是()。
a.IDIV2
b.SARDX,1
c.RORDX,1
d.RCRDX,15.使进位位置1的指令是()。
a.CLC
b.CMC
c.STC
d.NOP汇编练习题50ch76.设AL=-15,要使AL=15应执行的指令是()。
a.NEGAL
b.NOTAL
c.INCAL
d.DECAL7.在条件转移指令中,结果为负数则转移的指令是()。
a.JNS
b.JX
c.JS
d.JP8.下面的XCHG指令中,语法正确的是()。
a.XCHGAL,DS
b.XCHGBL,[BX]
c.XCHGAL,0FH
d.XCHGBUF1,BUF29.一条指令中目的操作数不允许使用的寻址方式是()。
a.寄存器寻址
b.立即数寻址
c.变址寻址
d.寄存器间接寻址10.设SP=1FFEH,执行下列指令后,SP寄存器的值是()。
POPF
PUSHAX
a..2000H
b.2002H
c.1FFCH
d.1FFEH51ch71.[]下列标号不合法的是:A.MOVB.WANGC.F8D.AB32.[]语句DADADW‘AB’,‘CD’,‘E’,‘F’汇编后占用的存储空间是:A.4个字节B.8个字节C.6个字节D.5个字节3.[]PSW中使用的标志位以及其中的状态标志位、控制标志位的位数分别是:A.9,6,3B.9,8,1C.9,7,2D.16,9,74.[]指令ADDAX,[BX][DI]中源操作数的寻址方式是:A.段内寄存器间接寻址B.段间寄存器间接寻址C.基址加变址寻址C.寄存器寻址5.[]在伪指令语句NUMBERDW1234H中的NUMBER 项称为:A.标号B.变量C.伪操作符D.数据
52ch76.[]在存储器中保留待定的10个字节单元的伪指令语句是:A.NUMBEQU10B.NUMBDW10DUP(?)C.NUMBDB10D.NUMBDB2DUP(5DUP(?))7.[]把汇编语言源程序翻译成目标代码的程序是:A.编译程序B.解释程序C.汇编程序D.连接程序8.[]下列指令中,不影响PSW的指令是:A.MOVB.TESTC.SALD.CLD9.[]下列叙述不正确的是:
A.立即数不能直接送段寄存器。B.目的操作数不能是立即数和段寄存器。C.不能在两个存储单元间直接传送数据。D.两个段寄存器之间不能直接传送数据。10.[]汇编语言在程序设计语言家族中属于:A.第一代语言B.第二代语言
C.第三代语言D.第四代语言
53ch71、设DS=8225H,DI=3942H,指令NEG
BYTE
PTR[DI]操作数的物理地址是(
)A、85B92HB、86192HC、BB690HD、12169H2、下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是(
)A、AX,BX,CX,DXB、BX,BP,SI,DIC、SP,IP,BP,DXD、CS,DS,ES,SS3、循环指令LOOPNZ终止循环的条件是(
)。A、CX=0,且Z=0B、CX=0,或Z=1C、CX≠0,且Z=0D、CX≠0,或Z=14、对寄存器AX的内容乘以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、通用寄存器
54ch76、设DH=10H,执行NEG
DH指令后,正确的结果是(
)。A、DH=10H
C=1B、DH=0F0H
C=0C、DH=10H
C=0D、DH=0F0H
C=17、下列传送指令中有语法错误的是(
)。A、MOV
CS,AXB、MOV
DS,AXC、MOV
SS,AXD、MOV
ES,AX8、下面指令执行后,改变AL寄存器内容的指令是(
)。A、TEST
AL,02HB、OR
AL,ALC、CMP
AL,BLD、AND
AL,BL9、一条指令中目的操作数不允许使用的寻址方式是()A.寄存器寻址
B.立即数寻址
C.变址寻址
D.寄存器间接寻址10、执行下面指令序列后,结果是(
)。MOV
AL,82HCBWA、AX=0FF82HB、AX=8082HC、AX=0082HD、AX=0F82H55ch71.指令JMPFARPTRDONE属于()。参考答案为:C
A.段内转移直接寻址B.段内转移间接寻址
C.段间转移直接寻址D.段间转移间接寻址2.下列叙述正确的是()。参考答案为:C
A.对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMPS指令
B.对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CMP指令
C.对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/JNL指令
D.对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/JNB指令3.一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是()。参考答案为:C
A.12CSBH
B.12B6BH
C.12C59H
D.12BFEH4.在下列指令的表示中,不正确的是()。参考答案为:C
A.MOVAL,[BX+SI]
B.JMPSHORTDONI
C.DEC[BX]
D.MULCL5.在进行二重循环程序设计时,下列描述正确的是()。参考答案为:A
A.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内
B.外循环初值应置外循环之内;内循环初值应置内循环之内
C.内、外循环初值都应置外循环之外
D.内、外循环初值都应置内循环之外,外循环之内56ch76.条件转移指令JNE的测试条件为()。参考答案为: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.数据段中偏移量为3236H的字节B.附加段中偏移量为3234H的字节
C.数据段中偏移量为3234H的字节D.附加段中偏移量为3236H的字节9.执行如下程序:
MOVAX,0
MOVBX,1
MOVCX,100
A:ADDAX,BX
INCBX
LOOPA
HLT
执行后(BX)=(
)。参考答案为:C
A.99
B.100
C.101
D.10210.上题的程序执行后(AX)=()。参考答案为:B
A.5000
B.5050
C.5100
D.515057ch71.在堆栈段中,存放栈顶地址的寄存器是()。A.IP B.SP C.BX D.BP2.汇编语言程序中,反映指令操作结果的标志是()。A.状态标志 B.控制标志 C.ZF D.DF3.书写汇编语言程序时规定,对字母开头的十六进制数,其前面必须加()。A.0 B.D C.B D.H4.计算机中用来存储程序、数据等信息的记忆装置是()。A.控制器 B.运算器 C.CPU D.存储器
5.MOV[SI][BX],AL,该指令中自操作数采用的寻址方式是()。A.基址加变址B.寄存器C.寄存器间接D.寄存器相对
58ch76.MULWORDPTR[SI]指令中的乘积是存放在()、AX中。A.CX B.BX C.DX D.SI7.汇编语言中,存放下一条将要执行的指令地址寄存器是()。A.SP B.AX C.DI D.IP8.在计算机中,以先进后出方式工作的存储空间是()。A.存储器 B.RAM C.ROM D.堆栈
9.TESTAH,30H指令的功能与()指令功能相类似。A.AND B.CMP C.SUB D.OR10.在存储器中留60个字的空单元的伪指令是()。A.ARRAYEQU60 B.ARRAYDW60C.ARRAYDB60DUP(?) D.ARRAYDW60DUP(?)
59ch71.用DEBUG调试汇编语言程序时,显示某指令的地址是2F80:F400,此时段寄存器CS的值是()。A.F400H B.2F80H C.F4000H D.2F800H2.设DS=1100H,(12000H)=80H,(12001H)=20H,(12002H)=30H,执行MOVAX,[1000H]则AX=()。A.8000H B.0080H C.2080H D.8020H3.下列四条指令中错误的是()。A.MOVAX,[SI] B.MOVAX,[DI]C.MOVAX,[SI+DI] D.MOVAX,[SI-DI]4.下列四条指令执行后不影响标志位的是()。A.JNCNEXTB.CMPAX,BXC.SHLAX,1D.ORAL,AL5.已知AX=0001H,下列四条指令执行后,不能使ZF=1的语句是()。A.DECAXB.SUBAX,1C.ANDAX,1D.CMPAX,160ch76.在8086/8088系统中,约定用于形成堆栈段数据物理地址的寄存器有()。A.SS,SP,BPB.SS,SP,BXC.DS,BX,BPD.DS,SP,BP7.有指令MOVAX,1234H,指令中的立即数1234H是存储在()。A.数据段B.代码段C.附加段D.堆栈段8.要在程序中定义缓冲区BUF,保留9个字节存储空间的语句是()。A.BUFDW9B.BUFDB9C.BUFDB9DUP(?)D.BUFDW9DUP(?)9.已知AL=56H,BL=34H,都是压缩BCD码,要执行二数相加,正确的指令是()。A.ADDAL,BLB.ADCAL,BLC.ADDBL,ALD.ADCBL,ALDAADAADAADAA10.在执行子程序段内调用CALLSUBR指令后,SP的值()。A.加1 B.减1 C.加2 D.减261ch71.Intel8086CPU的段寄存器有______________________________________________。2.Intel8086CPU的SP寄存器的主要作用是____________________________________。3.(CS)=1000H,(DS)=2000H,(ES)=3000H,(SS)=4000H,(DI)=a100,操作数[DI+1000H]的寻址方式是____________________,物理地址是________________。4.
志寄存器中OF标志位的主要作用是__________________________________。5.TEST指令的功能是__________________________________。6.指令LEA__AX,[SI+100H]的具体操作是______________________________。7.有符号二进制字节数可表示的数的范围是____________________________。8.执行一条POP__AX指令后,SP的内容发生的变化是______________________。9.AL寄存器的内容为28H,执行指令OR__AL,33H后,AL的值为____________。10.测试寄存器AL和BL的值是否相等而不改变其值应使用指令__________________。
62ch71.用户为了解决自己的问题,用汇编语言所编写的程序,称为()。
①目标程序②源程序③可执行程序④汇编程序2.某系列微机对存储器的分段,如果每一个段最多的字存储单元(16位二进制)是32K,那么表示段内字节单元偏移地址的二进制位数应是()。
①20位②16位③15位④12位3.可用作寄存器间接寻址或基址、变址寻址的地址寄存器,正确的是()。
①AX,BX,CX,DX
②DS,ES,CS,SS
③SP,BP,IP,BX
④SI,DI,BP,BX4.用一条指令仅实现将BX+SI=>AX的方法是()。
①XCHG
AX,[BX][SI]
②MOV
AX,[BX+SI]
③LEA
AX,BX[SI]
④LEA
AX,[BX][SI]5.设SP初值为2000H,执行指令“PUSH
AX”后,SP的值是()。
①1FFFH
②1998H
③2002H
④1FFEH63ch76.条件转移指令JB产生程序转移的条件是()。
①CF=1
②CF=0
③CF=1和ZF=1
④CF=1和ZF=07.选用串操作指令时,错误的操作是()。
①置方向标志位
②根据串操作指令设置重复次数并送入CX
③设置源操作数及目的操作数指针④源操作数和目的操作数都可以加段超越8.设AL=20H,SI=0500H,DS=3000H,(30500H)=0C0H,CF=1。执行SBB
AL,[SI]后,正确的结果是()。
①AL=5FH
SF=1
CF=1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/IEC GUIDE 50:2014 RU Safety aspects - Guidelines for child safety in standards and other specifications
- 【正版授权】 ISO/IEC 23092-3:2025 EN Information technology - Genomic information representation - Part 3: Metadata and application programming interfaces (APIs)
- 生物技术制药工艺知识考点解析
- 宜宾一诊考试试题及答案
- 仪容仪表考试试题及答案
- 医院培训考试试题及答案
- 六一儿童节栈桥活动方案
- 六一公司参观活动方案
- 六一创意过山车活动方案
- 六一商场活动方案
- 《供热计量技术规程》JGJ173-2009
- 摄影摄像拍摄合同范本
- 人身损害三期评定规范
- 2024届梧州市八年级物理第二学期期末联考试题含解析
- 2024中考道法图表题专项训练
- 《红楼梦》饮食文化研究
- 《机械制图》期末考试题库388题(含答案)
- 新媒体视频节目制作 课件 学习领域1 新闻短视频制作
- 福建省泉州市晋江第一中学高一物理摸底试卷含解析
- 肝硬化的中医护理查房课件
- 音乐(人音全国版)四年级生日快乐变奏曲-2课件
评论
0/150
提交评论