• 汇编——模拟试卷二


    1. 指令MOV AX,COUNT[SI],它源操作数的寻址方式是(B)。

    A. 直接寻址     B. 寄存器相对寻址    C. 寄存器间接寻址     D. 基址变址寻址

    2. 下列4 条指令中,错误的指令是( )。

    A. SHR AX,1      B. MOV AX,ES: [DX]

    C. SUB CX,AX   D. ADD BX,[SP+DI]

    1 [DX]不能用来内存单元的寻址
    View Code

    3. 在IBM PC 微机中,如果某一内存单元的物理地址是7E7F6H,那么它的逻辑地址是(B):DDF6H。

    A. 70B0H     B. 70A0H    C. 70C0H     D. 7E76H

    4.MOV AL,12H

     ADD AL,OFFH

    上述两条指令执行后,CF 和OF 的值是(A)。

    A. CF=1 OF=0 B. CF=1 OF=1

    C. CF=0 OF=1 D. CF=0 OF=0

    1 12H+0FFH
    2 产生进位 ==> CF=1
    3 没有产生溢出 ==> OF=0
    View Code

    5. 使用LINK 连接命令,执行后可生成文件的扩展名为(B)。

    A. COM   B. EXE   C. OBJ   D. LST

    6. 累加器AL 中的内容为81H,CMP AL,执行54H 指令后,累加器AL 中的内容为(C)。

    A. 23H   B. 00H  C. 81H   D. D5H

    1 虽然我没看懂这道题要表达的意思,但CMP是判断指令,只会修改flag寄存器的内容,别的寄存器(AL...)不会修改的
    View Code

    7. 在串操作指令前使用重复前缀指令REPE,终止串的重复操作条件是(C)。

    A. CX=0 且ZF=0     B. CX=0 且ZF=1    C. CX=0 或ZF=0     D. CX=0 或ZF=1

    8. 执行下列指令后,正确的结果是(B)。

    MOV AL,100

    MOV BL,-1

    A. AL=100H,BL=01H    B. AL=64H,BL=0FFH    C. AL=64H,BL=81H     D. AL=100H,BL=0FFH

    1 100 ==> 64H
    2 
    3 -1 ==> FFH
    View Code

    9. 在循环程序中使用LOOP 指令作为循环结束的判断,其计数值一般应放的寄存器是(B)。

    A. DX   B. CX  C. BP   D. IP

    10. 在汇编语言程序设计中,伪指令OFFSET 的含义是回送变量或标号的(B)。

    A. 段地址值   B. 偏移地址值  C. 物理地址值   D. 操作数

    11. 指令指针寄存器IP 用于存放代码段中的偏移地址,在程序执行过程中,它始终指向(B)。

    A. 上一条指令的首地址     B. 下一条指令的首地址

    C. 正在执行指令的首地址      D. 需计算有效地址后才能确定的地址

    12. 下面的数据传送指令中,错误的操作是(D)。

    A. MOV SS:[BX+DI],1000H

    B. MOV DX,1000H

    C. MOV WORD PTR[BX],1000H

    D. MOV DS,2000H

    1 无法直接给段寄存器赋值
    View Code

    13. 为了使执行串操作指令时地址按减量方式处理,应使用的指令是(A)。

    A. STD     B. STI    C. CLD     D. CLI

    14. 执行下列指令序列后,正确的结果是(B)。

    MOV AL,78H  ; AL=78H

    MOV BL,58H  ; BL=58H

    ADD AL,BL    ; AL=AL+BL=D0H

    DAA

    A. AL=36H CF=1 AF=1     B. AL=36H CF=1 AF=0

    C. AL=36 CF=1 AF=0       D. AL=C6H CF=1 AF=1

     1 DAA指令:
     2 if (al的低4位 > 9 || af=1){
     3     al += 6
     4     af = 1
     5 }if(al高4位 > 9 || cf=1){
     6     al += 60
     7     cf = 1
     8 }else{
     9     af = 0
    10     cf = 0
    11 }
    12 
    13 
    14 AF为辅助进位标志,表示运算中第3位是否向第4位有进位或借位
    View Code

    15. 对寄存器AX 的内容乘以4 的正确指令序列是(B)。

    A. SHR AX,1      B. SHL AX,1

        SHR AX,1        SHL AX,1

    C. ROL AX,1        D. RCR AX,1

        ROL AX,1        RCR AX,1

    16. 在下列指令的表示中,不正确的是(C)。

    A. MOV AL, [BX+SI]       B. JMP SHORT DON1

    C. DEC [BX]             D. MUL CL

    17. 若AX=3500H,CX=56B8H,当执行AND AX,CX 指令后,AX 的值是(A)。

    A. 1400H   B. 77F8H   C. 0000H   D. 0FFFFH

    1 AX = 0001 0100 0000 0000
    2 CX = 0101 0110 1011 1000
    3 
    4 AND AX,CX
    5 
    6 AX = 0001 0100 0000 0000 ==> 1400H
    View Code

    18. 下面对伪指令语句的说明,正确的是(A)。

    A. 由汇编程序在汇编过程中执行的指令是伪指令

    B. 当汇编结束后,目标程序中仍保留有伪指令

    C. 伪指令是程序运行阶段完成其功能

    D. 汇编程序将伪指令翻译成机器码

    1 伪指令在编译的时候并不生成代码
    View Code

    19. 用MOV 指令将十进制数64 以组合型BCD 码格式送入AX,正确使用的指令是( )。

    A. MOV AX,0604     B. MOV AX,0064H      C. MOV AL,0604H     D. MOV AL,0064

    1 64d的组合BCD码是 0110 0100b =64h
    2 用指令 MOV AX, 64h
    View Code

    20. 执行XLAT 指令时,要将表的首地址和偏移地址分别存放的寄存器是( )。

    A. BX、AL     B. AL、BX    C. AX、BL     D. BL、AX

    1 xlat指令:操作是以DS:[BX+AL]为地址,提取存储器中的一个字节再送入AL。
    View Code

    二、填空题(每空1 分,共5 分)

    名词解释:请将1~3 小题的叙述与下面的词语联系起来,括号内填入对应的A,B,C。

    1. 以后进先出方式工作的存储空间是(B)。

    2. 告诉计算机要执行的操作(一般还要指出操作的地址),在程序运行时执行的是(C)。

    3. 保存逻辑段起始地址的寄存器,IBM PC 机有四个:CS、DS、SS、ES 是(A)。

    词语:A. 段寄存器   B. 堆栈   C. 指令

    4. 假设(SS)=2250H,(SP)=0140H,如果在堆栈中存入5 个数据,则堆栈的物理地址为  22636H   

    1 往栈里添加数据,是先将sp=sp-2,然后在将数据送入栈中
    2 
    3 22500+0140-A=22636H
    View Code

    5. 指令MOV AX,VAR[BX]属于    寄存器相对    寻址。

     1 [BX,SI,DI,BP]
     2 
     3 [BX+SI]...
     4 
     5 idea[BX]...
     6 
     7 [BX][BP]....
     8 
     9 [BX].idea...
    10 
    11 [BX].idea[SI]
    View Code

    三、简答题(每题2 分,共6 分)

    1. 下列语句在存储器中分别为变量数据区分配多少个字节单元?

    (1)VAR1 DD 10        ==> 双字 4bytes

    (2)VAR2 DW 4 DUP(?),2   ==> 10bytes

    2. 在指令系统中,段内、段间返回均为RET 指令。试回答:

    (1)执行段内返回RET 指令时,执行的操作是 。   ==> 将ip从栈中pop出来,然后返回

    (2)执行段间返回RET 指令时,执行的操作是 。   ==> 将ip,cs依次从栈顶取出

    3. 已知指令ARRAY DB 2 DUP(1 DUP(3)),则:

    指令 MOV AX,Length ARRAY,执行后,AX=   2  

    指令 MOV AX,SIZE ARRAY,执行后AX=   2  

    四、程序分析题(每小题5 分,共35 分)

    1. MOV AX,00FFH    ; ax=00ffh=0 0 1111 1111

    AND AX,0FFFH      ; 0 1111 1111 1111  ax=00ffh

    OR AX,0F0FH      ; ax=0fffh

    XOR AX,00FFH         ; 0f00h

    问:上述程序段执行后,AL 的内容是什么?    (AL)=00H

    2.  DATA1 DB 500 DUP(?)  ; 0~499

      DATA2 DB 100 DUP(?)  ; 500~599

    MOV CX,100          ; cx=100

    MOV BX,400          ; bx=400

    MOV SI,0             ; si=0

    MOV DI,0             ; di=0

       LOP: MOV AL,DATA1 [BX][SI]  ; al=?

        MOV DATA2 [DI],AL

        INC SI

        INC DI

        LOOP LOP

    问:上述程序段执行后完成的功能是什么?  将DATA1的后100个数据,复制到DATA2中

    3. MOV AX,0012H

    MOV BX,0034H

    MOV CL,8

    ROL AX,CL

    OR AX,BX

    问:上述程序段执行后,AX 寄存器的内容是什么?    1234H

    4. 已知(AX)=0A5C6H,(CX)=0F03H,CF=1

    RCL AX,CL

    AND AH,CH

    RCR AX,CL

    问:上述三条指令执行完后,(AX)= A1C6H,CF=1 。

    5.  SUB AL,AH  ***

      DAS

    若指令执行前,(AL)=86,(AH)=07;则指令执行后,(AL)=79H ,CF=0 ,AF= 1。

    1 因为已经是十进制的格式了,所以不用执行DAS指令
    2 
    3 79 ==> 0111 1001 ==>79H
    View Code

    6.  ORG 0050H

    DA1 DW 56H,78H  ; 50~53

    DA2 EQU $ -DA1     ; 常量,不占储存空间

    DA3 DB?      ; 54

    LEA BX,DA3

    MOV CX,DA2

    MOV AX,DA2 SHR 1

    问:(AX)= 0002h,(BX)=0054h ,(CX)= 0004h

    7.  MOV AL,11H

         XOR AL,3

    问: (1)上述程序段执行后完成什么功能?    取反AL 寄存器的第0 位和第1 位。

    (2)程序段执行后AL 寄存器的内容是什么?    (AL)=12H

    五、程序填空题(每小题6 分,共12 分)

    1. 设已定义数据区如下:

    DATA SEGMENT

    DAX DB XXH

    DAY DB

    DATA ENDS

    下列程序段完成功能:判断变量DAX 的值是否大于等于0。若大于等于0,则将DAY 单元置为0FFH;否则,将DAY 单元的值置为00H。请在空白处填上适当的指令(每一空白处只填一条指令)。

     1 MOV AL,DAX
     2 
     3 CMP AL,0
     4 
     5 __jnb GRE__
     6 
     7 MOV AL,0
     8 
     9 __jmp LEE__
    10 
    11 GRE: MOV AL,OFFH
    12 
    13 LEE: MOV DAY,AL

    2. 为使DA2 子单元的值为50H,等号语句NUM 的空白处应填多少?

    ORG 34H

    NUM=  0Ch        

    DA1 DW 10H$+20H30H$+40H  ; 34~41

    DA2 DW offset DA1+NUM+10H

    六、编程题(共22 分)

    1. 试编写程序段:要求键盘输入的小写字母用大写字母显示出来(5 分)。

     1  START:MOV AH,01h
     2         INT 21H        ; 中断调用,接受键盘输入,存放到al中
     3         
     4         CMP AL,'a'
     5         JB STOP
     6         CMP AL,'z'
     7         JA STOP
     8         
     9         SUB AL,20H        ; -20 ==> 大写
    10         MOV DL,AL        ; 将结果放到dl寄存器中
    11         
    12         MOV AH,02h        ; 输出dl寄存器的内容
    13         INT 21H
    14         
    15         JMP START
    16         
    17  STOP: RET

    2. 假设数据区定义如下:

    DATA SEGMENT

      ARRAY DB THIS IS MASM PROGRAM’,‘$

    DATA ENDS

    编写程序段,将以ARRAY 为首地址的字符串显示输出(5 分)。

    1 MOV AX,DATA
    2 MOV DS,AX
    3 4 MOV DX,OFFSET ARRAY(或LEA ARRAY)
    5 MOV AH,09H        ; DOS调用中的09号功能,就是在屏幕上显示字符串
    6 INT 21H

    3. 假设在以ARRAY 为首地址的存储区中存放10 个带符号的字节数。试编制程序,统计出其中不大于10 的元素的个数(12 分)。

     1 ASSUME CS:CODE,DS:DATA
     2 
     3 DATA SEGMENT
     4     ARRAY DB XX,XX…XX ;存放10 个带符号的数。
     5     NUM DB ?
     6 DATA ENDS
     7 
     8 CODE SEGMENT
     9 
    10  START:MOV AX,DATA
    11         MOV DS,AX
    12         
    13         LEA SI,ARRAY    ; mov si,offset array
    14         XOR AL,AL        ; mov al,0
    15         MOV CX,10
    16  LOP1: MOV AL,[SI]
    17         CMP AL,10
    18         JGE LOP2        ; jnb lop2 大于等于跳转到lop2
    19         
    20         INC BL            ; 否则将bl+1
    21         
    22  LOP2: INC SI
    23         LOOP LOP1
    24         MOV NUM,BL
    25         
    26         MOV AH,4CH
    27         INT 21H
    28         
    29 CODE ENDS
    30 END START
  • 相关阅读:
    不等高cell的搭建(一)
    重复点击主界面(TabBar)按钮刷新界面--点击状态栏回到顶部
    如何学习新框架(保存图片到相册)
    上下拉刷新
    MVVM框架思想
    不等高cell的tableView界面搭建
    UITabBarController底层实现
    封装业务类
    RSS阅读器
    构造队列
  • 原文地址:https://www.cnblogs.com/x54256/p/8094787.html
Copyright © 2020-2023  润新知