2006年1月汇编语言考试题目

作者:不详  来源:希赛自考学院  http://www.csai.cn  2006年1月17日

    一、单项选择题 ( 本大题共 20 小题,每小题 1 分,共 20 分 )
     在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
     1 .为在一连续的存储单元中,依次存放数据 41H , 42H , 43H , 44H , 45H , 46H ,可选用的数据定义语句是(   )
     A . DB 41 , 42 , 43 , 44 , 45 , 46 B . DW 4142H , 4344H , 4546H
     C . DW ‘AB' , ‘CD' , ‘EF' D . DW ‘BA' , ‘DC' , ‘FE'
     2 .在同一程序段中,定义下面伪指令,正确的是(   )
     A . PORT EQU AL B . CONT EQU 3500H AND OFFH
     PORT EQU 2000H
     C . STRl DD‘ABCD' D . STR2 DW‘ABCD'
     3 . DA2 DB‘AB' , ‘CD'
      ┇
     MOV AX , WORD PTR DA2+1
     上述语句执行后 AX 中的值是(   )
     A . ‘AD' B . ‘BC'
     C . ‘DA' D . ‘CB'
     4 .下列数据定义语句中可实现留空 20H 个字节存储单元的是(   )
     A . DB 20 DUP(?) B . DW 20H DUP(?)
     C . DB 10H DUP(4 DUP(?)) D . DD 08H DUP(?)
     5 . DATA  SEGMENT

    VAR1  DB 12H,34H
     VAR2 DB 10H DUP(O)
     ADR1 DW VAR1,VAR2
     DATA ENDS
     为使ADR1+2字存储单元中内容为0030H,上述方框中应选用的语句是(   )
     A.ORG 30H B.DB 2EH DUP(0)
     C.DB 30H DUP(0) D.ORG $+30H
     6.如某存储器分段时,表示偏移地址是18位二进制代码,那么一个段最多的存储单元数是(   )
     A.32K字节 B.32K字
     C.64K字节 D.64K字
     7.下列寄存器中用来指示堆栈中任意数据区的偏移地址的是(   )
     A.BX B.BP
     C.SI D.DI
     8.下列指令中有语法错误的是(   )
     A.PUSH AX B.PUSH [20H+SI+BX]
     C.POP CS D.PUSH CS
     9.下面有语法错误的指令是(   )
     A.LDS BL,VAR[SI] B.LEA BX,VAR[SI]
     C.LES DI,VAR[BX] D.LEA DI,VAR[BP]
     10.执行PUSH BP指令时,目的操作数的物理地址表达式是(   )
     A.16*SS+BP B.16*DS+BP
     C.16*CS+IP D.16*SS+SP
     11.把BL中的数据输出到端口8CH中正确指令是(   )
     A.OUT 8CH,BL B.IN 8CH,BL
     C.MOV AL,BL D.MOV AL,BL
     OUT 8CH,AL  IN 8CH,AL
     12.结果为零的条件转移指令,其测试条件是(   )
     A.ZF=1 B.ZF=0
     C.SF=l D.SF=0
     13.下面程序段完成测试DA-BYTE字节单元中数是否为负数,若是则将全l送DH中,否则全0送DH中,那么程序段中方框里应填的语句是
     MOV CH,0
     TEST DA-BYTE,80H

    MOV CH,0FFH
     ZERO:MOV DH,CH(   )
     A.JNZ ZERO B.JS ZERO
     C.JZ ZERO D.JC ZERO
     14.汇编源程序时,出现语法错误的语句是(   )
     A.MOV [BX+SI],BX B.MOV CL,[BP+DI]
     C.MOV CS,AX D.MOV DS,AX
     15.设SP初值为3050H,执行指令PUSH BX后,SP的值是(   )
     A.304FH B.304EH
     C.3048H D.3049H
     16.下列指令执行后影响CF值的是(   )
     A.DEC B.XCHG
     C.LEA D.SHL
     17.串操作指令中,每次操作后使SI/DI为减量应设置(   )
     A.DF=0 B.TF=1
     C.DF=1 D.TF=0
     18.设AL=57H,BL=24H,执行指令SUB AL,BL后,寄存器内容为(   )
     A.AL=57H,BL=24H B.AL=33H,BL=24H
     C.AL=57H,BL=33H D.AL=33H,BL=0
     19.设CL=8,AL=0C8H,执行SAR AL,CL后,AL中的数据是(   )
     A.0FFH B.80H
     C.00H D.0FEH
     20.已知BX=028AH,SI=0294H,(DS:051EH)=5432H。执行语句LEA BX,[BX+SI]后,BX中的内容是(   )
     A.051EH B.5423H
     C.1E05H D.3254H

    二、填空题 ( 本大题共 6 小题,每小题 1 分,共 6 分 )
     21 .指令指针寄存器 IP 是用于存放代码段的 ______________ 。
     22 .与 LEA BX , VAR 等效的指令是 ______________ 。
     23 .要从一个字符串中找出一个 AL 中指定的字符,可选用 ______________ 指令实现。
     24 . SAL 指令在左移后,如果移位前后符号位有变化,那么标志位 ______________ 置 1 。
     25 .假设某数据段段名为 DATA , VAR 是该段中的一个变量,若实现将该段的段地址送入 AX 中,可用 “MOV AX , DATA” 语句实现,也可以用 ______________ 语句实现。
     26 .设 BX=1152H ,偏移量 D=3568H ,那么指令 “ADD D[BX] , AL” 中目的操作数的有效地址 EA=______________ 。

    三、简答题 ( 本大题共 4 小题,每小题 2 分,共 8 分 )
     27 .下列语句是否有语法错误,若有,指出是哪一条及是什么错误。
     ①Da1 DB‘ABC'
     ②DA2 DD‘ABC'
     28 .  8086 / 8088 指令的立即寻址方式的操作数存放在什么段内 ? 寄存器间接寻址方式 [BX] 的操作数在什么段内 ?
     29 .下列指令中,源操作数是什么寻址方式 ? 操作数的物理地址如何表达 ?
     MOV AX , 10H [DI]
     MOV DX , [BX][SI]
     30 .下列语句在存储器中分别为变量分配多少个字节 ?
     ①AD1 DW 10H DUP(?) , 10H
     ②COUNT EQU 100
     ③AD2 DB 3 DUP(2 DUP (3))
     ④AD3 DD COUNT DUP(?)

    四、程序分析题 ( 本大题共 6 小题,每小题 6 分,共 36 分 )
     31 . BUF1 DB -1 , 2 , -3 , 4 , -5 , 6 , -7 , 8 , -9
     BUF2 DB 9 DUP(O)
          ┇
     XOR BL , BL
     MOV SI , O
     MOV CX , 9
     LOP : MOV AL , BUF1[SI]
     TEST AL , 80H
     JZ K
     INC BL
     NEG AL
     K : XOR AL , 01H
     MOV BUF2[SI] , AL
     INC SI
     LOOP LOP
      ……
     ① 写出程序运行后 BUF2 各字节中的数据
     ②BL=______________
     32 . DD2 DB 0 , l , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9
     ┇
     LEA SI , DD2
     LEA DI , DD2+1
     MOV CX , 5
     LOP : MOV AL , [SI]
     XCHG AL , [DI]
     MOV [SI] , AL
     ADD SI , 2
     ADD DI , 2
     DEC CX
     JNZ LOP
     上述程序段执行后,回答:
     ① 该程序段完成什么功能 ?
     ②DD2 开始的 l0 个字节数应是什么值 ?
     33 .    XOR BL, BL
     NEG BL
     JZ NEXT
     ADD BL, 5
     JMP DONE
     NEXT : NOT BL
     DONE : ……
     程序段执行后, BL=______________ , CF=______________
     34 . R1 DB 246
     ┇
     XOR BH , BH
     MOV AL , R1
     MOV DL , 10
     LOP : CMP AL , 0
     JBE NEXT
     MOV AH , 0
     DIV DL
     MOV BL , AH
     PUSH BX
     JMP LOP
     NEXT : ……
        ┇
     上述程序段执行后共向堆栈压入 ______________ 个数,按压入的先后次序该数列为 ______________ 。
     35 . VAR1 DB 56H , 76H , 87H , 98H , 0A9H
        ┇
     MOV CX , WORD PTR VAR1
     AND CX , 0AH
     MOV BX , WORD PTR VAR1+3
     SAR BX , CL
     程序段运行后, BX=______________  , CX=______________ 。
     36 .已知 AX=1234H
     MOV BX , AX
     NOT BX
     XOR BX , AX
     上述程序段执行后, BX=______________ 。如把 XOR 指令改为 OR 指令,那么程序段执行后, BX=______________ 。

    五、程序填空题 ( 本大题共 2 小题,每小题 6 分,共 12 分 )
     37 .下面程序段实现把 DA1 字单元内容取绝对值后送到 DA2 中,请在横线处各填一条指令。
     DA1 DW ××××
     DA2 DW ?
       ┇
     MOV AX , DA1
     ①______________
     JNS K
     ②______________
     K : MOV DA2 , AX
     38 .下面程序段完成用串指令在 DA1 开始的 26 个字节单元中依次存放 A—Z 的 ASCII 码,在 DA2 开始的 26 个字节单元中依次存放 Z—A 的 ASCII 码,请在横线处各填一条指令。
     DA1 DB 26 DUP(?)
     DA2 DB 26 DUP(?)
       ┇
     LEA DI , DA1
     MOV AL , ‘A'
     MOV CX , 26
     CLD
     LOP1 : STOSB
     ①______________
     LOOP LOP1
     MOV CX , 26
     LOP2 : ②______________
     STOSB
     LOOP LOP2

    六、编制程序题 ( 本大题共 2 小题, 39 小题 6 分, 40 小题 12 分,共 18 分 )
     39 .( 6 分)试编制一程序段,判断 CX 和 DX 中第 7 , 15 位是否完全对应相同。如完全相同, CF 置 1 ,否则 CF 置 0 。
     40 .( 12 分)试编写一个源程序实现两个一位八进制数相加,两个八进制数分别存放在 NUM1 , NUM2 字节单元中,相加结果存放在 RESULT1 (低位)和 RESULT2 (高位)中,数据段分配如下:
      DATA SEGMENT
      NUM1 DB X
      NUM2 DB Y
      RESULT1 DB 0
      RESULT2 DB 0
      DATA ENDS