汇编语言题目练习_1

一、单项选择题

1.设BX=2000H,SI=3000H,指令MOV AX,[BX+SI+8]的源操作有效地址为(  )。

源操作数的寻址方式为基址加变址寻址方式,2000+3000+8=5008H

2.设DS=1000H,ES=2000H,BX=3000H,指令ADD  AL,[BX]的源操作数的物理地址为(   )。

源操作数的寻址方式为寄存器间接寻址方式,源操作数即为[BX],在约定中,BX的约定段为DS,BP约定段为SS,因此[BX]实为DS:[BX],即物理地址为1000H*10H+3000H=13000H

3.设DS=2000H,ES=3000H,SI=200H,指令MOV  ES:[SI],AL的目的操作数的物理地址为(    )。

目的操作数的寻址方式为寄存器间接寻址方式,3000H*10H+200H=30200H

4.用来作为寄存器间接寻址的寄存器有(     )个。

4个,分别是BP、BX、SI、DI

5.指令MOV  [BX+SI],AL中的目的操作数使用(     )段寄存器。

约定数据段详细如下:堆栈段SS:BP ,数据段DS:BX、SI、DI,因此[BX+SI]使用DS段寄存器

6.指令MOV  BX,[BP+5]中的源操作数使用(   SS  )段寄存器。

7.段内间接寻址只改变(   IP  )中的内容。

8.段间间接寻址只改变(CS和IP)中的内容。

9.下列指令不改变PSW的指令是()

A.MOV   AX,BX        B.AND   AL,0FH

C.SHR    BX,CL        D.ADD   AL,BL

PSW状态寄存器

10.下述指令中不影响CF的指令是(   )。

A.SHL   AL,1            B.INC   CX

C.ADD   [BX],AL       D.SUB   AX,BX

INC影响A、O、P、S、Z,不影响C标志,SUB和ADD对六个都有影响,SHL将目的操作数顺序左移1位或CL寄存器中指定的位数。左移一位时,操作数的最高位移入进位标志位CF,最低位补零。

11.两个整数补码9CH和7AH相加运算后,会产生(   )。

                   1001 1100H

                + 0111 1010H

               ————————              两个加数最高位不同,则不溢出,且产生了进位

                 1 0001 0110H          

12.指令JMP  WORD  PTR [BX]属于(   )寻址。
A.段内直接   B.段内间接    C.段间直接   D.段间间接

13指令MOV  AX,[BX+SI+8]的源操作数属于(   )寻址。

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

14.指令(   )不改变CF的内容。

A.DEC  AL              B.ADD  AX,CX

C.SUB  [BX],CL     D.SBB   AL,DL

DEC影响A、O、P、S、Z,不影响C标志,ADD、SUB、SBB对6个状态标志位产生影响

15.十进制数字74所对应的压缩型BCD码的形式是74H。

16.十进制数字85所对应的非压缩型BCD码的形式是(  0805H  )。

17.设AL=67H,执行“CMP   AL,76H”后,AL=(    )

CMP的功能是目标操作数减去源操作数,目标操作数不变,依据减法的情况设定6个状态标志位。

18.设AL=65H,BL=29H,执行下列指令后,AL=(   94H )。
        ADD  AL,BL
        DAA//调整指令

19.压栈操作是(     )位数的操作。

A.8           B.16         C.32         D.任意

20.执行IMUL指令时,如果乘积的高位部分不是低位部分的符号扩展,则( D  )。

A.OF=0、CF=0   B.OF=0、CF=1   C.OF=1、CF=0   D.OF=1、CF=1  

出现溢出和进位

21.设AX=3762H,CL=5,执行“SHR  AX,CL”后,AX=(   B )。
A.0376H      B.01BBH      C.01BB      D.0376

原来为0011011101100010B,移位后为0000 0001 1101 1101 B
22.若要在BUF缓冲区中寻找与AL中不相等的数据,应使用( )SCASB串操作指令。
A.REPNE       B.REP        C.REPE    D.REPNZ
23.如果“JNC  L”指令的操作码放在0040H,转移后在0020H处取下一条指令的操作码,那么该条指令的位移量是(  A )。
A.20H        B.1EH        C.0DEH      D.0E0H

有待讨论?
24.如果“JA  P”指令的操作码放在0050H, 该指令的位移量为34H,执行完此条指令转 移到取下一条指令的偏移地址为(C)
A.0082H      B.0084H      C.0086H      D.0088H


25.若DS=1000H,BX=2000H,(12000H)=56H,(12001H)=78H,AX=1000H,执行“ADD AX,[BX]”指令后,AX=(    )。

7856+1000H=8856H
26.设AX、BX寄存器中存放的是有符号的二进制数据,若执行“CMP  AX,BX”指令后,(   D )L表示大于则转L。
A.JZ         B.JA       C.JGE      D.JG

JG大于则转移,JGE大于等于则转移,JL小于则转移,JLE小于等于则转移
27.执行“DIV  BX”指令后,(  C   )寄存器中存放商。
A.AL        B.AH       C.AX      D.DX

字除法,商送入AX,余数送入DX中。
28.执行“( A  )AX,BX”指令不改变AX寄存器中的内容。
A.CMP       B.ADD     C.XOR     D.OR
29.若AX=1000H,执行“NEG  AX”指令后,AX=(  C )。
A.1000H      B.0E000H   C.0F000H   D.1001H 

     AX=0001 0000 0000 0000B NEG求补后 11110000000000000B=0F00H


二、多项选择题
 1.在下列寻址方式中,用来访问内存的寻址方式有(   )。
       A.寄存器寻址     B.寄存器间接寻址     C.寄存器相对寻址     D.直接寻址
存储器操作数寻址也称为内存操作数寻址

 2.用来作为寄存器间接寻址的寄存器有(   )。
       A.AX           B.BX           C.BP          D. CX

还有SI和DI
 3.在下列指令中,源操作数使用DS段寄存器进行寄存器相对寻址的有(   )。
       A.MOV  AX,[DI+4]            B.MOV   AX,ES:[SI+8]
       C.MOV   AX,[BP+4]            D.MOV  AX,[BX+4]
SS:BP,DS:BX、SI、DI

 4.在下列指令中,源操作数的寻址方式是错误的有(   )。
A.MOV   AX,[DI+BX]  寄存器间接寻址       B.MOV   AX,[SI+DI]
C.MOV   AX,[BP+BX]                     D.MOV  AX,[DX]
 5.在下列指令中,属于段内转移指令的有( ABD  )。
A.JMP         SHORT  A                  B.JMP         [BX]

C.JMP         DWORD  PTR [BX]     D.JMP         NEAR  PTR [BX+SI]

转移和调用指令

根据转移功能的不同,可分为无条件转移指令、条件转移指令、子程序调用与返回指令和软件中断与中断返回指令。

根据转移范围的不同,可分为段内转移和段间转移。段内转移在执行时仅修改IP(EIP)的值,CS的值保持不变,段间转移同时修改CS的值和IP(EIP)的值。在转移调用指令中,条件转移指令只能实现段内转移,无条件转移指令、子程序调用与返回指令可以实现段内转移和段间转移,软件中断指令和返回指令只能实现段间转移。

按照指令操作数中转移地址给出方式的不同,可分为直接转移和间接转移。直接转移时转移调用指令的操作数是转移到的目标指令地址,这个目标地址使用目标指令的标号即符号地址方式。如果目标地址已被存放在寄存器或内存单元中并将其作为转移调用指令的操作数时即为间接转移。

1.无条件段内直接转移

JMP 标号/JMP SHORT 标号

2.无条件段内间接转移

JMP 寄存器操作数/JMP 内存操作数

3.无条件段间直接转移

JMP FAR PTR 标号/JMP 标号

4.无条件段间间接转移

JMP 内存操作数

5.条件转移指令

                     根据状态标志位进行转移

                     根据两个无符号数的相对大小:JA JNA JC JNC JNBE JBE JB/JNAE JNB/JAE

                     根据两个符号数的相对大小:JG JGE JL JLE JNLE JNL JNGE JNG

                     循环控制转移

6.子程序段内直接调用指令

CALL 同一代码段的过程名(子程序名)

7.子程序段内间接调用指令

CALL 同一代码段的寄存器操作数/CALL 同一代码段的内存操作数

8.子程序段间直接调用指令

CALL 不同代码段的过程名(子程序名)

9.子程序段间间接调用指令

CALL 不同代码段的寄存器操作数/CALL 不同代码段的内存操作数

10.子程序段内无参数返回指令

RET    注:子程序和主程序同处于一个代码段

11.子程序段间无参数返回指令

RET    注:子程序和代码段处于不同的代码段

12.子程序段内有参数返回指令

RET N(N为偶数) 子程序和主程序同处于一个代码段,从堆栈的栈顶弹出2个字节到IP,SP=SP+2,CS内容不变,之后堆栈指针再次进行运算SP=SP+N从当前栈顶向堆栈高地址方向再调整N个字节

13.子程序段间有参数返回指令

RET N(N为偶数) 子程序和主程序分别位于不同的代码段,从堆栈的栈顶弹出2个字节到IP,再弹出两个字节到CS,SP=SP+4,CS内容不变,之后堆栈指针再次进行运算SP=SP+N从当前栈顶向堆栈高地址方向再调整N个字节

14.软件中断与中断返回指令

 6.在下列指令中,错误的指令有(  ABCD)。
A.SUB         5,AL                          B.ADD        AL,BX
   C.INC         [BX]                            D.SHR         AX,6

    C可改作 INC BX。移位指令的操作数需要是寄存器操作数或内存操作数。
7.执行“CMP  AX,8003H”指令后,当AX中的无符号数高于8003H时,下列指令中有效的转移指令有(  AB )。
A.JNB  L        B.JA  L           C.JG   L           D.JNL   L

JA JB JNB无符号,JG JL有符号
8.可与串操作指令“CMPSW”指令配合使用的重复前缀有(   BCD)。
A.REP                B.REPZ              C.REPNZ            D.REPE

10.在下列的指令中,错误的指令有( ABCD  )。
A.PUSH       AL                 B.MOV AL,BX
C.PUSH       1000H            D.CALL       AX
11.可以用下列指令代替“LOOP  L”指令的有( AC  )。
A.DEC         CX                B.DEC         CX

     JNZ          L                      JNC          L

C.DEC         CX                D.DEC        CX
          CMP         CX,0                JE            L
          JE            L
三.填空题
1.在一条指令中,立即数只能作       操作数。
2.8086/8088 CPU形成的内存物理地址有   20     位。8086主存地址线为20根。
3.指令“MOV  AX,[BX+SI]”的源操作数在内存的   DS    段。
4.指令“MOV  BX,[BP+DI]”的源操作数在内存的   SS    段。
5.指令“MOV  AX,ES:[SI]”的源操作数在内存的   ES    段。
6.入栈指令使用的是  SS    段。
7.指令“ADD  [BX+SI],AL”的目的操作数是  基址变址    寻址方式。
8.指令“SUB   BX,A[SI]”的源操作数是 寄存器相对 寻址方式。
9.指令“JMP  DWORD  PTR [BX]”属于  段间间接      寻址方式。
10.可作为寄存器间接寻址的寄存器有      4       个。
11.堆栈是从   高     地址向   低地址   方向生长的。其操作遵循   LIFO     的操作原则。
12.在进行弹栈操作时应该先将弹出的数据送  目标地址      ,然后  SP+2         。
13.在进行多精度加法运算时,一般使用    ADC    指令。
14.通用的数据传送指令不影响   PSW   
15.“INC  AL” 指令不影响标志位的  CF    位。
16.若AL=11H,执行“NEG  AL” 后,AL=   0EFH  
17.JMP指令的执行   不影响  PSW寄存器中的各位。
18.两个无符号数进行比较时,可以根据   CF   标志位来判断大小。在编写程序时可使用    JA  指令来实现。
19.若执行“DIV  BX”,其被除数的高16位必须放在  DX   ,低16位必须放在   AX  
20.DAA指令只对   AL  寄存器中的内容进行调整。
21.若AL=84H,在执行CBW后,AL=   0FF84H 
22.十进制数1234的压缩型BCD码为  1234H    
23.执行 AND  AL,0FH
             JNZ   L
指令,是检测AL中的     低4  位,当它为非零则转移。
24.若移位指令的移位位数大于1时,其移位位数必须放在    CL  中。
25.如果AL=85H,CL=4,执行“SAR  AL,CL”时,AL=  0F8H   ,CF=   0  
26.在串操作指令中,SI指向      串,DI指向    目标   串。
27.如果要查找某串中与AL寄存器中有相同的字符(数),则在SCASB指令前应配合使用    REPNE(REPNZ)  重复前缀。
28.转移指令“JNZ  L ”的转移范围(十进制)是     -128~127 。该指令的第二个字节为位移量,用    补码  形式表示。
29.段内调用指令改变   IP   中的内容。
30.段间调用指令改变    IP和CS  中的内容。
四.判断题(判断下列指令是否正确,如果是错误的,请指出错误的原因)
1.ADD      AL,BX 错,两操作数类型不一致
2.MOV      [BX],SI 对
3.SUB      [BX],[SI] 错,两操作数不能同时为内存操作数
4.CMP      5,AL 错,立即数不能做目标操作数
5.MOV   CX,AX 对
6.LEA       BL,A 错,类型不一致
7.SHR       AL,6 错,移位次数大于1时应存放在CL中
8.MOV      AL,[DI+SI] 错,DI和SI不能放在一种寻址方式中
9.MOV      BL,200H 错,200H超出了一个字的范围,导致两操作数类型不一致
10.MOV      AX,DATA 对
11.INC       [BX] 错,字节还是字操作存在二义性
12.CMP      [BX],A        ;A为变量 错,两操作数不可同为内存中的数13.MOV      AX,‘+’ 对
14.MOV      AX, [BP+BX] 错,BP和BX不可同时使用在寻址方式中
15.ADD      AX,[CX] 错,CX不能作为寄存器间接寻址
16.OUT      400,AL 错,400超出8位,类型不一致
17.JNC      P 对
18.MOV      BX,OFFSET A 对
19.LEA       DI,A[SI] 对
20.CMP      AX,5 对
五.改错题(按下列指令中的原意改正下列指令)
1.DEC      [SI]         DEC  BTYE PTR [SI]
2.CMP      AL,BX                ;无符号数比较. MOV AH,0  CMP AX,BX
3.MOV     [DX],AL.        MOV SI,DX  MOV [SI],DX
4.MOV     AL,300H.        MOV  AX,300H
5.MOV     [BX],[DI]           ;字节操作 MOV AL,[DI] MOV [BX],AL
6.ADD     AL,[CX+SI].     ADD AL,CX ADD AL,[SI]
7.ADD     AL,BX                ;有符号数相加 ADD AX,BX
8.PUSH    AL            PUSH AX
9.CMP      [BX],5                ;字节比较 CMP BYTE PTR [BX],5
10.MOV     DS,1234H MOV AX,1234H MOV DS,AX
六.简答题
1.设BX=1000H,SI=2000H,位移量D=3000H,请指出下列各种寻址方式的有效地址是什么?
  (1)使用D的直接寻址

              3000H
  (2)使用BX寄存器的间接寻址

             1000H
  (3)使用BX寄存器的相对寻址

             4000H
  (4)基址变址寻址

              3000H
  (5)相对基址变址寻址

             6000H

2.请指出下列各条指令的源操作数的寻址方式是什么?
  (1)MOV    AX,BUF 直接寻址
  (2)CMP             AL,5 立即寻址
  (3)ADD     [BX+5],AX 寄存器寻址
  (4)SUB             AX,[BX+SI] 基址加变址寻址
  (5)ADC     AH,A[SI]寄存器相对
  (6)MOV    BX,[SI]寄存器间接
  (7)AND     CX,B[BP+SI]相对基址变址
  (8)JMP             WORD  PTR  [BX]段内间接寻址
  (9)JMP             P 段内直接寻址
  (10)JMP    FAR  PTR  P 段间直接

3.设 DS=2000H, BX=0100H, SI=0002H, (20100H)=12H, (20101H)=34H,(20102H)= 56H, (20103H)= 78H, (21200H)= 2AH, (21201H)= 4CH,(21202H)=B7H,(21203H)=65H,试说明下列各条指令执行完后AX寄存器中的内容是多少?
  (1)MOV    AX,1200H    

             1200H
  (2)MOV    AX,BX 

             0100H
  (3)MOV    AX,[1200H] 

             4C2AH
  (4)MOV    AX,[BX] 

             3412H
  (5)MOV    AX,[BX+1100H] 

             4C2AH
  (6)MOV    AX,[BX+SI] 

             7856H
  (7)MOV    AX,[BX+SI+1100H] 

65B7H

4.按下列各小题的要求写出相应的一条汇编语言指令。
  (1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中

                          ADD DX,BX
  (2)以BX和SI寄存器作基址变址寻址方式,把该单元中的一个字传送到AX。

                          MOV AX,[BX+SI]
  (3)以SI和位移量20H作寄存器相对寻址,将该单元中的内容与CX寄存器中的内

容相加,结果存入CX寄存器中。

                              ADD CX,[SI+20H]
  (4)清除AX寄存器的内容,同时清除CF标志位

                               XOR AX,AX
  (5)将字单元NUM与0B6H进行比较
      CMP WORD PTR NUM,0B6H
5.按下列各小题的要求使用相应的几条指令完成其操作。
  (1)将偏移量为200H的存储单元中的数与300H相加,结果存入AX寄存器中

                                    MOV      AX,[200H]

                        ADD    AX,300H
  (2)比较AX寄存器中与BX寄存器中的16位有符号数,当AX中的内容大于BX中的内容时转移到L。

                                            CMP       AX,BX 

                                           JG         L
  (3)将BUF1和BUF2中的16位数据交换

                              MOV       AX,BUF1 

                              XCHG     AX,BUF2 

                              MOV      BUF1,AX 


  (4)测试BUF字缓冲区中第15位,如果为1则转移到P

                              TEST     WORD PTR BUF,8000H 

                             JNZ       P

 

  (5)将BUFI和BUF2的字相加,结果送S缓冲区
                      MOV      AX,BUF1 

        ADD      AX,BUF2

        MOV    S,AX


6.设BX=8234H,请说明下列两条指令的区别,执行下列各指令后BX中的内容是什么?
             SHR  BX,1 
             SAR  BX,1
       SHR是逻辑右移指令,移位后空出的位补0,而SAR是算术右移指令,最高位保持不变,其他位右移一位。SHR BX,1执行后BX=411AH,执行SAR BX,1后  BX=0C11AH。 
7.分别说明下列每组指令中的两条指令的区别。
  (1) MOV   BX,BUF                     LEA  BX,BUF

             MOV   BX,BUF中的BUF是直接寻址,它是将BUF单元中的内容传送给BX。而LEA BX,BUF是将BUF的偏移地址送BX。 
  (2) OR    BL,0FH                     AND  BL,0FH

             OR是或指令,AND是与指令
  (3) JMP   SHORT  L                  JMP  L

             第一句是短位移,8位,第二句是16位
  (4) MOV  AX,BX                        MOV  AX,[BX]

             MOV  AX,BX的源操作数是BX中的内容,即寄存器寻址。而MOV AX,[BX]中的源操作数是BX所指向的内存单元中的内容,即寄存器间接寻址。
  (5) MOV  AX,[BX+DI]                 MOV  AX,[BP+DI]
             MOV  AX,[BX+DI]使用的是DS段,而MOV  AX,[BP+DI]使用的是SS段。
8.说明下列各指令的源操作数和目的操作数的存储地方。
  (1)MOV     [2000H],AX

             源操作数在AX寄存器中,结果存放在内存的2000H单元。

  (2)ADD     AX,[BX+5]

             源操作数在内存,结果存放在AX中。
  (3)LEA       SI,BUF

             源操作数在指令中,即BUF的偏移地址,结果存放在SI中。
  (4)DAA

             源操作数和结果都在AL中。

  (5)MUL      BL
             源操作数在BL中,结果存放在AX中。
9.指出下列无条件转移指令的转移目标地址是什么?存放在何处?
  (1)JMP      BX

             BX中的内容做目标地址的偏移地址。
  (2)JMP      WORD PTR [BX]

             BX所指字单元中的内容作目标地址的偏移地址。
  (3)JMP      DWORD PTR [BX]

             BX所指字单元中的内容作目标地址的偏移地址,下一字单元中的内容作段地址。
  (4)JMP      P

             P的地址
  (5)JMP      SHORT  R
             R的地址
10.说明MOVSB和CMPSB各能使用哪些重复前缀?
             MOVSB只能使用REP重复前缀,CMPSB能使用REPZ,REPNE,REPE和REPNZ重复前缀。
七.程序分析题

1.现有程序段如下:
MOV     AX,1234H
MOV     BX,60H
ADD     AX,BX

  请回答:(1)该程序段完成的功能是什么?

                两数1234H和60H相加,结果存放在AX中。
       (2)程序段执行完后AX=    1294H       

2.现有程序段如下:

MOV     AX,0603H
MOV     BL,8
AAD

DIV        BL

  请回答:(1)该程序段完成的功能是什么?

              实现两个未压缩BCD码的除法

       (2)程序段执行完后AX=    0707H      


3.设AX=0D023H,BX=9FD0H,试分析执行完如下程序段后程序转向何处?

ADD     AX,BX

JNO      L1

JNC      L2

SUB      AX,BX

JNC      L3

JNO      L4

JMP      L5

     1101 0000 0010 0011

   +1001 1111 1101 0000

———————————————

    10110 1111 1111 0011

溢出,O为1,最高位进位C为1,

      1101 0000 0010 0011

    -1001 1111 1101 0000

———————————————

     0011 0000 0101 0011

溢出O为1,最高位借位C为1

则最后无条件转移L5


4.程序段如下:

MOV     AX,X

MOV     DX,X+2

ADD     AX,Y

ADC      DX,Y+2

ADD      AX,36

ADC      DX,0

SUB      AX,Z

SBB       DX,Z+2

MOV     W,AX

MOV     W+2,DX
  请回答:(1)该程序段完成的功能是什么?

算X+Y+36-Z

      (2)该程序的操作数是何类型?字

      (3)结果存放在何处?W


5.设A为字节变量,变量中的内容分别为64H、52H;B为字节变量,变量中的内容分别为12H、46H,现有程序段如下:

MOV     AL,A

SUB      AL,B

DAS

MOV     C,AL

MOV     AL,A+1

SBB       AL,B+1

DAS

MOV     C+1,AL


  请回答:(1)该程序段完成的功能是什么?

实现两个压缩型BCD码的减法,即A-B,结果送C。

 

 2)最后结果是什么?

             0652H
6.现有程序段如下:

MOV     BL,AL

MOV     CL,4

SHR      BL,CL

MOV     A,BL

AND     AL,0FH

MOV     B,AL


  请回答:(1)该程序段完成的功能是什么?

             将AL中的八位数分高低4位分别存放在A和B中

 

       (2)如果AL的初值为56H,则A=      05H,B=    06H    


7.现有程序段如下:

MOV     AL,8

MOV     BL,7

MUL      BL

AAM  

ADD     AX,3030H

XCHG  AH,AL

MOV   BUF,AX


  请回答:(1)该程序段完成的功能是什么?

将两数相乘的结果转换成ASCII码存放在BUF中。

 

      (2)BUF两个单元中的值分别为     35H,36H  


8.现有程序段如下:

MOV     AX,M

MOV   DX,N

SHR      DX,1

RCR      AX,1


  请回答:(1)该程序段完成的功能是什么?

                          将M:N中的32位右移一位。

      (2)若M=1234H,N=5678H,程序运行后DX=    091AH   ,AX=   2B3CH     。


9.现有程序段如下:

XOR     AX,AX

MOV     AX,6342H

MOV     CX,0404H

ROL      AH,CL

XCHG  CH,CL

ROR      AL,CL


  请回答:(1)该程序段执行后AX=       3624H 

      (2)CF=      0   


10.现有程序段如下:

          MOV     AX,1

          MOV     BX,2

          MOV     CX,4

          MOV     DX,3

L: INC      AX

          ADD     BX,AX

          SHR      DX,1

          LOOPNZ  L


  请回答:(1)该程序段的循环次数是多少? 2

      (2)该程序段执行完后AX=    3 ,BX=    7   ,CX= 4     ,DX=   0   


11.现有程序段如下:

          MOV     CX,16

          MOV     BX,0

          MOV     DX,1

L: MOV     AX,9AB8H

         AND     AX,DX

         JZ        N

         INC       BX

N: SHL       DX,1

         LOOP    L

         MOV  M,BX

  请回答:(1)该程序段完成的功能是什么?

                          统计9AB8H中为1的位数

      (2)该程序段执行完后(M)=      8   


12.现有程序段如下:

        CLD 

        MOV     SI,OFFSET  BUF1

        MOV     DI,OFFSET  BUF2

        MOV     CX,100

        REP       MOVSB


  请回答:该程序段完成的功能是什么?将BUF1中100个字节的数据传送到BUF2中。

       


13. 现有程序段如下:

        CLD

        LEA       DI,BUF

        MOV     AL,20H

        MOV     CX,100

        REPNZ  SCASB


  请回答 :(1)该程序段完成的功能是什么?查找BUF中为空格(20H)字符。

 

(2)若ZF=1,表示BUF中      值为20H数据

      (3)若BUF的首地址为0,ZF=0,执行完该程序段后DI=     100H    。


14.现有程序段如下:

MOV     AL,0

MOV     BL,1

MOV     CX,10

L:  ADD      AL,BL

INC       BL

LOOP    L


  请回答:(1)该程序段完成的功能是什么?

实现1+2+3+……+10

 

      (2)该程序执行完后,AL=      37H    。


15.现有程序段如下:

MOV     AX,M

CMP      AX,N

JA          L

MOV     AX,M+2

CMP      AX,N+2

JAZ       L

MOV     FLG,BYTE  PTR 0

JMP      P

L:  MOV     FLG  BYTE  PTR 1

    P:  …


  请回答:(1)该程序段完成的功能是什么?

两个32位的无符号数M和N比较,大小等于则1→FLG,否则0→FLG。

      (2)若M=1234H,N=5678H,则FLG=     0   


16.现有程序段如下:

MOV     CX,100

LEA       BX,BUF 

MOV     DX,0

L1:MOV     AL,<, /FONT>[BX]

CMP      AL,10

JL               L2

INC       DX

L2:INC      BX

LOOP    L1


  请回答:(1)该程序段完成的功能是什么?

                         统计有符号数BUF缓冲区中大于等于10的字节个数,其个数放DX。

      (2)如果将JL改为JG,该程序段完成的功能又是什么?

                         统计有符号数BUF缓冲区中小于等于10的字节个数,其个数放DX。
17.设TAB中存放的数据为30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,现有程序段如下:

LEA       BX,TAB

MOV     AL,X           ;X为数字0~9

XLAT


  请回答:(1)该程序段完成的功能是什么?

                            将X的数字转换成ASCII码。

      (2)若X中的内容为4,则AL=   34H     。


18.现有程序段如下:

          LEA       SI,BUF1

          LEA       DI,BUF2

          MOV     CX,100

L: MOV     AL,[SI+100]

          MOV     [DI],AL

          INC      DI

          DEC     SI

          LOOP    L


  请回答:该程序段完成的功能是什么?

        将BUF1中100个字节倒序传送到BUF2中。
19.现有程序段如下:

          MOV     AX,BUF 

          CMP      AX,0

          JNS       L

          MOV     BX,BUF+2

          NEG      BX

          MOV     BUF+2,BX

          NOT     AX

          ADC      AX,0

          MOV     BUF,AX

L:  …  


  请回答:该程序段完成的功能是什么?

         将BUF缓冲区中的32位数据取绝对值存放在BUF中。
20.现有程序段如下:

MOV     AL,X

          AND     AL,0FH

          JZ        L

          MOV     BYTE  PTR  FLG,1

          JMP      M

L: MOV     BYTE  PTR  FLG,0

M: …
  请回答:该程序段完成的功能是什么?

       检测X中的低4位是否全为0,是则1FLG,否则0FLG
八.程序设计题
1.使用串操作指令,将BUF缓冲区中的100个字节清0。

       MOV           CX,100

       MOV           AL,0

       LEA             DI,BUF

       REP             STOSB

2.比较5个字节的字符串A和B,若两个串相等则字节标志单元FLG置0;否则清1。

   MOV           CX,5

    LEA             DI,A

     LEA             SI,B

    REPE          CMPSB

    JZ              L

    MOV          BYTE  PTR  FLG,1

    JMP            M

L:MOV           BYTE  PTR  FLG,0

M:…

3.设BUF缓冲区中有100个字数据。编写程序段统计100个字数据中数据为0的个数,

并将统计的结果存放在DL寄存器中。

MOV           CX, 100

MOV            DL, 0

 LEA             BX, BUF

L:MOV           AL, [BX]

       CMP            AL, 0

       JNZ             M

       INC             DL

  M:INC             BX

       LOOP          L

4.计算Z=(X+5)*Y+30,(X,Y为无符号字节数据)。

       MOV           AL, X

       ADD           AL, 5

       MUL            Y

       ADD           AL, 30

       ADD           AH, 0

       MOV          Z, AX

5.将DX:AX:BX中的48位数乘以2。

       SAL             BX, 1

       RCL            AX, 1

       RCL            DX, 1

6.将有100个字符的缓冲区BUF中的$符号用空格(20H)代替。

       MOV           CX, 100

       LEA             BX, BUF

L:MOV           AL, [BX]

       CMP            AL, ‘$’

       JNZ             M

       MOV           AL, 20H 

       MOV            [BX], AL

     M:INC            BX

       LOOP          L

7.将有符号的字数据A和B中的大者存入C中。

       MOV           AX, A

       CMP            AX, B

       JA              L

       MOV           AX, B

L:MOV           C, AX

8.测字单元A中的第四位是否为0,是则FLG置1,否则清0。

MOV           AX, A

       AND           AX, 10H

       JZ              L

       MOV            AL,0

       JMP            M

L:MOV           AL,  1

M:MOV          FLG, AL

9.将DX:AX中的32位数据逻辑左移2位。

       SHL             AX, 1

       RCL            DX, 1

       SHL             AX, 1

       RCL            DX, 1

10.将100个元素的字数组A中的每个元素减1。

       MOV           CX, 100

       LEA             BX, A

   L:INC            WORD PTR [BX]

       ADD           BX, 2

       LOOP         L

 

猜你喜欢

转载自blog.csdn.net/qq_37865996/article/details/84020618
今日推荐