汇编语言中 MOV AX,[0100H]+2 和 MOV AX, [0100H+2]两种写法效果一样吗
4个回答
2016-07-18
展开全部
汇编语言2005—2006学年第二学期期末考试复习题及参考答案一、填空1.十进制数369转换成二进制数为()2,转换成十六进制数为()16.2.计算机中的指令由()和(地址码)两部分组成。3.8086的地址总线有20根,寻址范围为()字节。4.下一条将要执行的指令的地址存放在寄存器()中。5.写出IBMPC机的三种子程序返回的指令(RET),(IRET),(IRETD)。6.汇编语言源程序需经过()程序汇编,()程序连接才能生成可执行文件。7.存储器某单元的地址表示为2314H:4132H,则它的偏移地址=(4132),物理地址=()8.REP指令前缀与()指令配合使用。9.在显示器上查看和修改内存单元的内容可以使用DEBUG的()和()命令。10.(AL)=BFH,要求屏蔽第0,1两位,则要执行指令();如果要求第0,1位变反,可使用指令()11.宏汇编适合于(),()的子功能段使用;二、选择题1.设字长N=16,有符号数7AE9H的补码表示为()A.9EA7HB.76C4HC.8417HD.7AE9H2.比较有符号数3260H与0B425H的大小关系为()A.相等B.小于C.大于D.不能比较3.指令JMPWORDPTR[BX][DI]中转移的目标地址为()A.16dx(DS)+(BX)+(DI)B.16dx(ES)+(BX)+(DI)C.16dx(SS)+(BX)+(DI)D.16dx(CS)+(BX)+(DI)4.在指令MOVAX,[1000H]中,源操作数的寻址方式为()A.立即寻址B.直接寻址C.段内间接寻址D.寄存器寻址5.中断矢量表中存放的是()A.中断类型号B.断点地址C.中断服务程序D.中断服务程序入口地址6.8086的汇编语言指令系统中的条件转移指令可以使程序转移到()A.段内的任何地方B.距该指令偏移地址为-32768~+32767的地方C.距该指令偏移地址为-128~+127的地方.D.段外7.能定义ASCII码字符串的数据定义语句有()A.DB,DW,DD,DQ,DTB.DB,DW,DDC.DB,DWD.DB;8.若(AL)=87H,执行ADDAL,0F5H后,S,Z,C,O,P的状态为()A.SF=0,ZF=0,CF=1,OF=1,PF=0B.SF=1,ZF=0,CF=1,OF=0,PF=1C.SF=0,ZF=0,CF=0,OF=1,PF=0D.SF=1,ZF=0,CF=1,OF=1,PF=19.比较指令CMP()A.专用于有符号数比较B.专用于无符号数比较C.专用于串比较D.不区分比较的对象是有符号数还是无符号数10.数据传送指令对标志位的影响为()A.都不影响;B.都影响;C.除了SAHF,POPF,其它均不影响.D.除了控制标志位,其它均不影响三、判断题()31.段间调用的子程序必须由伪操作FAR说明为远过程。()32.PC机以位作最小寻址单位。()33.当SRC是立即数时,DST可以使用存储器寻址。()34.指定各个逻辑段偏移地址可以使用ORG伪指令。()35.LOOPE/LOOPZ是相等/为零时转移到标号,其退出条件是(CX)=0或ZF=0。()36.POPIP()37.设327FH和0BFFFH为有符号数的补码表示,则327FH<0BFFFH()38.多个模块间的符号交叉引用要用伪指令PUBLIC和EXTRN说明()39.MOVAX,VAR1-VAR2+100()40.ADD[SI],50四、程序分析题1.ADW1234HBDW5678HPUSHAPUSHBPOPAPOPB试回答:上述程序段执行后(A)=,(B)=2.分析下面程序段,MOVAL,200SARAL,1MOVBL,ALMOVCL,2SARAL,CLADDAL,BL试问程序段执行后(BL)=(AL)=3.STRINGDB‘ABCDEFGHIJ'MOVAH,01;从键盘输入字符1~9INT21HANDAL,0FHDECALXORAH,AHMOVBX,OFFSETSTRINGADDBX,AXMOVBL,[BX]MOVAH,02H;显示输出INT21H试回答:(1)上述程序段的功能是什么?(2)如从键盘输入字符‘4',程序段有什么结果?4.有如下程序:ANDAL,ALJZBRCH1RCRAL,1JZBRCH2RCLAL,1INCALJZBRCH3上述程序运行后,试回答:(1)当(AL)=时,程序转向BRCH1(2)当(AL)=时,程序转向BRCH2(3)当(AL)=时,程序转向BRCH35.下列程序段完成什么工作?DAT1DB30DUP(?)DAT2DB10DUP(?)┇MOVCX,10MOVBX,20MOVSI,0MOVDI,0NEXT:MOVAL,DAT1〔BX〕〔SI〕MOVDAT2〔DI〕,ALINCSIINCDILOOPNEXT6.下面程序段执行完以后,AL的内容是什么?MOVBX,00FFHANDBX,0FFFHORBX,0F0FHXORBX,00FFH7.执行下列指令后,AX寄存器中的内容是什么?STARTDW10H,20H,30H,40H,50HEE1DW3┇MOVBX,OFFSETSTARTADDBX,EE1MOVAX,〔BX〕8.试分析下面程序段的功能是什么?CMPAL,‘A’JCOTHERCMPAL,‘Z’+1JNCOTHERJMPLETTER┇OTHER:┇LETTER:┇五、程序填空题1.设AX,BX中的数一个为正数,一个为负数,下面程序段完成将正数送到PLW单元中存放,请将程序中所缺指令语句补上。TESTAX,8000HMOVPLW,BXJMPDONEK1:DONE:2.现有下列数据段:DATASEGMENTSTR1DB‘ABCDEFGHIJKL'COUNTEQU-STR1BUFDBCOUNTDUP(0)DATAENDS下面程序段是实现把STR1中所有字符逆向传送到BUF缓冲区(即STR1中第一个字符送到BUF的最后一个单元,STR1中最后一字符送到BUF的第一个单元)。试把程序中所空缺的指令填上。MOVSI,OFFSETBUF-1MOVDI,OFFSETBUFMOVCX,COUNT____LOOP:MOVSB____LOOPLOP或者()六、程序设计题1.编程序段计算SUM=∑ai=a1+a2++a20,已知a1a20依次存放在以BUF为首址i=1的数据区,每个数据占两个字节,和数SUM也为两个字节。(要求用循环结构编写,循环控制采用计数控制)。(此题勿需书写源程序格式,只需把试题要求的有关指令序列书写出来。)2.设在DAT单元存放一个-9~+9的字节数据,在SQRTAB数据区中存放了0~9的平方值,请用直接查表法编写一个子程序,在SQRTAB中查找出DAT单元中数据对应的平方值送SQR单元。并写出主程序的调用方式。数据段如下:DATASEGMENTDATDBXXHSQRTABDB0,1,4,9,81SQRDB?DATAENDS3.试编写出把DX、AX中的双字右移四位的程序段。4.定义一个数据区,它包含有23H,24H,25H和26H四个字符数据,把这个数据区复制20次,并显示出复制结果。汇编语言2005—2006学年第二学期期末考试复习题及参考答案一、填空1.十进制数369转换成二进制数为(101110001)2,转换成十六进制数为(171)16.2.计算机中的指令由(操作码)和(地址码)两部分组成。3.8086的地址总线有20根,寻址范围为(1M)字节。4.下一条将要执行的指令的地址存放在寄存器(指令指针寄存器)中。5.写出IBMPC机的三种子程序返回的指令(RET),(IRET),(IRETD)。6.汇编语言源程序需经过(汇编)程序汇编,(连接)程序连接才能生成可执行文件。7.存储器某单元的地址表示为2314H:4132H,则它的偏移地址=(4132),物理地址=(27272H)8.REP指令前缀与()指令配合使用。9.在显示器上查看和修改内存单元的内容可以使用DEBUG的(D)和(E)命令。10.(AL)=BFH,要求屏蔽第0,1两位,则要执行指令(ANDAL,3F);如果要求第0,1位变反,可使用指令(XORAL,3F)11.宏汇编适合于(程序短),(参数多)的子功能段使用;二、选择题1.设字长N=16,有符号数7AE9H的补码表示为(D)A.9EA7HB.76C4HC.8417HD.7AE9H2.比较有符号数3260H与0B425H的大小关系为(C)A.相等B.小于C.大于D.不能比较3.指令JMPWORDPTR[BX][DI]中转移的目标地址为(A)A.16dx(DS)+(BX)+(DI)B.16dx(ES)+(BX)+(DI)C.16dx(SS)+(BX)+(DI)D.16dx(CS)+(BX)+(DI)4.在指令MOVAX,[1000H]中,源操作数的寻址方式为(B)A.立即寻址B.直接寻址C.段内间接寻址D.寄存器寻址5.中断矢量表中存放的是(D)A.中断类型号B.断点地址C.中断服务程序D.中断服务程序入口地址6.8086的汇编语言指令系统中的条件转移指令可以使程序转移到(A)A.段内的任何地方B.距该指令偏移地址为-32768~+32767的地方C.距该指令偏移地址为-128~+127的地方.D.段外7.能定义ASCII码字符串的数据定义语句有(D)A.DB,DW,DD,DQ,DTB.DB,DW,DDC.DB,DWD.DB;8.若(AL)=87H,执行ADDAL,0F5H后,S,Z,C,O,P的状态为(C)A.SF=0,ZF=0,CF=1,OF=1,PF=0B.SF=1,ZF=0,CF=1,OF=0,PF=1C.SF=0,ZF=0,CF=0,OF=1,PF=0D.SF=1,ZF=0,CF=1,OF=1,PF=19.比较指令CMP(D)A.专用于有符号数比较B.专用于无符号数比较C.专用于串比较D.不区分比较的对象是有符号数还是无符号数10.数据传送指令对标志位的影响为(D)A.都不影响;B.都影响;C.除了SAHF,POPF,其它均不影响.D.除了控制标志位,其它均不影响三、判断题()31.段间调用的子程序必须由伪操作FAR说明为远过程。T()32.PC机以位作最小寻址单位。F()33.当SRC是立即数时,DST可以使用存储器寻址。F()34.指定各个逻辑段偏移地址可以使用ORG伪指令。T()35.LOOPE/LOOPZ是相等/为零时转移到标号,其退出条件是(CX)=0或ZF=0。T()36.POPIPF()37.设327FH和0BFFFH为有符号数的补码表示,则327FH<0BFFFHF()38.多个模块间的符号交叉引用要用伪指令PUBLIC和EXTRN说明T()39.MOVAX,VAR1-VAR2+100F()40.ADD[SI],50F四、程序分析题1.ADW1234HBDW5678HPUSHAPUSHBPOPAPOPB试回答:上述程序段执行后(A)=5678H,(B)=1234H2.分析下面程序段,MOVAL,200SARAL,1MOVBL,ALMOVCL,2SARAL,CLADDAL,BL试问程序段执行后(BL)=0E4H(AL)=0DDH3.STRINGDB‘ABCDEFGHIJ'MOVAH,01;从键盘输入字符1~9INT21HANDAL,0FHDECALXORAH,AHMOVBX,OFFSETSTRINGADDBX,AXMOVBL,[BX]MOVAH,02H;显示输出INT21H试回答:(1)上述程序段的功能是什么?根据从键盘输入的字符‘1’~‘9’,确定在显示器上显示STRING中第几个字符。(2)如从键盘输入字符‘4',程序段有什么结果?显示器显示字符‘D’4.有如下程序:ANDAL,ALJZBRCH1RCRAL,1JZBRCH2RCLAL,1INCALJZBRCH3上述程序运行后,试回答:(1)当(AL)=(AL)=0时,程序转向BRCH1(2)当(AL)=(AL)=1时,程序转向BRCH2(3)当(AL)=(AL)=-1时,程序转向BRCH35.下列程序段完成什么工作?把DAT1+20存储单元开始的10个字节搬到DAT2开始的连续10个存储单元中DAT1DB30DUP(?)DAT2DB10DUP(?)┇MOVCX,10MOVBX,20MOVSI,0MOVDI,0NEXT:MOVAL,DAT1〔BX〕〔SI〕MOVDAT2〔DI〕,ALINCSIINCDILOOPNEXT6.下面程序段执行完以后,AL的内容是什么?0F00HMOVBX,00FFHANDBX,0FFFHORBX,0F0FHXORBX,00FFH7.执行下列指令后,AX寄存器中的内容是什么?3000HSTARTDW10H,20H,30H,40H,50HEE1DW3┇MOVBX,OFFSETSTARTADDBX,EE1MOVAX,〔BX〕8.试分析下面程序段的功能是什么?判断AL的内容,若为‘A’~‘Z’的大写字母时,程序转LETTER处理,否则转OTHER处理CMPAL,‘A’JCOTHERCMPAL,‘Z’+1JNCOTHERJMPLETTER┇OTHER:┇LETTER:┇五、程序填空题1.设AX,BX中的数一个为正数,一个为负数,下面程序段完成将正数送到PLW单元中存放,请将程序中所缺指令语句补上。TESTAX,8000HJEK1或JZK1MOVPLW,BXJMPDONEK1:MOVPLW,AXDONE:2.现有下列数据段:DATASEGMENTSTR1DB‘ABCDEFGHIJKL'COUNTEQU-STR1BUFDBCOUNTDUP(0)DATAENDS下面程序段是实现把STR1中所有字符逆向传送到BUF缓冲区(即STR1中第一个字符送到BUF的最后一个单元,STR1中最后一字符送到BUF的第一个单元)。试把程序中所空缺的指令填上。MOVSI,OFFSETBUF-1MOVDI,OFFSETBUFMOVCX,COUNT__CLD__LOOP:MOVSB__SUBSI,2__LOOPLOP或者(STD/ADDDI,2)六、程序设计题1.编程序段计算SUM=∑ai=a1+a2++a20,已知a1a20依次存放在以BUF为首址i=1的数据区,每个数据占两个字节,和数SUM也为两个字节。(要求用循环结构编写,循环控制采用计数控制)。(此题勿需书写源程序格式,只需把试题要求的有关指令序列书写出来。)程序段:MOVAX,0MOVBX,OFFSETBUFMOVCX,20LOP:ADDAX,[BX]INCBXINCBXLOOPLOPMOVSUM,AX2.设在DAT单元存放一个-9~+9的字节数据,在SQRTAB数据区中存放了0~9的平方值,请用直接查表法编写一个子程序,在SQRTAB中查找出DAT单元中数据对应的平方值送SQR单元。并写出主程序的调用方式。数据段如下:DATASEGMENTDATDBXXHSQRTABDB0,1,4,9,81SQRDB?DATAENDSSTACL1SEGMENTPARASTACKDW20HDUP(?)STACK1ENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK1START:MOVAX,DATAMOVDS,AX┇CALLSUBROT┇MOVAH,4CHINT21HSUBROTPROCPUSHAXPUSHBXLEABX,SQRTABMOVAL,DATTESTAL,80HJNSNEXTNEGALNEXT:XLATSQRTABMOVSQR,ALPOPBXPOPAXRETSUBROTENDPCODEENDSENDSRART3.试编写出把DX、AX中的双字右移四位的程序段。MOVCL,04SHRAX,CLMOVBL,DLSHRDX,CLSHLBL,CLORBL,AH4.定义一个数据区,它包含有23H,24H,25H和26H四个字符数据,把这个数据区复制20次,并显示出复制结果。DATASEGMENTPATTERNDB23H,24H,25H,26HDISPLAYDB80DUP(‘’),‘$’DATEENDSCODESEGMENT┇CLDLEASI,PATTERNLEADI,DISPLAYMOVCX,80REPMOVSBMOVAH,09HLEADX,DISPLAYINT21HRETCODEENDS
推荐于2018-03-26
展开全部
当然不一样。
[0100H]+2 取0100H地址的值+2
[0100H+2] 取0100H+2地址的值。
[0100H]+2 取0100H地址的值+2
[0100H+2] 取0100H+2地址的值。
追问
0100H地址的值+2是01002啊,0100H+2地址的值不也是01002吗?
追答
0100H 存 0X1234
0102H 存0xabcd
那么 [0100H]+2 = 0x1234+2 =0x1236
[0100H+2] = 0xabcd
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
以我的经验,8086体系下:
MOV AX,[0100H]+2可能会报错的,如果不报错,那么肯定解释为MOV AX,[0100H+2],因为没有一条指令可以实现取0100H地址的值,再加2赋给AX
MOV AX,[0100H]+2可能会报错的,如果不报错,那么肯定解释为MOV AX,[0100H+2],因为没有一条指令可以实现取0100H地址的值,再加2赋给AX
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2016-07-19
展开全部
ax是指ax这个累加寄存器如:movax,5------------------------------------------------------------------------------------(ax)一般只会出现在书上或者考试中吧,是指ax里面的内容是什么如:movax,5(ax)=5-------------------------------------------------------------------------------------[ax]是指用寄存器间接寻址方式获得数据如:内存单元0032H中有数据05Hmovax,0032Hmovbx,[ax]则(bx)=5-------------------------------------------------------------------------------------
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询