汇编语言设计复习题.docx

上传人:b****8 文档编号:29871150 上传时间:2023-08-03 格式:DOCX 页数:15 大小:20.35KB
下载 相关 举报
汇编语言设计复习题.docx_第1页
第1页 / 共15页
汇编语言设计复习题.docx_第2页
第2页 / 共15页
汇编语言设计复习题.docx_第3页
第3页 / 共15页
汇编语言设计复习题.docx_第4页
第4页 / 共15页
汇编语言设计复习题.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

汇编语言设计复习题.docx

《汇编语言设计复习题.docx》由会员分享,可在线阅读,更多相关《汇编语言设计复习题.docx(15页珍藏版)》请在冰豆网上搜索。

汇编语言设计复习题.docx

汇编语言设计复习题

一、选择题

1.应用程序具有3个基本段,可执行指令应该保存于( A  )。

A)代码段   B)数据段  C)堆栈段       D)附加段

 

2.8位补码F3H要扩展成16位补码应该是( D  ),这样其真值才不变。

A)F0F3H     B)00F3H  C)10F3H        D)FFF3H

 

3.“mov[ebx+8],eax”指令的目的操作数采用( C  )寻址方式。

A)存储器间接B)寄存器 C)寄存器相对    D)立即数

 

4.执行“sarebx,1”指令后,ebx最高D31位一定等于( D  )

A)0         B)1    C)D0位      D)D30位

 

5.在代码段内的-128~127个字节前后范围的跳转,可以用( C  )类型名表示。

A)WORD  B)DWORD   C)SHORT  D)FAR

 

6.在Windows控制台环境,在当前光标显示信息应该使用( B  )函数(功能)。

A)ReadConsole    B)WriteConsole    

C)MessageBox     D)GetStdHandle

 

7.汇编语言源程序经汇编后不能直接生成( C  )

A)OBJ文件   B)LST文件   C)EXE文件      D)CRF文件

 

8.在ADD指令中,两个操作数的物理位置不可以安排在( A )中。

A)两个主存储单元           

B)一个主存储单元和一个数据寄存器

C)两个数据寄存器

D)一个堆栈单元和一个数据寄存器

 

9.假定ax=6987h,执行指令cmpax,0eb30h后,则标志位CF和OF的状态( C )。

A)0,0        B)0,1      C)1,0           D)1,1

 

10.假定esp=00120100h,eax=1f6c2107h,执行指令pushax后,存放数据07h的物理地址是( C )。

A)00120104hB)00120101h     C)001200fch      D)001200ffh

 

11.下列对标志寄存器中标志位产生影响的指令是( B  )

A)jmp done             B)shl eax,2

C)call subp             D)not eax

 

12.假设CL=98H,执行“MOVSXDX,CL”后,DX=( D  )

A)F098H     B)0098H  C)1098H        D)FF98H

 

13.“mov80h[esi],eax”指令的目的操作数采用( C  )寻址方式。

A)存储器间接B)寄存器 C)寄存器相对    D)变址寻址

 

14.要在程序中定义缓冲区BUF,保留9个字节存储空间的语句是(C  )。

A)BUF   DW 9              B)BUF    DB   9

C)BUF   DB  9DUP(?

)      D)BUF    DW 9DUP(?

 

15.下列指令执行后总是使CF=0,OF=0的是( A  )。

A)AND    B)NEG    C)MOV    D)INC

 

16.下面指令的表示中,错误的操作是( C  )

A)mov eax,[ebx+esi]    B)jmp nearptrdon1

C)dec [ebx]             D)mul cx

 

17.测试BL寄存器内容是否与数据4FH相等,若相等则转NEXT处执行,可实现的方法是( A )

 A)xorbl,4fh              B)testbl,4fh

   jznext                    jznext 

 C)andbl,4fh              D)orbl,4fh

   jznext                    jznext

 

18.下列寄存器组中在段内寻址时不可以提供偏移地址的寄存器组是( C   )

A)ECX,EBX                 B)EDI,EBP

C)EIP,EAX                  D)EDX,ESI

 

19.若要使寄存器AL中的高4位不变,低4位为0,所用指令为(  B  )

     A)AND AL,0FH           B)AND AL,0F0H

C)OR  AL,0FH            D)OR  AL,0F0H

 

20.将汇编语言源程序文件翻译成目标代码文件的过程,称为(  A  )

A)汇编    B)编辑   C)连接       D)调试

 

21. ADD求和指令的结果最高位为1,则SF=(  B  )

A)0       B)1      C)任意       D)不影响

 

22.子程序最后,通常需要执行的返回指令是(  D  )

A)LOOP     B)JZ  C)CALL         D)RET

 

23.“moveax,[ebx][esi]”指令的源操作数采用( A  )寻址方式。

A)基址变址   B)寄存器      C)寄存器相对    D)存储器间接

 

24.若CL=4,AX=0FF0FH,执行语句“ROL AX,CL”后,AX=( C  )

       A)0FFFFHB)0FFF0H         C)0F0FFH           D)0FFFH

 

25.JMP WORD PTR[EBX]转移的目标地址是( D   )

  A)EBX中的内容        B)ESP+EBX的和

  C)EIP+[EBX]之和       D)EBX指示的内存单元的内容

 

二、填空题

1.IA-32处理器有三种操作模式分别是:

 保护模式 、实地址模式、系统管理模式。

 

2.在实地址工作方式下,逻辑地址“1460H:

100H”表示的物理地址是14700H  。

 

3.“cmpebx,98”指令之后是“jzagain”指令,发生控制转移的条件是EBX=   98      ,此时ZF=      1    。

4.伪指令“xyzdword67762000h”定义的变量保存于IA-32的存储器中,则从低地址到高地址每个字节依次是  00 、 20 、 76 和 67   。

 

5. movax,1234h;

      xorax,00ffh;

  上述两条指令执行后:

ax=12cbh ,CF=OF=0  ,SF=0  ,ZF=0  , PF=0.

 

6.利用堆栈传递子程序参数的方法是固定的,例如:

寻找堆栈段数据的寄存器是      EBP     

 

7.JMP指令根据目标地址的转移范围和寻址方式,可以分为四种类型:

段内转移、相对转移、段内转移、间接转移 以及段间转移、直接转移  、段内转移、间接转移 。

 

8.IA-32处理器工作在保护方式时,可以使用  平展 和   段式     存储模型。

 

9.数据段有语句“VARDWORD99008843H”,代码段指令“MOVCX,WORDPTRVAR”执行后,CX=8843H  。

 

10.数据段有语句“ABCBYTE1,2,3”,代码段指令“MOVCL,ABC+2”执行后,CL=3   。

 

11.已知ESI=04000H,EBX=10H,指令“MOVEAX,[ESI+EBX*2+8]中访问的有效地址是 04028H  。

 

12.假设在平展存储模型下,EBX=1256H,双字变量TABLE的偏移地址是40100H,线性地址41356H处存放40107H,执行指令“JMPEBX”后EIP=        1256H  ,执行指令“JMPTABLE[EBX]”后EIP=40107H    

 

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

      .data

 org2000h

      vard    dword1234h

      varw word 3*20

      msg     byte     ’hello!

’,’0’

     n1      equ     $-msg

      count    equ     5

      buf word  countdup(5,3dup(1,2),0)

      array dwordvarw

问题:

(1)执行MOVEBX,OFFSETVARD后,EBX= 2000H     

(2)执行MOVECX,TYPEBUF后,ECX=       2              

      MOVEDX,SIZEOFVARD后,EDX=       4              

(3)经汇编后,BUF占有的存储空间是     80            字节

(4)经汇编后,$=      200DH     ,N1=       7           

    Array= 2004H                     

 

14.执行“SHREBX,4”指令后,JNC发生转移,则说明EBX的D3= 0      

 

15.子程序的参数传递主要有三种,它们是 寄存器传递          、

      共享变量传递             、   堆栈传递            

 

三、程序阅读题

1.填写下面指令的执行结果。

      moveax,3721h

      addeax,9;EAX=  372A  H

      movebx,50h

      subebx,8;EBX=  48   H

      movedi,9eh

      xoredi,7fh    ;EDI=  E1    H

 

2.填写下面指令执行的结果。

      moval,82h     ;

      movsxbx,al    ;BX=FF82h

      movsxebx,al  ;EBX=FFFFFF82h

      movcx,1000h ;

      movsxedx,cx ;EDX=00001000h

 

3.填写下面指令执行的结果。

      movax,20000

      movbl,10

      divbl

      ;以上代码是否产生溢出  是   

 

4.数据段有如下定义,IA-32处理器将以小端方式保存在主存:

var  dword 12345678h

现以字节为单位按地址从低到高的顺序,写出这个变量内容。

并说明如下指令的执行结果:

      moveax,var   ;EAX=12345678h

      movcx,wordptrvar+2 ;CX=1234h    

      movdh,byteptrvar+3  ;DH=12h      

 

5.填写下面指令的执行结果。

      moveax,3721h

      addeax,9      ;EAX=  372A  H

      movebx,50h

      subebx,8      ;EBX=  48  H

      movesi,9eh

      andesi,80h   ;ESI=  80    H

 

6.填写下面指令执行的结果。

      .data

array      dword616h,727h,838h ;假设该变量的存储器地址是40100H

      .code

      movesi,array+4    ;ESI=   727H         

      movedi,offsetarray     ;EDI=   40100H       

      movedx,[edi];EDX=   616H         

      pusharray+8  ;array+8=   838H         

      popecx  ;ECX=   838H         

 

7.分析下面程序段:

            moveax,2000h

       movebx,5000h

       mov[ebx+100h],60h

          addeax,[ebx+100h]

        leaesi,[ebx+100h]

        mov ebx,eax

程序段执行后,ESI=  5100    H,EBX=     2060   H

 

8.填写下面指令的执行结果。

      moveax,3721h

      addeax,9;EAX=  372A  H

      movebx,50h

      subebx,8;EBX=  48  H

      movesi,9eh

      andesi,80h    ;ESI=  80    H

 

9.填写下面指令执行的结果。

          moveax,0ffh

         movebx,1000h

        callsub1

         inceax

            decebx

        ;子程序

sub1    proc

         addeax,ebx

         xchgeax,ebx

         ret

sub1    endp

程序段执行后,EAX= 1001     H,EBX=   10FE  H。

 

四、语句填空题

1.在下面程序段实现下述功能:

求:

z=|x-y|,设x,y,z分别为双字数据的无符号变量名称。

             mov     eax,x

             cmp     eax,y  

             jb below  

             subeax,y

       mov       z,eax

 below:

  mov     eax,y

             subeax,x

 done:

 movz,eax

 

2.下列程序段将EAX中值乘以9,请将程序填写完整。

             push   eax   

             shl     eax,3 

             pop     ebx

             add      eax,ebx

 

3. 以下程序段用于计算符号函数。

 的取值范围为32位的有符号数,试填写方框中的指令。

         mov     eax,x

            cmp     eax,0

            jz       zero

             js      nega 

        mov     eax,1

             jmp     ok    

zero:

    xor      eax,eax

         jmp       ok    

nega:

   mov    eax,0ffffffffh

ok:

      mov    y,eax

 

4.下列程序段求数组ARRAY的累加和。

请将程序填写完整。

array    word 45h,68h,………….,0abc1h,9600h;

            mov    esi,offsetarray  

             mov     ecx,lengthofarray

             xor      eax,eax

again:

  add     eax,[esi]

             add     esi,2

             loop   again   

 

5.已知从BUF单元起存有若干带符号数,将其中的正数找出并存入PLUS单元,负数存入MINUS单元,把下列程序填充完整。

   .data    

          buf   dword 12,-2,555,1000,-80,-2000,6,99,-111,-235

          cn    equ   $-buf

          plus  dword  cn  dup(?

          minus dword  cn  dup(?

      .code   

   start:

    mov esi,0

            mov edi,offset plus

            mov ebx,offset minus

            mov ecx,cn      

next:

    mov eax,buf[esi*(typebuf)]

            inc  esi

            test  eax,800000000h

            jnz  pp            

            mov [edi],eax

            add  edi, 4        

            jmp  lp

pp:

      mov [ebx],eax

            add  ebx, 4        

lp:

      loop   next   

 

6.以下程序段用于计算符号函数。

      

  的取值范围为32位的有符号数,试填写方框中的指令。

         mov     eax,x

            cmp     eax,0

            jz       zero

             js     nega 

       mov     eax,1

             jmp     ok    

zero:

    xor      eax,eax

         jmp       ok    

nega:

   mov    eax,0ffffffffh

ok:

      mov    y,eax

 

五、编制程序题

1.   求 的绝对值,结果存入result单元中。

.data

Xdword100

Ydword200

resultdword?

.code

start:

moveax,x

subeax,y

jnsAl

negeax

Al:

  movresult,eax

   endstart

2.编写程序从键盘接受两个有符号十进制数A和B,将它们按照大小顺序显示。

;本题答案没有,自己写的,而且没有考虑溢出情况(就是懒),没调试,错了不管

.data

   msgbyte13,10,0

.code

callreadsid

movebx,eax

callreadsid

cmpeax,ebx

jnshehe

pusheax

moveax,ebx

popebx

hehe:

calldispsid

moveax,offsetmsg

calldispmsg

moveax,ebx

calldispsid

 

3.编写一个程序片段,首先测试双字变量DVAR的最高位,如果为1,则显示字母”L”;如果最高位不为1,则继续测试最低位,如果最低位为1,则显示字母”R”,如果最低位也不为1,则显示字母”M”。

字符显示子程序为dispc,它具有显示AL寄存器中ASCII字符的功能。

.code

moveax,dvar     

            shl eax,1

            jc  one

            movebx,dvar

       shr  ebx,1

            jc  two

            moval,‘R’

       jmpdone

two:

    moval,‘M’

       jmpdone

one:

    moval,‘L’

done:

   calldipsc

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学反思汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1