niusouti.com

假设int 型数组a的首地址在EDX中,i 在ECX中,现要将a[i] 的内容给EAX,则所用的汇编指令是()A.mov eax, [edx+ecx]B.mov eax, [edx+2*ecx]C.mov eax, [edx+4*ecx]D.mov eax, [edx+8*ecx]

题目

假设int 型数组a的首地址在EDX中,i 在ECX中,现要将a[i] 的内容给EAX,则所用的汇编指令是()

A.mov eax, [edx+ecx]

B.mov eax, [edx+2*ecx]

C.mov eax, [edx+4*ecx]

D.mov eax, [edx+8*ecx]


相似考题
更多“假设int 型数组a的首地址在EDX中,i 在ECX中,现要将a[i] 的内容给EAX,则所用的汇编指令是()”相关问题
  • 第1题:

    本题中定义了长度为20的-维整型数组a,并将数组元素的下标值赋给数组元素,最后打印输出数组中下标为奇数的元素。 public class javal{ public static void main(String[]args){ int a[]= Int i: for a[i]=i for i++) =1: i=0;i<20;i++){ System.out.print(”a[”+i+”]=”+a[i]+”,“); }


    正确答案:
    第1处:new int020]
    第2处:i=0;i<20
    第3处:i%2 !=0
    【解析】第1处定义了长度为20的-维整型数组a;第2处的for循环将数组元素的下标值赋给数组元素;第3处判断数组各个元素下标是否为奇数。

  • 第2题:

    若有以下定义及初始化语句:

    int i=100;

    int *ip=& i;

    int k=*ip;

    并假设整型数i的地址为0x12345678,指针中的地址为0x21000000,则k的值为【 】。


    正确答案:100
    100

  • 第3题:

    若已定义,以下fun函数的功能是:在第一个循环中给前10个数组元素依次赋1、2、3、 4、5、6、7、8、9、10;在第二个循环中使a数组前10个元素中的值对称折叠,变成1、 2、3、4、5、5、4、3、2、1。请填空。

    fun( int a[])

    {

    int i,

    for(i=1;i<=10;i++) 【 】=i;

    for(i=0;i<5;i++) 【 】=a[i];

    }


    正确答案:a[i-1]a[9-i]
    a[i-1],a[9-i]

  • 第4题:

    若已定义,以下fun函数的功能是在循环中给数组a前4个数组元素依次赋1、2、3、4;在第二个循环中使a数组前4个元素中的值对称折叠,变成1、2、2、1。请填空。

    fun(int a[])

    {

    int i;

    for(i=1;i<=4;i++)______=i;

    for(i=0;i<2;i++)______=a[i];

    }


    正确答案:a[i-1] a[3-i]
    a[i-1] a[3-i] 解析:首先第一个for循环中,由1到4,依次将i值赋给数组a。在数组中第一个元素位a[0],而第一个循环i从1开始,所以第一个空填a[i-1]。第二个循环是将数组对折,例如第一个赋值给第四个,所以由0开始,将第i个元素赋值给第3-i,即a[3-i]=a[i]。

  • 第5题:

    依次执行下列哪一个选项中的两条指令后,可以使得存放在EDX和EAX中的64位数据乘以2?(EDX中存放高32位,EAX中存放低32位)______。

    A) SHL EDX,1

    SHL EAX,1

    B) RCL EDX,1

    SHL EAX,1

    C) SHL EAX,1

    RCL EDX,1

    D) SHL EAX,1

    SHL EDX,1

    A.

    B.

    C.

    D.


    正确答案:C

  • 第6题:

    设有二维数组int a[10][20];,则a[i][j]的地址可由首元素a[0][0]的地址来表达,由此可得访问数组元素a[i][j]的表达式为【 】。


    正确答案:*(&a[0][0]+20*4*i+4*j)
    *(&a[0][0]+20*4*i+4*j) 解析:根据二维数组的定义,它的a[i][j]元素的地址应该是&a[0][0]+20*4*i+4*j,所以a[i][j]元素的值是*(&a[0][0]+20*4*i+4*j)。

  • 第7题:

    设A为存放(短)整型的一维数组,如果A的首地址为P,那么A中第i 个元素的地址为( )。A.P+i*2

    设A为存放(短)整型的一维数组,如果A的首地址为P,那么A中第i 个元素的地址为( )。

    A.P+i*2

    B.P+(i-1)*2

    C.P+(i-1)

    D.P+i


    正确答案:B

  • 第8题:

    假设寄存器%eax的值为x,%ecx的值为y,则指明下面汇编指令存储在寄存器%edx中的值() Leal(%eax,%ecx),%edx

    • A、x
    • B、y
    • C、x+y
    • D、x–y

    正确答案:C

  • 第9题:

    下面指令中错误的是()

    • A、movl8(%ebp),%eax
    • B、movl(%eax,%ecx,4),%edx
    • C、movl4(%edx),(%eax)
    • D、movl%eax,4(%esp)

    正确答案:C

  • 第10题:

    若p1、p2、p3存放在存储器中相对于寄存器%ebp中地址偏移量为8、12、16的地方,返回值result存放于寄存器%edx中,则根据下面的汇编代码有() Movl 12(%ebp), %edx Movl (%edx), %eax Movl %eax, %edx Movl 8(%ebp), %ecx Addl (%ecx), %edx Movl 12(%ebp), %eax Movl %edx, (%eax) Movl %edx, %eax

    • A、result=*p1
    • B、result=*p3
    • C、result=*p1+*p2
    • D、result=*p1+*p3

    正确答案:D

  • 第11题:

    单选题
    下面指令中错误的是()
    A

    movl8(%ebp),%eax

    B

    movl(%eax,%ecx,4),%edx

    C

    movl4(%edx),(%eax)

    D

    movl%eax,4(%esp)


    正确答案: C
    解析: 暂无解析

  • 第12题:

    单选题
    假设整型数组E的起始地址和整数索引i分别存放在寄存器%edx和%ecx中,表达式‚E+i-1‛的汇编代码实现为()。(结果存放在寄存器%eax中)
    A

    Movl-1(%edx,%ecx),%eax

    B

    Movl-4(%edx,%ecx,4),%eax

    C

    leal-1(%edx,%ecx),%eax

    D

    leal-4(%edx,%ecx,4),%eax


    正确答案: D
    解析: 暂无解析

  • 第13题:

    下列程序中函数reverse()的功能是将a所指数组中的内容进行逆置。includevoid reverse(i

    下列程序中函数reverse()的功能是将a所指数组中的内容进行逆置。 #include<stdio.h> void reverse(int a[],int n) { int i,t; for(i=0;i<n/2,i++) { t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;} } main() { int b[10]={1,2,3,4,5,6,7,8,9,10};int i,s=0; reverse(b,

    A.ptr是一个返回值是血的函数

    B.ptr是指向int型数据的指针变量

    C.ptr是指向函数的指针,该函数返回一个int型数据

    D.ptr是一个函数名,该函数的返回值是指向血型数据的指针


    正确答案:C
    解析: 本题考查的是指向函数的指针。函数指针定义的基本格式为:类型标识符(*指针变量名)()。“类型标识符”为函数返回值的类型。

  • 第14题:

    80386~Pentium微处理器中的通用寄存器包括:EAX、EBX、ECX、EDX、ESP、 EBP、EDI和ESI。其中哪些可以作为32位、16位和8位寄存器使用______。

    A.EAX、EBX、ECX、EDX、ESP、EBP

    B.ESP、EBP、EDI、ESI

    C.EAX、EBX、ECX、EDX

    D.以上都不对


    正确答案:C
    解析:EAX、EBX、ECX、EDX可以作为32位、16位或8位寄存器使用,ESP、EBP、EDI和ESI可以作为32位、16位寄存器使用。

  • 第15题:

    插入排序算法的主要思想是:每次从未排序序列中取出一个数据,插入到己排序序列中的正确位置。InsertSort类的成员函数sort()实现了插入排序算法。请将画线处缺失的部分补充完整。

    class InsertSort{

    public:

    InsertSort(int* a0,int n0):a(a0),n(n0){}//参数a0是某数组首地址,n是数组元素个数

    void sort()

    {//此函数假设已排序序列初始化状态只包含a[0],未排序序列初始为a[1]…a[n-1]

    for(int i=1;i<n;++i){

    int t=a[i];

    int j;

    for(【 】;j>0;--j){

    if(t>=a[j-1])break;

    a[j]=a[j-1];}

    a[j]==t;}}

    protected:

    int*a,n;//指针a用于存放数组首地址,n用于存放数组元素个数

    };


    正确答案:j=i
    j=i 解析:本题考查的是插入排序算法。在sort()函数中是一个两重循环,外循环从1循环递增到n-1,即遍历未排序序列a[1]…a[n-1],取未排序序列中的第1个元素a[i] (i初值等于1)与已排序序列中的最后一个元素a[i-1]开始从后往前进行比较。内循环从后往前遍历已排序序列,使循环变量j的初值为i,则a[j-1]是已排序序列的最后一个元素。所以应该填j=i

  • 第16题:

    在下列叙述中,错误的一条是______。

    A.定义char*string="China"中的string是一个字符串变量,其值为China

    B.若有一个多维数组a,则*(a+i)与a[i]等价

    C.int(*p)[4]表示p为指针变量,它指向包含4个元素的一维数组

    D.数组名代表数组的首地址,固定不变。指针变量可通过指向数组首地址来代表对应的数组,但其值可以改变


    正确答案:A

  • 第17题:

    下列程序中函数reverse()的功能是将a所指数组中的内容进行逆置。includevoidreverse(in

    下列程序中函数reverse()的功能是将a所指数组中的内容进行逆置。 #include<stdio.h> void reverse(int a[], int n) { int i,t; for(i=0;i<n/2;i++) { t=a[i];a[i]=a[a-1-i];a[n-1-i]=t;} main() { int b[10]={1,2,3,4,5,6,7,8,9,10};int i,s=0; reverse(b,10); for(i=0;i<3 ;i++) s+=b[i]; printf("%d\n",s); } 程序运行后的输出结果是( )。

    A.27

    B.6

    C.25

    D.30


    正确答案:A
    解析:本题考查函数调用时的参数传递.函数reverse将数组b进行了逆置,此时的b[10]=(10,9,8,7,6,5,4,3,2,1},后面for语句的功能是将b中的前3个数累加,将结果放在s中,最后将s输出,结果s=10+9+8=27。

  • 第18题:

    本题定义了一个长度为l0的boolean型数组,并给数组元素赋值,要求如果数组元素下标为奇数,则数组元素值 为false,否则为true。 public class javal{ pubhc static void main(String[]args){ boolean b[]= ; for(int i=0;i<10;i++){ if( ) b[i]=false; else ; } for(int i=0;i<10;i++) System.Out.print("bE"+i+"]="+b[i]+","); } }


    正确答案:
    第1处:new boolean[10]
    第2处:i%2 1=0
    第3处:b[i]=true
    【解析】第1处定义了一个长度为10的boolean型数组;第2处判断数组元素下标是否为奇数。第3处不为奇数的情况下数组元素值设为true。

  • 第19题:

    下列程序中函数reverse()的功能是将a所指数组中的内容进行逆置。 include void reverse

    下列程序中函数reverse()的功能是将a所指数组中的内容进行逆置。

    #include<stdio.h>

    void reverse(int a[],iht n)

    { int i,t;

    for(i=0;i<n/2;i++)

    { t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}

    }

    main()

    { int b[10]={1,2,3,4,5,6,7,8,9,10};int i,s=0;

    reverse(b,10) ;

    for(i=0;i<3;i++)s+=b[i];

    printf("%d\n",s);

    }

    程序运行后的输出结果是( )。

    A.27

    B.6

    C.25

    D.30


    正确答案:A
    解析:本题考查函数调用时的参数传递。函数 reverse将数组b进行了逆置,此时的 b[10]={10,9,8,7,6,5,4,3,2,1},后面for语句的功能是将b中的前3个数累加,将结果放在s中,最后将s输出,结果s=10+9+8=27。

  • 第20题:

    以下指令哪条是错误的()。

    • A、movl8(%edx),(%ecx)
    • B、movl$-17,%ecx
    • C、movl$0x4050,(%eax)
    • D、movl%eax,%ecx

    正确答案:A

  • 第21题:

    设i、j为int型变量名,a为int型数组名,以下选项中,正确的赋值语句是()。

    • A、i = i + 2
    • B、a [0]= 7;
    • C、i++- --j;
    • D、a(0)= 66;

    正确答案:B

  • 第22题:

    下列指令的源操作数段基址在哪个段寄存器中? (1)MOVAX,[BP][SI] (2)MOVAX,CS:8[DI] (3)MOVAX,2[EBP*1] (4)MOVAX,FS:4[ESP] (5)MOVAX,2[EBP][EAX] (6)MOVAX,[ECX][EBP*4] (7)MOCAX,[EDX][EBP] (8)MOVAX,ES:10[EBP][EAX*2]


    正确答案: 各指令源操作数段基址使用的段寄存器如下:
    (1)SS
    (2)CS
    (3)SS
    (4)FS
    (5)SS
    (6)DS
    (7)DS
    (8)ES

  • 第23题:

    单选题
    假设寄存器%eax的值为x,%ecx的值为y,则指明下面汇编指令存储在寄存器%edx中的值() Leal(%eax,%ecx),%edx
    A

    x

    B

    y

    C

    x+y

    D

    x–y


    正确答案: C
    解析: 暂无解析

  • 第24题:

    单选题
    假设寄存器%eax的值为x,%ecx的值为y,那么汇编代码指令leal(%eax,%ecx,5),%edx存储在寄存器%edx中的值为()
    A

    5x

    B

    5y

    C

    5x+y

    D

    5y+x


    正确答案: A
    解析: 暂无解析