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

    一、选择题

    1. 指令指针寄存器是(C)。

    A. BP   B. SP  C. IP   D. PSW

    1 BP寄存器是用来直接对栈进行寻址的,一般配合SS(栈段寄存器)一起用
    2 SP寄存器是栈指针,SP始终指向栈顶(push操作时先将sp+2然后在放入数据,push操作时先将数据取出然后将sp-23 IP寄存器是指针寄存器,一般配合CS一起用,共同指向代码段。
    4 PSW没听说过
    5 
    6 指令指针当然是操作代码的呀
    View Code

    2. DA1 DB 67H

     NUM EQU 80H

    则执行AND DA1,NUM 语句后DA1 中的内容是(D)。

    A. E7H     B. 80H    C. 67H     D. 0

    1 我一开始看成add了
    2 
    3 AND DA1,NUM
    4 
    5 DA1 = 67H ==> 0110 0111
    6 
    7 NUM = 80H ==> 1000 0000
    View Code

    3. 与指令MOV AX,NOT 0F0H 等效的汇编语言指令是(B)。
    A. MOV AX,0FH       B. MOV AX,0FF0FH
    C. MOV AX,000FH   D. MOV AX,0F0H

    1 MOV AX,NOT 0F0H    ; 将0F0H取反,赋值给AX
    2 ; 00F0H取反 ==> FF0FH 
    View Code

    4. 一个有16 个字的数据区,它的起始地址是70A0H: DDF6,则这个数据区最末一个字单元的物理地址是(C)。

    A. 7E806H     B. 7E814H

    C. 7E815H     D. 7E80BH

    1 最末一个字单元的物理地址 = 起始地址 + 数据区大小 - 1字大小(1字=2B)
    2                          = 70A00+DDF6 + 30 
    3                          = 7E7F6
    View Code

    5. 可用作基址变址寻址或寄存器间接寻址的寄存器是(D)。

    A. AX,BX,CX,DX     B. DS,ES, CS,SS

    C. SP,BP,IP,BX         D. SI,DI,BP,BX

    6. 在串操作指令中,下列描述中不正确的是(C)。

    A. REP MOVSB     B. REP STOSB    C. REPE CMPSB     D. REP LODSB

    1 A. REP MOVSB   ; 字符串传送指令,这条指令按字节传送数据。 
    2   
    3 B. REP STOSB ; 从EDI所指的内存开始,将连续的ECX个字节写成AL的内容,多用于清零
    4    
    5 C. REPE CMPSB   ; repe是一个串操作前缀,它重复串操作指令,每重复一次ECX的值就减1,一直到CX为0或ZF为0时停止。 cmpsb是字符串比较指令,把ESI指向的数据与EDI指向的数一个一个的进行比较。 
    6 
    7 ; 当repe cmpsb配合使用时就是字符串比较啦,当相同时继续比较,不同时不比较 
    8   
    9 D. REP LODSB
    View Code

    7. ORG 0030H

     DA1 DB 0,‘0’,30H

    偏移地址为0030H 字存储单元的内容是(A)。

    A. 3000H     B. 00H    C. 0030H     D. 3030H

    1 '0'的ascii码是30
    2 
    3 高位字节 --> 低位字节 3000H
    View Code

    8. 编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令是(D)。

    A. CMP   B. SUB  C. AND   D. MOV

    1 CPU的条件(if)判断是通过标志寄存器(flag寄存器)来实现的
    2 只有add、submuldivincor、and这些操作会影响flag寄存器的值
    3 movpush、pop等传送指令不修改标志寄存器的信息。
    View Code

    9. 将高级语言的程序翻译成机器码程序的实用程序是(A)。

    A. 编译程序   B. 汇编程序  C. 解释程序   D. 目标程序

    1 编译器生成的文件为目标文件
    View Code

    10. 设DS=lE4AH,偏移地址为0056H,该字节的物理地址为(D)。

    A. 1E4A6H   B. 1E456H  C. 1E556H   D. 1E4F6H

    1 物理地址 = 1E4A0H + 0056H = 1E4F6
    View Code

    11. 假设下列指令中所用的标识符类型均为字类型属性的变量,下述指令中正确的指令是(B)。

    A. MOV WORD_DA1,WORD_DA2

    B. MOV WORD_DA [BX+4*4] [DI],SP

    C. MOV AX,WORD_DA [DX]

    D. MOV [BX] [SI],3

    1 寻址方式的几种不同写法:
    2 [bx+si]
    3 [bx][si]
    4 [bx].idata
    5 [bx].idata[si]
    View Code

    12. 当程序顺序执行时,每取一条指令语句,IP 指针增加的值是(D)。

    A. 1   B. 2  C. 3   D. 由指令长度决定的

    13. 若AX=349DH,CX=0FH。则执行指令AND AX,CX 后,AX 的值是(B)。

    A. 349DCH   B. 000DH  C. 049DH   D. 0240H

    1 AX = XXXX XXXX XXXX 1101
    2 BX = 0000 0000 0000 1111
    3 
    4 AND AX,BX
    5 
    6 AX = 0 0 0 1101 ==> 000D
    View Code

    14. 在下列四种描述中,不重复执行循环的是(D)。

    A.   MOV CX,0

    LOP: LOOP LOP

    B.   MOV CX,-1

    LOP: LOOP LOP

    C.   MOV CX,1

    LOP: LOOP LOP

    D.   MOV CX,2

    LOP: LOOP LOP

    1 A、B是死循环,C只循环一次,D循环两次
    View Code

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

    A. (AX)=0050H   B. (AX)=0012H  C. (AX)=1234H   D. (AX)=3412H

    1 MOV AX,[BX]       ; 将20050处的字型数据赋值给AX寄存器。
    2 
    3 ; 字型单元==>高位+低位=3412H
    View Code

    16. 设(AX)=0FC77H,(CX)=504H,CF=1,执行SAR AX,CL 指令后,AX 的值是(C)。

    A. FFC8H     B. FFC9H    C. FFC7H     D. FCC8H

    17. 假设字节单元(02398H)=12H,(02399H)=34H,(0239AH)=56H,则(02399H)字单

    元的内容是(C)。

    A. 3412H   B. 3456H   C. 5634H   D. 1234H

    1 高位单元(0239A) + 低位单元(02399H)
    View Code

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

    A. 字   B. 双字  C. 字节   D. 四字

    1 WORD PTR    ; 声明是字类型
    2 
    3 BYTE PTR    ; 声明是字节类型
    View Code

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

    A. SUB CX, DX   B. MOV AX, SS:[DX]

    C. SHL AX, 1     D. ADD AX,[BP+SI]

    1 A. SUB CX, DX         ; 指令含义:CX = CX - DX
    2 B. MOV AX, SS:[DX]    ; []中不能加DX,[SI,DI,BP,BX],所以B是错的
    3 C. SHL AX, 1         ; 逻辑左移
    4 D. ADD AX, [BP+SI] ; (AX) = (AX) + ((DS)*16 + (BP+SI))
    View Code

    20. 若AX=912DH,CX=0FH,执行指令OR AX,CX 后,AX 的值是(B)。

    A. 000DH   B. 912FH   C. 912AH   D. 002FH

    1 AX = 1001 0001 0010 1101
    2 BX = 0000 0000 0000 1111
    3 与操作 ==> CX = 1001 0001 0010 1111 ==> 912F
    View Code

    二、填空题

    1. 在8086/8088 汇编语言中,串操作指令中搜索字符串指令的助记符是   SCAC      

    2. 当发生除法溢出时,OF=    1     。    

    1 发生溢出,OF=1
    View Code

    3. 指令JMP WORD PTR [BX]属于   段内间接   寻址

    5. DD 伪指令中定义的每个操作数占有 8 个字节。

    1 DD ==> 伪指令,双字
    2 
    3 DW ==> 伪指令,字
    4 
    5 DB ==> 伪指令,字节
    View Code

    1. ARRAY2 DB 10H,20H,30,40H

     ARRAY3 DW 20DUP(0,1,2,DUP(2))

    MOV BL,SIZE ARRAY2

    MOV CL,SIZE ARRAY3

    上述两条指令的等效指令是什么?

    1 LENGTH 是汇编语言里的一个运算符,如果一个变量已用重复操作符DUP说明其元素个数,则利用LENGTH运算符可以得到这个变量中元素的个数,如果未用DUP说明,则LENGTH得到的结果总是1
    2 
    3 TYPE 是指这个东西的类型占多少个字节
    4 
    5 SIZE = LENGTH * TYPE
    View Code

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

    COUNT1 DB 48H

    COUNT2 EQU 48H

    1  COUNT1 作为地址,在该字节的存储单元中存放数据48H;
    2 COUNT2 作为符号名,数据48H直接赋给COUNT2。
    View Code

    3. 请写出完成下列操作所选用的指令。

    (1)将AX 的内容减去7A30H 和上次运算的借位。

    (2)将变量名TABL 的段地址送AX。

    11SBB AX,7A30H
    2 
    32MOV AX,SEG TABL
    View Code

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

    1.

     1 MOV AH, 1        
     2 
     3 INT 21H
     4 
     5 MOV BL, AL        
     6 
     7 MOV AH,1        
     8 
     9 INT 21H
    10 
    11 ADD AL,BL        
    12 
    13 AAA

    上述程序完成的功能是什么?  从键盘上输入两个一位数,然后相加,并把结果放在AH 和AL 中

    1 AAA码(非压缩BCD码调整):
    2 if(al的低4位 > 9 || af=1){
    3     al += 6
    4     ah +=1
    5     al的高4位清零
    6     cf = 1
    7     af = 1
    8 }
    View Code

    2. 现有下列程序段:

     1 MOV AX,1234H        ; AX=1234H
     2 
     3 MOV DX,4578H        ; DX=4578H
     4 
     5 MOV CL, 04            ; CL = 04H
     6 
     7 SHL DX,CL            ; 逻辑左移4位 DX=0101 0111 1000 0000B = 5780H
     8 
     9 MOV BL,AH            ; BL=12H
    10 
    11 SHL AX,CL            ; AX=2340H
    12 
    13 SHR AX,CL            ; AX=0234H
    14 
    15 OR DL,BL            ; DL=1000 0000 BL=0001 0010 or操作 ==> DL=1001 0010

    试问上述程序段运行后,(AX)=  0234H   ,(BL)=   12H  ,(DX)=  5792H  

    3. 假设数据区有:???

    DA1 DB 56H

    DA2 DB 34H

    DA3 DB ?

    DA4 DB ?

    (1)下列程序段完成的功能是什么?

    (2)程序段执行后DA3、DA4 字节单元的内容是什么?

     1 MOV AL,DA1            ; (AL)=56H '+'
     2 
     3 ADD AL,DA2            ; (AL)=(AL)+34H=8AH  DA1 '+' 结果='-' 溢出
     4 
     5 JO NEXT                ; JO==>溢出则跳转 
     6 
     7 MOV DA3,AL
     8 
     9 MOV DA4,0
    10 
    11 JMP EXIT
    12 
    13 NEXT: MOV DA4,1    ; DA4==>1
    14 
    15 EXIT: HLT            ; HLT==>处理器“暂停”指令

    4. 已知(AX)=4321H

    1 INC AX        ; 4322H
    2 
    3 NEG AX        ; BCDEH
    4                   
    5 DEC AX        ; BCDDH
    6                   
    7 NEG AX        ; 4323H

    上述几条指令执行后,(AX)=  4323H  

    5. 震惊:算数左移和逻辑左移竟然一样

     1 MOV AX,2        ; AX=2
     2 
     3 MOV DX,AX        ; DX=2
     4 
     5 SAL AX,1        
     6 
     7 SAL AX,1        ; 算数左移2位,相当于原数*4  AX=0008H
     8 
     9 ADD AX,DX        ; AX=AX+DX=000AH
    10 
    11 SAR AX,1        ; AX=X X X 0101B=0005H

    问:(1)上述程序段执行后完成什么功能?  原数*5/2

    (2)程序段执行后AX 寄存器的内容是多少?  AX=0005H

    6. 设(BX)=76D1H,指令:

    MOV CL, 7

    SHR BX, CL  ; 右移7位

    执行后,(BX)=  00edh  

    7.  SUB AL,AH

      DAS

    若指令执行前,(AL)=86H,(AH)=07H;

    问:上述指令执行后,(AL)= 79,(CF)=1 ,(AF)= 1。

    1 DAS指令(校正2个组合bcd码直接相见的结果):
    2 if(al&0fH > 9 || af=1){
    3     al -= 6
    4     af = 1
    5     cf = 0
    6 }if(al > 9fH || cf=1){
    7     al -= 60
    8     cf = 1
    9 }
    View Code

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

    1. 以DA 为起始地址的数组中存放的N 个有符号数据,下面程序完成了找出N 个数中的最大和最小值分别送入AH 和AL 中。请将程序段补充完整(每一空白处只填一条指令)。

     1 DA DB 1234,-24,6A,…,98 ;N 个有符号数据
     2 
     3 CUNT EQU $ -DA
     4 
     5  6 
     7 MOV SI,ADR
     8 
     9 MOV CX,CUNT
    10 
    11 MOV BH,[SI]
    12 
    13 MOV BL,BH
    14 
    15  LOP1: __LODSB__  ; INC SI , MOV AL
    16 
    17         CMP AL,BH
    18 
    19         __JLE LOP2__
    20 
    21         MOV BH,AL
    22 
    23         __JMP LOP3__
    24 
    25  LOP2: CMP AL,BL
    26 
    27         jGE LOP3
    28 
    29         MOV BL,AL
    30 
    31  LOP3: DEC CX
    32 
    33         __JNZ LOP1__
    34 
    35         MOV AX,BX

    2. 下列程序段完成:2+4+…+20 共10 个偶数的累加和。请将程序段补充完整(每一空白处只填一条指令)。

     1 DATA SEGMENT
     2 
     3 SUM DW?
     4 
     5  6 
     7 XOR AX,AX            ; ax=0
     8 
     9 __mov cx,10__
    10 
    11 MOV BX,2
    12 
    13  LOP1: ADD AX,BX
    14 
    15         INC BX
    16 
    17         INC BX
    18 
    19         __dec cx__
    20 
    21         JNZ LOP1
    22 
    23         MOV SUM,AX

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

    1. 试编写一程序段,将标志寄存器中的符号位SF 置‘1’(5 分)。

    1 pushf
    2 
    3 pop ax
    4 
    5 or ax,0000 0000 1000 0000
    6 
    7 push ax
    8 
    9 popf

    2. 假设:

    DATA SEGMENT

    ARRAY DB ‘XXXX…XX’

    CUNT EQU $ - ARRAY

    DATA ENDS

    试编写一个程序段,完成用空格将以ARRAY 为起点字符区中的字符清除(5 分)。

     1 mov cx,cunt
     2 
     3  s: mov ax,data
     4     mov ds,ax
     5     
     6     mov si,offset array
     7     mov byte ptr [si],' '
     8     
     9     inc si
    10     
    11     loop s

    3. 定义一个数据区,它包含有23H,24H,25H 和26H 四个字符数据,把这个数据区复制20次,并显示出复制结果(12 分)。

     1 ASSUME CS:CODE, DS:DATA, ES:DATA
     2 
     3 DATA SEGMENT
     4     ARRAY DB 23H,24H,25H,26H
     5     DISP DB 30 DUP(' '),'$'
     6 DATA ENDS
     7 
     8 CODE SEGMENT
     9 
    10  START: MOV AX,DATA
    11         MOV DS,AX
    12         
    13         ...
    14         MOV DX,OFFSET ARRAY(或LEA ARRAY)
    15         
    16         MOV AH,09H
    17         INT 21H
    18 CODE ENDS
    19 END START
  • 相关阅读:
    Kubernetes豁然贯通(安全认证)
    Kubernetes登堂入室(数据存储)
    Kubernetes渐入佳境(Service和Ingress详解)
    Kubernetes崭露头角(Pod控制器详解)
    Kubernetes初露锋芒(Pod详解)
    Kubernets初窥门径 (NameSpace、Pod、Label、Deployment、Service)
    Kubernetes初学乍练(资源管理)
    Kubernetes小试牛刀
    构建高并发的扣减服务
    Redis集群的三种姿势
  • 原文地址:https://www.cnblogs.com/x54256/p/8094621.html
Copyright © 2011-2022 走看看