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

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

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

    A. PUSH 54[DI]

    B. MOV AX,[BX] NUM[SI]

    C. MOV AX,[BX+BP+NUM]

    D. AND DH,DL

    2. 已知(AX)=875BH,执行下述三条指令后,(AX)=(D)。

    MOV BX,AX

    NEG BX

    ADD AX,BX

    A. 875BH B. 0EDCCH

    C. 6DCCH D. 0000H

    3. 指令JMP FAR PTR LOP1 属于(C)。

    A. 段内转移直接寻址 B. 段内转移间接寻址

    C. 段间转移直接寻址 D. 段间转移间接寻址

    4. 对两个无符号数A、B 进行比较时,采用JBE/JNA 指令,转移的条件是(C)。

    A. CF=0 或ZF=1 B. CF=0 或SF=1

    C. CF=l 或ZF=1 D. ZF=0 或SF=0

    5. 设SP 初值为1000H,执行指令 PUSH BX 后,SP 的值是(D)。

    A. 1002H B. 0FF8H

    C. FFFH D. 0FFEH

    6. 设AH=1,AL=09H,BL=05H,执行指令:

    ADD AL,BL

    AAA

    之后,其结果应是(A)。

    A. AH=02,AL= 04     B. AH=1,AL=24    C. AH=0,AL=24H     D. AH=0,AL=24

    1 AAA(非压缩BCD码调整):如果al低四位大于9,就将al加6,ah加一,al高四位清零,cf、af置1。
    2 
    3 al = al + bl = 0EH    # 后4位大于9
    4 
    5 so al=al+6=14H,然后将高4位清零==> al=04
    6 
    7 ah=ah+1=02H
    8 
    9 cf,af=0
    View Code

    7. 下列指令执行时出错的是(A)。

    A. MOV DA1,DA2

    B. JMP WORD PTR[BX]

    C. MOV AX,[BX+DI] NUM

    D. TEST AL,08H

    8. 计算机处理问题中会碰到大量的字符、符号,对此必须采用统一的编码。目前,微机中普遍采用的是(C)。

    A. BCD 码 B. 二进制码

    C. ASCII 码 D. 十六进制码

    9. 设变量定义如下:DA_WORD DW 3,5AH,98,0B0H。指令ADD AL,TYPE DA_WORD的等效指令是(B)。

    A. ADD AL,1 B. ADD AL,2

    C. ADD AL,3 D. ADD AL,4

    10. 从键盘输入一个十进制数2002,将该数值以压缩型BCD 码的存储形式保存到存储器中,其存放的顺序是( )。

    A. 20,02     B. 02,20    C. 32,30,30,32     D. 32,30,32,30

    1 因为本身是10进制的数,so不用转换,直接存储
    2 
    3 内存的存储是低位,高位这样存储的 ==> 02,20
    View Code

    11. 指令LES SI,ES:[1000H]的功能是( )。

    A. 将数据段偏移地址1000H 送SI

    B. 将数据段偏移地址1000H 字单元内容送SI,并且把下一个字单元内容送ES

    C. 将附加段中偏移地址为1000H 字单元内容送SI,并且把它的下一个字单元内容送ES

    D. 将地址1000H 字单元内容送DS,并且把它的下一个字单元内容送SI

    1 LES SI,ES[1000H]
    2 
    3 将给定内存单元的双字型数据的低位字放到指定寄存器,将高位字节送到ES寄存器
    View Code

    12. CPU 发出的访问存储器的地址是(A)。

    A. 物理地址 B. 偏移地址

    C. 逻辑地址 D. 段地址

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

    A. DB 0ABH,12,3,5     B. DW 3ABCH    C. DW ‘ABCD’      D. D ‘AB’

    1 dw定义的字型数据只能有2个字节的东西
    2 
    3 2个字节一上要用db定义
    View Code

    14. 如AX=FFFFH

    NEG AX

    NEG AX

    上述两条指令执行后,AX 的值为(B)。

    A. 0000H B. FFFFH

    C. 0F00H D. 0001H

    15. 逻辑运算指令是按位进行运算的,指令执行后不保留运算结果,只对标志寄存器产生影响的指令是(D)。

    A. AND B. XOR

    C. OR D. TEST

    16. 在8086/8088 系统中,一个字节的无符号数能表达的数值范围是(C)。

    A. 0~7FH B. 0~256

    C. 0~255 D. 0~128

    17. 设DS= 3635H,DI=0083H,指令INC BYTE PTR [DI]操作数的物理地址是(C)。

    A. 36AD8H       B. 36353H

    C. 363D3H       D. 0A018H

    18. 执行下面指令序列后,结果是( )。

    MOV BL,91H

    CBW

    A. BX=0091H       B. AX=0FF91H

    C. AX=0F91H       D. 1F91H

    1 CBW指令:8位-->16位数据 
    2 
    3 8位的二进制最高位是1 ==> 高位时FFH
    4                              0 ==> 低位时00H
    View Code

    19. 下列叙述正确的是( )。

    A. 在运算过程中,只有补码数相加才会影响OF 标志位

    B. 在运算过程中,无符号数的运算不会产生溢出

    C. 在程序执行过程中,条件转移指令的执行一定会影响到标志位

    D. 在程序执行过程中,执行DAA,DAS 指令会影响到标志位

     1 A. 在运算过程中,只有补码数相加才会影响OF 标志位
     2 # 不论是啥数相加都有可能影响of标志位
     3 
     4 B. 在运算过程中,无符号数的运算不会产生溢出
     5 # 会的
     6 
     7 C. 在程序执行过程中,条件转移指令的执行一定会影响到标志位
     8 # 条件转移指令的执行不会影响标志位,因为它只是一个if判断
     9 
    10 D. 在程序执行过程中,执行DAA,DAS 指令会影响到标志位
    11 
    12 DAA指令:
    13 if (al的低4位 > 9 || af=1){
    14     al += 6
    15     af = 1
    16 }if(al高4位 > 9 || cf=1){
    17     al += 60
    18     cl = 1
    19 }else{
    20     af = 0
    21     cf = 0
    22 }
    23 
    24 DAS指令(校正2个组合bcd码直接相见的结果):
    25 if(al&0fH > 9 || af=1){
    26     al -= 6
    27     af = 1
    28 }if(al > 9fH || cf=1){
    29     al -= 60
    30     cf = 1
    31 }
    View Code

    20.   DATA SEGMENT

    ORG 40H

    DA1 0FEH

    DA2 DW 52ACH

    DATA ENDS

    MOV AL,DA1

    MOV BX,DA2

    上述指令执行后,AL 和BX 的值为(A)。

    A. AL=0FEH,BX=52ACH       B. AL=0FEH,BX=0041H

    C. AL=40H,BX=52ACH         D. AL= 40H,BX=0041H

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

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

    1. 指示下一条将要执行的指令的地址(C)。

    2. 存储程序、数据等信息的装置是(D)。

    3. 把汇编语言程序翻译成机器语言的系统程序是(E)。

    4. 分析、控制并执行指令的部件是(B)。

    5. 控制操作数的标志位(PC 机有DF、ZF、TF)是(A)。

    词语:A. 控制标志     B. CPU    C. IP     D. 存储器    E. 汇编程序

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

    1. 请指出下述两条伪指令语句的区别。

    COUNT1 DW 1234H    

    COUNT2 DB 12H,34H

    1 DW 1234H的内存顺序 --> 3412
    View Code

    2. 分别指出下列指令中源操作数的寻址方式:

    (1)AND AX,0FFH      ; 立即

    (2)MOV CX,COUT[SI]    ; 寄存器相对

    (3)MOV AX,[DI]         ; 寄存器间接寻址

    (4)ADD AX,[BX][DI]   ; 基址变址寻址

    3.  DA_BYTE LABEL BYTE

    DA_WORD DW 20H DUP(?)

    上面两条指令分别执行后,各将该数组中的第几个字节置0?

    (1)MOV DA_WORD+2,0  第3,4个字节

    (2)MOV DA_BYTE+2,0  第3个字节

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

    1.  DATA SEGMENT

      DA1 DW 123H,456H,0AB00H  0~5

      DA2 DB 12H,34H,56H,0ABH  6~9

        DB $ -DA2            ; 10,因为没有equ

      BUF DB 10H DUP(1,2,3)    11~

    DATA ENDS

    MOV BX,[0006]  ; 3412H

    AND BX,0FFH    ; 0012H

    ADD BX,[BX]

    上述指令执行后,BX= __0314H__

    MOV DX,SIZE BUF

    ADD DX,DA2+4

    上述指令执行后,DX=   0014H    。  # 相信我,绝壁答案错了

    2. 现有数据段如下:

    DATA SEGMENT

      ARRAY1 DB 1,26,‘3456’  ; 0~5

      ARRAY2 DW 7,89H,10     ; 6~11

      VAL EQU ARRAY2-ARRAY1

    DATA ENDS

    试问:(1)该数据段已占有多少字节的存储空间?  12字节

    (2)VAL 的值是多少?  6

    3. 有如下程序段:

    DATA SEGMENT

      STRING1 DB ‘COMPUTER SCIENCE’

      STRING2 DB 20 DUP(?)

    DATA ENDS

    CODE SEGMENT

      ASSUME CS:CODE,DS:DATA,ES: DATA

      START:

      …

      CLD

      MOV CX,16

      LEA SI,STRING1

      LEA DI,STRING2

      REP MOVSB

      …

    CODE ENDS

    END START

    试问:上述程序段执行后,完成什么功能?    将STRING1 中的16 个字符移动到STRING2 中。

    4. 有如下数据定义:

    DA1 DB 4 DUP(5),2  ; 0~4  

    COUNT EQU 10

    DA2 DD COUNT DUP(?)  ; 5~44

    问:

    (1)上述数据定义为变量DA1 分配多少字节存储空间。  5b

    (2)为变量DA2 分配多少个字节存储空间。      40b

    5.  MOV CL, 3

    MOV BX,0A6H

    ROL BX,1

    ROR BX,CL

    上述程序段执行后,BX 寄存器的内容是什么?  (BX)=8029H

    6.  MOV AX,1234H

    MOV CL,4

    ROL AX,CL

    DEC AX

    MOV CX,4

    MUL CX

    INT 20H

    上述程序段执行后,(AX)= 8d00h, (BX)= 0000h。

    7.  AX=0A0B5H

    MOV BX,AX

    NEG BX

    ADD AX,BX

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

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

    1.  DATA SEGMENT

    DA1 DW 123H,456H,0AB00H

    DA2 DB 12H,34H,56H,0ABH

    DB $ -DA2

    BUF DB 10H DUP(1,2,3)

    __(1)__

    MOV BX,[0006]

    AND BX,0FFH

    ADD BX,[BX]

    上述指令执行后,BX= 。

    __(2)__

    MOV DX,SIZE BUF

    ADD DX,DA2+4

    上述指令执行后,DX= 。

    2. 现有数据段如下:

    DATA SEGMENT

    ARRAY1 DB 1,26,‘3456’

    ARRAY2 DW 7,89H,10

    VAL EQU ARRAY2-ARRAY1

    DATA ENDS

    试问:(1)该数据段已占有多少字节的存储空间?

    (2)VAL 的值是多少?

    3. 有如下程序段:

    DATA SEGMENT

    STRING1 DB ‘COMPUTER SCIENCE’

    STRING2 DB 20 DUP(?)

    DATA ENDS

    CODE SEGMENT

    ASSUME CS:CODE,DS:DATA,ES: DATA

    START:

    CLD

    MOV CX,16

    LEA SI,STRING1

    LEA DI,STRING2

    REP MOVSB

    CODE ENDS

    END START

    试问:上述程序段执行后,完成什么功能?

    4. 有如下数据定义:

    DA1 DB 4 DUP(5),2

    COUNT EQU 10

    DA2 DD COUNT DUP(?)

    问:

    (1)上述数据定义为变量DA1 分配多少字节存储空间。

    (2)为变量DA2 分配多少个字节存储空间。

    5.  MOV CL, 3

    MOV BX,0A6H

    ROL BX,1

    ROR BX,CL

    上述程序段执行后,BX 寄存器的内容是什么?

    6.  MOV AX,1234H

    MOV CL,4

    ROL AX,CL

    DEC AX

    MOV CX,4

    MUL CX

    INT 20H

    上述程序段执行后,(AX)= , (BX)= 。

    7.  AX=0A0B5H

    MOV BX,AX

    NEG BX

    ADD AX,BX

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

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

    1. 下面程序段是根据DAY 字节单元中的内容,从表WEEK 中查出对应的星期一到星期日的英文缩写,并将其显示输出。试在空白处填上适当的指令(每一空白处只填一条指令)。

     1 WEEK DB ‘MON’,‘TUE’,‘WED,‘THU’
     2 
     3      DB ‘FRI’,‘SAT’,‘SUN’
     4 
     5 DAY DB ?
     6 
     7  8         XOR BX,BX        ; bx=0
     9 
    10         MOV BL,DAY
    11 
    12         __DEC BL__
    13 
    14         MOV AL,BL
    15 
    16         SAL BL,1
    17 
    18         __ADD BL,AL__
    19 
    20         MOV CX,3
    21 
    22   LOP: MOV DL,WEEK[BX]
    23 
    24         MOV AH,02H
    25 
    26         INT 21H
    27 
    28         __INC BX__
    29 
    30         LOOP LOP

    2. 以ARRAY 为首址的数据区中依次存放20 个数据al,a2,…,a20,每个数据占两个字节,下列程序段完成计算20 个数据的和并把和存入SUM 中。试在空白处填上适当的指令(每一空白处只填一条指令)。

     1 ARRAY DW al,a2,…,a20
     2 
     3 SUM DW ?
     4 
     5  6 
     7 MOV AX,0
     8 
     9 MOV BX,OFFSET BUF
    10 
    11 __mov cx,20__
    12 
    13 LOP: ADD AX,[BX]
    14 
    15      INC BX
    16 
    17      INC BX
    18 
    19      __loop LOP__
    20 
    21 MOV SUM,AX

    六、编程题(本大题共3 小题,共22 分)

    1. 试编写一程序段,把DX:AX 中的双字右移4 位。(5 分)

     1 MOV CL,4
     2 
     3 SHR AX,CL
     4 
     5 MOV BL,DL
     6 
     7 SHR DX,CL
     8 
     9 SHL BL,CL
    10 
    11 OR AH,BL

    2. 完成将AX 和BX 中的两个带符号数相加,如果没有溢出,转移到OK 处执行。试编写一程序段。(5 分)

    ADD AX,BX
    
    JNO OK

    3. 试编写完整程序,将数据段中ARRAY1 开始字节单元中的10 个数字0,1,2,3,4,5,6,7,8,9 转换成相应的ASCII 码送入以ASC 开始的内存单元中。(12 分)

     1 DATA SEGMENT
     2     ARRAY1 DB 123456789
     3     ASC DB 10 DUP(?)
     4     CUNT EQU ASC-ARRAY1
     5 DATA ENDS
     6 
     7 STACK1 SEGMENT PARA STACK
     8     DW 20H DUP(0)
     9 STACK1 ENDS
    10 
    11 CODE SEGMENT
    12 ASSUME CS:CODE,DS:DATA,SS:STACK1
    13  START:MOV AX,DATA
    14         MOV DS,AX
    15         LEA SI,ARRAYI
    16         LEA DI,ASC
    17         MOV CX,CUNT
    18    LOP:MOV AL, [SI]
    19         OR AL,30H;或ADD AL,30H
    20         MOV [DI],AL
    21         INC SI
    22         INC DI
    23         LOOP LOP
    24         MOV AH,4CH
    25         INT 21H
    26 CODE ENDS
    27 END START
  • 相关阅读:
    C基础之移位操作
    实现itoa()
    Python的time模块的clock方法在不同平台的效果不同
    __stdcall与__cdecl之区别浅析及相关知识
    Python 字典 dictionary changed size during iteration
    Windows下printf输出long long类型
    inotify也会爆棚
    一条对“失控的腾讯帝国:企鹅无法把控手机市场”的评论
    imfunny程序员的增量发展
    程序员第一定律:关于技能和收入
  • 原文地址:https://www.cnblogs.com/x54256/p/8119800.html
Copyright © 2011-2022 走看看