IBM-PC汇编语言程序设计-7_第1页
IBM-PC汇编语言程序设计-7_第2页
IBM-PC汇编语言程序设计-7_第3页
IBM-PC汇编语言程序设计-7_第4页
IBM-PC汇编语言程序设计-7_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ch71第7章高级汇编语言技术ch727.1宏汇编

为什么使用宏汇编?

在编制汇编语言程序过程中,有些功能程序段需要多次重复使用,所不同的只是参与操作的操作数。为了减少编程的工作量,通常采用两种方法:

①将程序段编写为独立的子程序②将程序段定义成宏

大家想一下子程序有什么优缺点?什么是宏?

宏(或宏指令)是源程序中一段有独立功能的程序代码,只需定义一次,可以多次调用。第7章ch731.宏定义用伪指令MACRO/ENDM实现,其语句格式是:宏指令名

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

宏定义体

ENDM

7.1.1宏定义、宏调用和宏展开

说明

宏指令名是该宏定义的名称。调用时使用宏指令名对该宏定义进行调用。

宏指令符合标识符规定。宏指令名不能重复,并且指令的第一个字符必须是字母。但可以和源程序中的其他变量、标号、指令、伪指令名相同,在这种情况下宏指令的优先级最高。

MACRO必须与ENDM成对出现。MACRO标识宏定义的开始。

形式参数(即形参,也称哑元、虚参)是可选项,宏可以不带参数;带参数时,多个形参间用逗号分隔。第7章2.宏调用宏调用的格式为:

宏指令名

[实参1,实参2,…,实参n]

宏展开

宏展开就是宏定义体取代源程序中的宏指令名,而且用实元取代哑元。汇编源程序时,宏汇编程序将对每条宏指令语句进行宏展开,用实参替代相应的形参,对宏体目标代码作相应改变。

说明:实参可以是常数、寄存器、存储单元、地址表达式、指令的操作码或者是操作码的一部分。第7章CallQCallQCallQQ:RET子程序QQA,BQC,DQE,FQMACROX,YENDM主程序主程序主程序展开子程序调用和宏调用的工作方式第7章

用一个例子来说明宏定义、宏调用和宏展开的情况例:将两个16位数相加,结果存入16位RESULT单元中。;对两数相加功能进行宏定义第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;宏调用

BCDADDB1,B2,B3

;再次宏调用

RETCODEENDSENDSTART经宏展开后:

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

宏汇编程序在所展开的指令前标识以‘1’号以示区别。较早的版本用‘+’第7章7.1.2宏定义中的参数:1宏定义可以无参数

savereg

macropushaxpushbxpushcxpushsi

endm2参数可以是操作码

amacro p1,p2,p3mov ax,p1

p2

p3endm调用:

aword_var,inc,ax

展开:

mov ax,word_var1inc

ax第7章ch7113参数可以是操作码或操作数的一部分,但在宏定义体中必须使用分隔符&,即&是操作符,在宏定义中可作为形参的前缀,展开时把&前后的两个符号连接起来,形成操作码、操作数或字符串。&只能出现在宏定义中。例宏定义:SHIFTMARCOX,Y,ZMOVCL,XS&ZY,CLENDM形参Z是操作码的一部分。宏汇编中规定,若宏定义体中的形参没有适当的分隔符,就不被当作形参,调用时也不会被实参代替。上例被调用时:

SHIFT4,CL,AL

SHIFT6,BX,AR则宏展开时的目标代码:1MOVCL,41SALAL,CL

1MOVCL,61SARBX,CLch712例

fomacrop1jmpta&p1endm

宏调用:foword_var宏展开:1Jmptaword_var如果这样:

fomacrop1jmptap1endm

宏调用:foword_var宏展开:1Jmp

?ch7134伪操作%不能出现在形参的前面,通常用在宏调用中,将跟在它后面的表达式的值转换成以当前基数下的数,在宏展开时,用转换后的值代替形参。例宏定义:MAKERMACROCOUNT,STRMAKER&COUNTDBSTR

ENDMERRMAMACROTEXTCNTR=CNTR+1

MAKER%CNTR,TEXT

ENDM经宏调用:

ch714

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

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

宏定义体内可以使用标号。对于使用了标号的宏定义,若多次调用,势必产生标号的多重定义,汇编时出错。解决这一问题可使用伪指令LOCAL,其一般格式为:

LOCAL局部标号1,局部标号2,…

宏汇编程序将为标号分别生成格式为“??XXXX”的唯一的符号以代替各局部标号。XXXX代表四位十六进制数0000~FFFF。这样,在汇编源程序中,避免了多次宏调用时生成的标号重复。注意:LOCAL伪操作只能用在宏定义体内,而且必须是MACRO伪操作后的第一个语句,在MACRO与LOCAL不能出现注释和分号标志。

ch716例定义取绝对值的宏指令如下:

ABSMACROOPS

LOCALPLUSCMPOPS,0JGEPLUSNEGOPSPLUS:MOVAX,OPS

ENDM宏调用:

ABSCXMOVBX,AX

ABSDX宏展开后的指令为:1

CMPCX,01JGE

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

??00011NEGDX1??0001:

MOVAX,DX7.1.4在宏定义内使用宏宏定义中允许使用宏调用,限制条件是:必须先定义

difmacrox,ymovax,xsubax,y

endm

difsqrmacroopr1,opr2,result

pushdxpushax

difopr1,opr2movresult,axpopaxpopdx

endm

difsqrvar1,var2,var3调用

宏展开1pushdx1pushax2movax,var12subax,var21movvar3,ax1popax1popdx第7章7.1.5列表伪操作Masm提供了.xall,.lall,sall来控制汇编清单中宏展开的列出情况.xall

为默认情况,它指示清单中只列出产生目标 代码的宏展开;.lall

列出包括注释在内的所有宏展开;.sall则不列出任何信息;第7章

如果程序中定义了很多宏,可以把这些宏组合起来建立一个独立的文件,这个只包含若干个宏定义的文件称为宏库。扩展名是mac或inc来表示。当需要使用宏库中的某些宏定义时,只需要在该程序的开始用INCLUDE语句说明

INCLUDEC:\MACRO.MAC第7章7.1.6宏库的建立与调用

宏汇编程序提供了伪操作PURGE,用来在适当的时候取消宏定义。PURGE伪指令的一般格式是:

PURGE宏定义名[,…]

方括号表示PURGE可以取消多个宏定义,宏名之间用逗号隔开。如宏定义:

SUB

MACROVARX,VARY,RESULT┇

ENDM宏调用:SUBX,Y,Z

PURGESUB

第7章7.1.7伪指令PURGE7.2重复汇编

其一般格式为:

REPT表达式

┇(重复块)

ENDM

其中,REPT和ENDM必须成对出现,两者间的重复块是要重复汇编的部分。表达式的值用来表示重复块的重复汇编次数。重复伪操作不一定要用在宏定义体内。

7.2.1定重复伪指令REPT

有时汇编语言程序要连续地重复完成相同或者几乎完全相同的一组代码,这时可用重复汇编。第7章例有下列语句:

NUM=0REPT10

NUM=NUM+1DBNUMENDM

汇编后,将数据1,2,3,…,10分配给十个连续的字节单元:1DB11DB21DB3┇1DB10第7章7.2.2不定重复伪指令IRP

其一般格式为:

IRP形参,〈参数1,参数2,…〉┇(重复块)

ENDM

此伪指令重复执行重复块中所包含的语句,重复的次数由参数表中的参数个数决定。重复汇编时,依次用参数表中的参数取代形参,直到表中的参数用完为止。参数表中的参数必须用两个三角号括起来,参数可以是常数、符号、字符串等,各参数间用逗号隔开。第7章ch724例多次将AX、BX、CX、DX寄存器内容压栈,宏定义如下:PUSHRMACROIRPREG,〈AX,BX,CX,DX〉

PUSHREGENDM

ENDM汇编后:1PUSHAX1PUSHBX1PUSHCX1PUSHDX

ch7257.2.3不定重复字符伪指令IRPC

其语句格式为:

IRPC形参,字符串(或〈字符串〉)┇(重复块)

ENDM

此伪指令重复执行重复块中的语句,重复汇编的次数等于字符串中字符的个数。每次重复执行时,依次用字符串中的一个字符取代形参,直到字符串结束。可见IRPC伪指令与IRP伪指令类似,只是IRPC用字符串(其三角括号可以有也可以无)代替了IRP伪指令中的参数表。ch726例:Irpcx,01234567Dbx+1Endm汇编后:

Db11Db2┇1Db8

再如:可用IRPC实现:PUSHRMACROIRPCREG,ABCD

PUSHREG&XENDMENDM同样,汇编后也可得到:1PUSHAX1PUSHBX1PUSHCX1PUSHDXch7277.3条件汇编

汇编程序能根据条件把一段源程序包括在汇编语言程序内的或排除在外,这里就用到条件伪操作。条件伪操作的一般格式是:Ifxxargument┇;自变量满足条件汇编此块[ELSE]┇;自变量不满足条件汇编此块

ENDIF

说明:汇编程序在对源程序汇编时,要对源程序扫描二遍。第一遍建立符号表,第二遍才把汇编语言指令翻译成机器语言指令。那么自变量必须在汇编程序第一遍扫视后就成为确定的数值。ch728IFexpression;汇编程序求出表达式的值,如此值不为0, 则满足条件.IFEexpression;汇编程序求出表达式的值,如此值为0,则 满足条件.例:宏指令MAX把三个变元中的最大值放在AX中,而且使变元数不同时产生不同的程序段。7.3.1ch729MAXMACROK,A,B,CLOCALNEXT,OUTMOVAX,AIFK-1IFK-2CMPC,AXJLENEXTMOVAX,CENDIFNEXT:CMPB,AXJLEOUTMOVAX,BENDIFOUT:ENDM宏调用: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该宏要完成什么功能。

宏定义允许递归调用

powermacrox,nsalx,1count=count+1ifcount-npowerx,nendifEndm宏调用:

count=0powerax,3宏展开:Salax,1Salax,1Salax,1ch731IF1;在汇编程序的第一遍扫视期间满足条件IF2;在汇编程序的第二遍扫视期间满足条件

说明:汇编程序在对包括宏库的源程序汇编时也分两次扫描,第一次将宏库及程序中的宏定义登入宏定义表,第二次扫描时进行宏扩展,形成列表文件。大家看书上268页的例7.24,然后和259页的例7.12比较看有什么不同?

IFB<argument>;如自变量为空,则满足条件

IFNB<argument>;如自变量不为空,则满足条件注意:自变量用“<>”括起来7.3.27.3.3ch732例:宏指令GOTOL,X,REL,Y可以根据不同情况产生无条件转移指令或比较和条件转移指令。宏定义:

GOTOMACROL,X,REL,YIFB<REL>JMPLELSEMOVAX,XCMPAX,YJ&RELLENDIFENDM宏调用:

GOTOLOOP1,SUM,NZ,15

GOTOEXIT

宏展开:

┇1MOVAX,SUM1CMPAX,15

JNZLOOP1

┇1JMPEXITch733DISPMACROCHARIFB<CHAR> MOVDL,’‘ELSE MOVDL,CHARENDIF MOVAH,02H INT21HENDM宏调用:

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

;如符号已在程序中定义,或者用extrn说明 该符号是在外部定义的,则满足条件。IFNDEFsymbol

;如符号未定义或未通过EXTRN说明为外 部符号则满足条件。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宏调用:MOVDIF‘B’宏展开:1REPMOVSBIFIDN<arg-1>,<arg-2>;如果字符串<arg-1>和字符串<arg-2>相 同,则满足条件。

IFDIF<arg-1>,<arg-2>;如果字符串<arg-1>和字符串<arg-2>不相同,则满足条件。在格式中,两个参数必须用尖括号括起7.3.5ch737例编写一个可用功能调用输入字符的宏定义。READCHMACRO

char MOVAH,1H INT21H;接受一个字符,并存入AL中IFNB<char>;若参数char有实参与之对应

IFDIF

<char>,<AL>;若参数char≠AL,则把所输入字符保存到实参中

MOV

char,ALENDIFENDIFENDMch7381.在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.NOPch7396.设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.1FFEHch7401.[]下列标号不合法的是:

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.数据

ch7416.[]在存储器中保留待定的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.第四代语言

ch7421、设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、通用寄存器

ch7436、设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=0F82Hch7441.指令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.内、外循环初值都应置内循环之外,外循环之内ch7456.条件转移指令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.5150ch7461.在堆栈段中,存放栈顶地址的寄存器是()。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.寄存器相对

ch7476.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(?)

ch7481.用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,1ch7496.在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.减2ch7501.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的值是否相等而不改变其值应使用指令__________________。

ch7511.用户为了解决自己的问题,用汇编语言所编写的程序,称为()。

①目标程序②源程序③可执行程序④汇编程序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

④1FFEHch7526.条件转移指令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

②AL=60H

SF=1

CF=0

③AL=5FH

SF=0

CF=1

④AL=60H

SF=0

CF=09.设AX=1000H

NEG

AX

NOT

AX执行上述指令后,正确的结果是()。

①AX=1001H

②AX=0FFFH

③AX=1000H

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

①把源操作数的符号位扩展到目的操作数中②把AL中的符号位扩展到AH中

③把AH中的符号位扩展到AL中

④把AX中的符号位扩展到DX中

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

A.ALB.BLC.CHD.DX2.在程序运行过程中,确定下一条指令的物理地址的计算表达式是()。

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论