zoukankan      html  css  js  c++  java
  • 汇编——模拟试卷三

    一、单项选择题(每小题1 分,共20 分)

    1. 设段地址和偏移地址是3F4BH : 00C7H,那么它所对应存储单元中的物理地址是(C)。

    A. 3F4B7H B. 3F598H

    C. 3F577H D. 3EB76H

    2. 在下列段寄存器中,堆栈段寄存器是(D)。

    A. ES B. CS

    C. DS D. SS

    3. 下列汇编语言指令中,正确的指令是(B)。

    A. MOV [BX] [BP],AX B. AND DH,DL

    C. ADD [SI],DA_ BYTE D. LEA DS,40 [SI]

    4. 下面指令执行后,变量DA_BYTE 中的内容是(C)。

    DA_WORD DW AC05H

    DA_BYTE DB 0FAH

    MOV AL,BYTE PTR DA_WORD

    SUB DA_BYTE,AL

    A. 0EAH B. 0FAH

    C. 0F5 D. 00H

    5. 设数据段中已有:

    DA1 DB 12H,34H

    DA2 DW 56H,78H

    下面有语法错误的语句是( )。

    A. MOV DA1+2,AX     B. ADR DW DA1

    C. MOV BYTE PTR DA2+1,AL D. MOV WORD PTR DA1+1,AX

    1 不可能把一个值赋给表达式。也许应改为:MOV [DA1+1],AX
    View Code

    6. 若(AX)=2000H,(BX)=0050H,(20050H)=12H,(20051H)=34H,执行MOV AX,[BX]指令后,AX 寄存器中的内容是(D)。

    A. (AX)=0050H B. (AX)=0012H

    C. (AX)=1234H D. (AX)=3412H

    7. 在执行PUSH [BX]指令寻找目的操作数时,段地址和偏移地址分别是(B)。

    A. 无段地址和偏移地址     B. 在DS 和BX 中

    C. 在ES 和BX 中       D. 在SS 和BP 中

    8. 已定义DA_WORD DW 50 DUP(0),则指令MOV CX,SIZE DA_WORD 汇编后的等效指令是(B)。

    A. MOV CX,50     B. MOV CX, 100

    C. MOV CX,200     D. MOV CX,100 DUP (0)

    9. 完成将带符号数AX 的内容除以2 的正确指令是(答案错了)。

    A. RCR AX,1 B. ROR AX,1

    C. SHR AX,1 D. SAR AX,1

    1 sar是保留符号位,把剩下的二进制位向右移一位(原最低位丢弃)
    2 把n进制数右移1位就相当于原数除以n取整,
    3 比如十进制数123,右移一位是12("3"被丢弃),而123/10=12
    View Code

    10. 设BL=40H,SI=0600H,DS=3000H,(30600H)=0C0H,CF=1。执行SBB BL,[SI]后,正确的结果是(C)。

    A. BL=5FH,SF=l,CF=1     B. BL=60H,SF=1,CF=0

    C. BL=5FH,SF=0,CF=1     D. BL=60H,SF=0,CF=0

    11. 设SP =1FFD,下列指令执行后,SP 寄存器的内容是(C)。

    PUSH BX

    POPF

    A. 1FFB B. 1FFF

    C. 1FFD D. 2000

    12. 下面指令执行后,改变AL 寄存器内容的指令是(D)。

    A. CMP AL,BL B. OR AL,AL

    C. TEST AL,BL D. AND AL,BL

    13. INC BYTE PTR [BX]指令中的操作数的数据类型是(C)。

    A. 双字 B. 字

    C. 字节 D. 四字

    14. 用指令的助记符、符号地址、标号和伪指令、宏指令等书写程序的语言称为(A)。

    A. 汇编语言 B. 高级语言

    C. 机器语言 D. 低级语言

    15. 完成将累加器AX 清零,下列指令中错误的指令是(D)。

    A. XOR AX,AX B. SUB AX,AX

    C. AND AX,00H D. OR AX,00H

    16. 下面各组伪指令中,使用错误的是(C)。

    A. STACK_SEG SEGMENT‘STACK’

    B. SEGMENT‘CODE’

    C. MAIN_PROC PROC FAR

    MAIN_PROC NEDP

    END MAIN_PROC

    D. MYDATA SEGMENT‘DATA’

    ENDS

    17. 在8086/8088 系统中,存储器是分段组织的,每段最大字节的长度是(C)。

    A. 8K B. 16K

    C. 64K D. 1M

    18. 设(AX)=0A8H,(CL)=3,CF=1,执行RCL AX, CL 指令后,AX 寄存器的内容是(B)。

    A. 0545H B. 0544H

    C. 0547H D. 00B5H

    19. 已知DS=2000H, BX=1000H,COUT=0020H,SI=6D50H,(21020)=1080H,(21022)=4000H,则执行指令LDS SI,COUT [BX]后,SI、DS 寄存器的内容分别是(C)。

    A. SI=6D50H,DS=2000H B. SI=1080H,DS=2000H

    C. SI=1080H,DS=4000H D. SI=6D50H,DS=1080H

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

    MOV AL,81H

    ADD AL,AL

    SBB AL,AL

    A. AL=01H B. AL=10H

    C. AL=00H D. AL=0FFH

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

    名词解释:请将各小题的叙述与下面的词语联系起来,在括号内填上对应的A,B,C,D,E。

    1. 保存当前栈顶地址的寄存器是(D)。

    2. 惟一代表存储空间中每个字节单元的地址是(C)。

    3. 能被计算机直接识别的语言是(E)。

    4. 记录指令操作结果的标志:OF、SF、ZF、AF、PF、CF 是(A)。

    5. 由汇编程序在汇编过程中执行的指令是(B)。

    词语:A. 状态标志   B. 伪指令  C. 物理地址   D. SP  E. 机器语言

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

    1. 已知在数据段中定义的数据如下:

    NAME DB ‘TOM’

       DB 20

       DB ‘STRING’

    请指出下列指令是否正确。若不正确,错在哪里?

    __不正确,数据类型不匹配__

    MOV AX,NAME

    __前两条指令正确,第三条数据类型不匹配。__

    MOV BX,4×3

    MOV SI,7

    MOV AX,NAME [BX][SI]

    2. 下列两条语句有何区别?  X 不能多次赋值,Y 可以多次赋值。

    X EQU 1000H

    Y=1000H

    3. 有符号定义语句如下:

    ARRAYI DB 3,6,9,‘123’  0~5

    ARRAY2 DB 0  6

    L EQU ARRAY2-ARRAY1

    问L 的值是多少?  L=6

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

    1. 设寄存器AL=45H,BL=76H,CL=85H

    XOR AL,0FH

    AND BL,0FH

    OR CL, 0FH

    执行上述指令序列后,AL=4AH ,BL=06H ,CL=8FH 。

    2. 下列语句执行后,AX 寄存器的内容是多少?

    ARRAY DW 10,20,30,40,50

    ENTRY DW 3

    MOV BX,OFFSET ARRAY

    ADD BX,ENTRY

    MOV AX,[BX]    5040H

    3. 现有程序段如下:

    MOV AX,01H

    MOV BX,02H

    MOV CX,03H

    LOP:INC AX

    ADD BX,AX

    SHR AX,1

    LOOP LOP

    上述程序段执行后AX、BX 寄存器的值分别是多少?  (AX)=1,(BX)=8

    4. 已知(SP)=2000H,(SS)=5000H,(52000H)=4500H,(DS)=4000H,(BX)=1200H,则POP [BX]指令执行完后,(SP)=2002H ,(41200H)= 4500(一个字的内容)。

    5. 已知AL=35H,DL = 29H

    执行:

    ADD AL,DL

    DAA

    上述程序段执行后,AL= 64h,CF= 0。

    6. 设AX=6FF8H,CF=1

    MOV DX,80

    XOR DH,0FFH

    SBB AX,DX

    上述程序段执行后,(AX)=7078h ,CF=1 。

    7. 设:

    XOR AX,0

    MOV BX,1

    MOV CX,10

    LOP: ADD AL,BL

    INC BL

    INC BL

    LOOP LOP

    问: (1)该程序完成的功能是什么?  完成的功能是求 10 个奇数的累加和。

    (2)程序执行后(AX)=100 。

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

    1. 已知数据段定义如下:

    DATA SEGMENT

       ORG 20H  

      DA1 DB 12,34

      DA2 DB 56,78

      ADRR DW DA1,DA2

    DATA ENDS

    为使ADDR+2 字存储单元中存放的内容为“0022H”,上述空格中应填写什么语句?

    2. 下列程序实现把20 个字符“A”的字符串从原缓冲区传送到目的缓冲区的功能,试将程序中的空白处填上适当的指令(每一空只填一条指令)。

     1 DATA SEGMENT ;define data segment
     2 
     3     SOURCE_STRING DB 20 DUP(‘A’)
     4 
     5 DATA ENDS
     6 
     7 
     8 EXTRA SEGMENT ;define extra segment
     9 
    10     DEST_STRING DB 20 DUP(?)
    11 
    12 EXTRA ENDS
    13 
    14 
    15 CODE SEGMENT ;define code segment
    16 
    17 ASSUME CS:CODE,DS:DATA,ES:EXTRA
    18 
    19  START:MOV AX,DATA
    20 
    21         MOV DS,AX
    22 
    23         MOV AX,EXTRA
    24 
    25         MOV ES,AX
    26 
    27         __mov si,offset SOURCE_STRING__
    28 
    29         LEA DI,DEST_STRING
    30 
    31         CLD
    32 
    33         MOV CX,20
    34 
    35         __rep movsb__
    36 
    37         MOV AH,4CH
    38 
    39         INT 21H
    40 
    41 CODE ENDS
    42 
    43 END START

    六、编程题(共22 分)

    1. 编写程序段,将标志寄存器中的高8 位和低8 位互换。(5 分)

     1 pushf
     2 
     3 pop ax
     4 
     5 ; 直接这一句就行了XCHG AH
     6 
     7 mov bl,ah
     8 
     9 mov bh,al
    10 
    11 push bx
    12 
    13 popf

    2. 数据区定义如下:

    DATA SEGMENT

      ARRAY DB 23H,24H,25H,26H

      DISP DB 30 DUP(‘ ’),‘$’

    DATA SEGMENT

    编写程序段,将此数据区复制10 次,并将结果显示出来。(5 分)

    1 CLD
    2 LEA SI,ARRAY
    3 LEA DI,DISP
    4 MOV CX,10
    5 REP MOVSB
    6 MOV AH,09H
    7 INT 21H

    3. 数据区中首地址为ARRAY 的N 字数组,定义如下:

    DATA SEGMENT

      ARRAY DW 23,-20,130,-5,…,326,-2110 ;表示N 个带符号数

      CUNT EQU $-ARRAY

      RESUT DB ? ;存放正数的个数

      DB ? ;存放’0’的个数

      DB ? ;存放‘负数’的个数

    DATA ENDS

    试编写一个程序,统计ARRAY 数据区中正数、负数及“0”的个数,结果送入RESUT 起始的三个字节单元中(12 分)。

     1 DATA SEGMENT
     2 ARRAY DW 23,-20130,-5,…,326,-2110
     3 COUT EQU $-ARRAY
     4 RESUT DB?
     5 DB?
     6 DB?
     7 DATA ENDS
     8 CODE SEGMENT
     9 ASSUME CS:CODE,DS:DATA
    10 START: MOV AX,DATA
    11 MOV DS,AX
    12 MOV AX,0
    13 MOV BX,0
    14 LEA SI,ARRAY
    15 MOV CX,CUNT
    16 SHR CX,1
    17 LOP: CMP WORD PTR[SI],0
    18 JZ ZERO
    19 JNS PLUS
    20 INC BL
    21 JMP NEXT
    22 ZERO: INC AH
    23 JMP NEXT
    24 PLUS: INC AL
    25 NEXT: ADD SI,TYPE ARRAY
    26 LOOP LOP
    27 MOV RESUT,AL
    28 MOV RESUT+1,AH
    29 MOV RESUT+2,BL
    30 MOV AH,4CH
    31 INT 21H
    32 CODE ENDS
    33 END START
  • 相关阅读:
    Centos 7 安装shellcheck
    cunit环境搭建
    flex序列号和破解
    windows下python SSH-Client模块paramiko的安装与修改
    history优化设置
    shell配置和vim配置
    testlink 安装方法
    python解析GBK格式xml文件
    运用Loadrunner测试Mysql数据库性能 TRON•极客
    写python用到的一些大杀器
  • 原文地址:https://www.cnblogs.com/x54256/p/8146045.html
Copyright © 2011-2022 走看看