汇编习题

来源:互联网 发布:python time.sleep修改 编辑:程序博客网 时间:2024/05/16 13:56
原文地址:汇编习题作者:依然

.选择题

1、通常说计算机的内存为32M64M128M指的是:(c)
A.RAM
的容量 B.ROM的容量 C.RAMROM的容量 D.硬盘的容量  
2.
汇编语言的优点不包括__d___  
A
直接有效地控制硬件 B生成的代码序列短小

C运行速度快           编程容易

3十六进制数88H,可表示成下面几种形式,请找出错误的表示(d  )。  
A.
无符号十进制数136           B.带符号十进制数-120     

C.压缩型BCD码十进制数88     D.  8位二进制数-8的补码表示

4下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是(b  
A
AXBXCXDX      BBXBPSIDI    

CSPIPBPDX        DCSDSESSS           
5
可用作寄存器间接寻址或基址、变址寻址的地址寄存器,正确的是( )。
A.AX
BXCXDX   B.DSESCSSS   

C.SPBPIPBX     D.SIDIBPBX

6.当运行结果为0时,ZF____b______  
   B1     C
任意   D不影响  

7某次求和结果最高位为1,则SF____b______  
       C
任意   D不影响

8DS5788H,偏移地址为94H,该字节的物理地址_____c________
A 57974H    B5883H   57914H    58ECH

9. “MOV  AX,[BP+DI]”指令从_____b_____段取出数据送AX
ACS     B SS    CDS   D ES

10.下面不能用于寄存器寻址的寄存器有(   
A. CS   B. AX   CIP    DSI   E.CL   F. SP

11存储器寻址方式在指令中给出操作数在内存中的地址,该地址是(c)
A
逻辑地址   B.有效地址    C偏移地址   D.物理地址  E.段地址

12.堆栈的操作原则是________b_____  
A
先进先出     B后进先出  C后进后出  D循环
13 “MOV SP,3210H”
“PUSHAX”指令执行后,SP寄存器值是_c___
3211H   B 320EH  C320FH    D3212H     
14
假设当前SP700H,执行pop  ax指令后,SP内容变为__d___
6FEH    B6FFH  701H   D 702H

15用一条指令实现将AX←BX+SI的方法是__d____  
A XCHG  AX,[BX][SI]    BMOV  AX,[BX][SI]  

MOV AX,[BX+SI]     DLEA  AX,[BX][SI]  

16.AX1000HBX2000H,则在执行了指令“SUBAX, BX”后,

标志位CFZF的值分别为________c_____  
A0
  0  C1   D1 

17.DH=10H,执行NEG  DH指令后,正确的结果是    )
A.DH=10H CF=1  B.DH=0F0H CF=0

C.DH=10H CF=0  D.DH=0F0H CF=1

18. IMUL  CL指令实现__a____功能  
A
有符号乘法:AX←AL×CL   无符号乘法:AX←AL×CL

C有符号乘法:DX←AL×CL  D无符号乘法:DX←AL×CL

19.  执行除法指令后,影响的标志位是___a___  
A
所有状态标志都不确定 B CF OF  CSFZF D AFPF

20.下列4条指令中,有___a___条指令需要使用DX寄存器
MUL  BX
IDIV  BLIN  AX,20HOUT  21H,AL
A 1             4

21.执行下面指令序列后,结果是         )
MOV  AL
82H           
CBW           
A
AX=0FF82H  BAX=8082H CAX=0082H  DAX=0F82H

22. 执行AND  AL,80H后,可以肯定的执行结果是AL寄存器的__c_
A
最高位为   B最高位为   C7位均为0   D 7位均为1

23.指令_a__实现对AX当中D15D0位设置为0,其他位不变的功能。
A AND  AX,7FFEH    BOR  AX,8001H  

C XOR  AX,8001H    DNOT   AX

24.指令__b___实现对AX当中D15D0位设置为1,其他位不变的功能。
A AND  AX,7FFEH    BOR  AX,8001H 

XOR  AX,8001H   DNOT   AX

25.执行OR  AL,80H后,可以肯定的执行结果是AL寄存器的__b____
最高位为   B最高位为1   C7位均为   D7位均为1

26.指令______c____实现对AX当中D15D0位求反,其他位不变的功能。
A AND  AX,7FFEH    B OR  AX,8001H 

 XOR  AX,8001H   DNOT   AX

27AX1000H  
           NEG  AX  
           NOT  AX  
执行上述指令后,AX__b____  
A 1001H  B0FFFH  1000H    D0111H
28.
下列指令中,执行后对标志未发生影响的是__a____
MOV AX,[BX]   B ADD AX,0FFHH 

C AND   AX,[BX]   D TESTAX,0FFHH

29.执行“SAR  BX,1”指令后,BX最高D15位等于___d_______
A0     B 1  D0   D14

30.对寄存器AX的内容乘以2的指令是__b____
A SHR   AX,1    BSHL  AX,1  

C ROR  AX,1   RCR  AX,1

318086/8088CPU的条件转移指令Jcc采用____a______地址寻址方式。
A相对         B直接   寄存器间接 D存储器间接

32.编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有d)
A
CMP   BSUB   CAND      DMOV

33当标志CF1时转移到目的地址的条件转移指令是____a__
A JC       BJNC    JZ     D JNZ

34条件转移指令JA产生程序转移的条件是__b____
CF
0ZF  BCF0ZF0  CF1ZFD CF1ZF0

35.循环指令LOOPNZ继续循环的条件是___c___  
ACX
0,且ZF  BCX0,或ZF CX≠0,且ZF0

D CX≠0,或ZF1

三判断错对

1.46”用原码表示为:(00101110原码
“-46”用原码表示为:(10101110原码

2.086/8088系统中,堆栈的操作可以是字节或字操作。

3已知AX=1234HBX=4612H,计算12344612的差的算法不能写成下面的形式:对
SUB  AX,BX  DAS

4已知CL=23H,指令“CMP CL,CL”执行后标志位的值是:CF0,ZF1,SF0

5判断下列8086指令的对错:SHL AX,3

6.对寄存器AX的内容乘以4的正确指令序列是SHLAX1SHLAX
7.
已知CL=0,指令INCCL的执行的结果CF=不变对

8.DH=10H,执行NEG DH指令后,正确的结果是 DH=0F0H CF=0

9下列指令中,执行后对标志未发生影响的是D
A MOV AX,[BX]   BADD AX,0FFHH
C AND AX,[BX]   D TESTAX,0FFHH

10对寄存器AX的内容乘以2的指令是SHLAX,1

11. 8088按逻辑段组织程序,数据变量应该且必须在数据段中。

12. 说明性语句可以在任何一个段中。对

13. 使用简化段定义源程序格式,必须具有.MODEL语句,

且位于所有简化段定义语句之前。对
14.
使用简化段定义源程序格式,必须具有.MODEL语句,但写在何处没有关系.

15.正误判断题:源程序中只能用标号START表示程序的起始执行点。

16. 完整段定义的程序入口点首先应该设置数据段寄存器的值。

17.汇编源程序可以用WORD文字处理系统处理,并保存为WORD文档。错

18.对于常数41H,在汇编语言中表达成字符’A’也是正确的,

’A’ASCII码就是41H

19. EQU=两个伪指令的功能和用法一样。

20. MOV AX , DI + SI有没有语法错误?

.填空题

1.       段的定义用的是伪指令()SEGMENT/ENDS 

2.       程序结束的语句是()解答:MOV AX,4C00H  INT 21H

3.       用汇编语言编写的程序称为______,它必须用______程序将它转换成二进制的机器语言程序,这种机器语言程序被称为______,而转换的过程称为______。它还必须用______程序连接,才能生成可执行的程序汇编源程序,汇编程序,目标代码,汇编。连接

4.       汇编源程序不可以用word文字处理系统处理,并保存为word,师因为文档汇编源程序必须是纯文本文件

5.       在表达存储容量时,1KB=_____B1MB=___________KB1024 1024

6.       8086/8088CPU的地址线有20条,它的存储容量为_______1MB

1KB=210B=1024B1MB=220B=210KB=1024KB1GB=230B=210MB=220KB=1024MB1TB=240B=230KB=220MB。所以答案:1024/210    1024/210/1K

7.       外设与系统之间必须通过________连接。系统通过___________与外设进行通信。

输入输出接口电路(I/O接口)  I/O端口

8.       机器指令是一组 ___,由____构成。机器语言程序常被称作___。二进制代码,操作码操作数 目标程序

9.       对于计算机内部的一个编码:01001001,他代表什么含义01001001作为ASCII码,表示字符I

10.   计算1101+111101-111101*111101/11的值。

1101+11=10000  1101-11=1010 1101*11=100111  1101/11=100(余数1e

11.   8086CPU的主存寻址范围是(),数据线有()条

主存寻址空间为1M,数据线有16eee

12.   8086CPU的内部结构分为总线接口(BIU)和执行单元(EU)两大部分。BIU负责CPU对存储器和外设的访问;EU负责指令的译码、执行和数据的运算。

13.   完成一条指令的功能可以分为两个主要阶段:(取指令)(执行指令)

14.       Intel 8086CPU的段寄存器有________________________

15.       Intel 8086CPUSP寄存器的主要作用是_____________________________

16.       (CS)=1000H(DS)=2000H(ES)=3000H(SS)=4000H(DI)=a100,操作数[DI+1000H]的寻址方式是_________,物理地址是______

17.       标志寄存器中OF标志位的主要作用是_____________________

18.       TEST指令的功能是______________________________

19.       指令LEA__AX,[SI+100H]的具体操作是_____________________

20.       有符号二进制字节数可表示的数的范围是_____________________

.回答问题

1.说明下列指令中源操作数的寻址方式?如果BX=2000HDI=40H,给出DX的值或有效地址EA的值。
1 MOV DX,[1234H]1)直接寻址,EA1234H
2MOV DX,1234H2)立即数寻址,DX1234H
3MOV DX,BX3)寄存器寻址,DX2000H
4 MOV DX,[BX] 4)间接寻址,EA2000H
5 MOV DX,[BX+1234H]5)相对寻址,EA3234H
6MOV DX,[BX+DI] 6)基址变址寻址,EA2040H
7 MOV DX,[BX+DI+1234H]7)相对基址变址寻址,EA3274H

2已知DS 2000HBX =0100HSI = 0002H,存储单元[20100H] ~[20103H]依次存放12 34 56 78H[21200H] ~[21203H]依次存放2A 4C B765H,说明下列每条指令执行完后AX寄存器的内容。
   
1 MOV AX,1200H1AX1200H
   
2 MOV AX,BX2AX0100H
   
3 MOV AX,[1200H]3AX4C2AH
   
4 MOV AX,[BX]4AX3412H
   
5 MOV AX,[BX+1100H]5AX4C2AH
   
6 MOV AX,[BX+SI]6AX7856H
   
7 MOV AX,[BX][SI+1100H]7AX65B7H

3、请分别用一条汇编语言指令完成如下功能:
1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器。
2)用寄存器BXSI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中。
3)用BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和CX寄存器的内容相加,并把结果送回存储器中。
4)用位移量为0520H的直接寻址方式把存储器中的一个字与数3412H相加,并把结果送回该存储单元中。
5)把数0A0HAL寄存器的内容相加,并把结果送回AL中。

1ADDDX,BX
2ADDAL,[BX+SI]
3ADD[BX+0B2H],CX
4ADD WORD PTR[0520H],3412H
5ADDAL,0A0H

六编程序

1.       已知两个八位无符号数xy,分别存放在BUFBUF+1单元中,且x>y。请编程序计算x-y,结果存回BUF单元。(4.1)此题为两个八位无符号数相减,我们可以直接使用减法指令SUB来实现。

   源程序如下:

  SSEG    SEGMENT   STACK ‘STACK’

  STA      DW        100 DUP(?)

  SSEG    ENDS

  DSEG   SEGMENT   ‘DATA’

BUF     DB          82,60

DSEG    ENDS

CSEG   SEGMENT   ‘CODE’

        ASSUME  CS:CSEG,DS:DSEG,SS:SSEG

START:  MOV    AX,DSEG

         MOV    DS,AX

         MOV    AL,BUF

         SUB     AL,BUF+1

         MOV    BUF,AL

         MO     AH,4CH

         INT       21H

CSEG    ENDS

         END     START

2.       已知DAT单元有一数x。现要求编程将x的低四位变为1010,最高位D7置为1,其它三位不变。

   MOV AL,DAT    ; x

     AND AL,70H   ;清低四位和D7

      OR   AL,8AH  ;置低四位为1010,D7位为1

     MOV DAT,AL   ;送回DAT单元

3.        DAT单元的内容拆成高、低各四位,然后分别存于DAT+1DAT+2的低四位。(4.1)

此类拆字问题一般均采用移位指令。先将DAT单元内容取出,屏蔽高四位,送入DAT+2单元。再将DAT单元内容右移四位。即:将高四位移至低四位,高四位补0,送入DAT+1单元。

程序如下:

MOV  AL,DAT

MOV  DAT+2,AL

AND  DAT+2,0FH

MOV  CL,4

SHR   AL,CL

MOV  DAT+1,AL

HLT

4.       DATA单元有一个二进制数x,要求编程完成运算

 

 

x+1

x>0

y=

x

x=0

 

x-1

x<0

、本题为分支加简单运算。判断条件在零的左右,分支有三条,

程序如下:

        MOV  AL,DATA

        OR   AL,AL

        JZ    L1

        JNS   I1

        DEC   AL

        JMP   L1

I1:      INC   AL

L1:     MOV   Y,AL

        HLT

5.       编一程序,要求将BUF单元开始的100个存储单元全部清零。只知以0FFH作为结束标志,又该如何处理?

本题所要做的工作是将100个连续单元逐一清零。采用循环的方法最为简单。设置一个循环计数器,每清完一个单元,计数器减1,然后判断计数器是否为0,不为0则再去清一个存储单元,否则清零工作完成。

  一般情况下,已知循环次数的,循环判断放在循环体的后面。未知循环次数但已知结束条件的,循环判断置于循环体的前面。

编程如下:

        LEA   BX,BUF

        MOV  CL,64H

LP:     MOV  [BX],0

        INC   BX

        DEC  CL

        JNZ   LP

        HLT

注:以上采用字节操作,每次清一个存储单元。也可以采用字操作,每次清两个存储单元。

程序如下:

        LEA   BX,BUF

        MOV  CX,0032H

        MOV  AX,0

LP:     MOV  [BX],AX

        ADD  BX,2

        LOOP  LP

        HLT

注:当不知道所清单元个数但已知结束条件时,可编程序如下:

        LEA   BX,BUF

        MOV  AL,0FFH

LP:     CMP  AL,[BX]

         JE   DONE

        MOV  [BX],0

        INC   BX

        JMP   LP

0 0
原创粉丝点击