假设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]


参考答案和解析
a

相关考题:

【问题1】(6分)按照表4-1所列出的数据寻址方式,说明表4-3中各汇编指令指定的操作数或操作数地址属于哪类数据寻址方式,将答案填写在答题纸的对应栏中(直接填写编号即可)。表4-3汇编指令采用的数据寻址方式指令寻址方式MOV ECX, [EAX+24]IMUL EBX, TABLE[ESI*4], 7INC WORD PTR[500]ADD EAX, TABLE[ESI]MOV EAX, [ESI][EBX]MOV [ECX], EDX

若有定义:int a[2][3];则对a数组中第i行第j列元素地址的正确引用为 ()。 A.*(a[i]+j)B. (a+i)C. *(a+j)D. a[i]+j

请编写函数fun(),该函数的功能是将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。例如:二维数组中的数据为333333334444444455555555则一维数组中的内容应是334455334455334455334455。注意:部分源程序以存在文件test_2.cpp中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。文件test39_2.cpp的内容如下:include<stdio.h>include<iostream.h>void fun(int(*s) [10],int *b, int *n,int mm,int nn){}void main( ){int w[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j;int a[100]={0}, n=0;cout<<"The matrix:\n"for(i=0; i<3; i++){for(j=0; j<4; j++cout<<w[i] [j];cout<<endl;}fun(w, a, n, 3, 4);cout<<"The A array:\n";for(i=0; i<n; i++)cout<<a[i];cout<<"\n\n";}

( 14 ) 插入排序算法的主要思想是 : 每次从未排序序列中取出一个数据 , 插入到已排序序列中的正确位置 。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; iint t=a[i];int j;for ( 【 14 】 ; j0; --j){if (t=a[j-1]) break;a[j]=a[j-1];}a[j]=t;}}protected:int *a, n; // 指针 a 用于存放数组首地址, n 用于存放数组元素个数};

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

下列程序中函数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是一个函数名,该函数的返回值是指向血型数据的指针

若有以下定义及初始化语句:int i=100;int *ip= i;int k=*ip;并假设整型数i的地址为0x12345678,指针中的地址为0x21000000,则k的值为【 】。

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

若已定义,以下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];}

插入排序算法的主要思想是:每次从未排序序列中取出一个数据,插入到己排序序列中的正确位置。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用于存放数组元素个数};

若已定义,以下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.定义char*string="China"中的string是一个字符串变量,其值为ChinaB.若有一个多维数组a,则*(a+i)与a[i]等价C.int(*p)[4]表示p为指针变量,它指向包含4个元素的一维数组D.数组名代表数组的首地址,固定不变。指针变量可通过指向数组首地址来代表对应的数组,但其值可以改变

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

下列程序中函数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.27B.6C.25D.30

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

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

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

下列程序中函数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.27B.6C.25D.30

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

以下指令哪条是错误的()。A、movl8(%edx),(%ecx)B、movl$-17,%ecxC、movl$0x4050,(%eax)D、movl%eax,%ecx

下面指令中错误的是()A、movl8(%ebp),%eaxB、movl(%eax,%ecx,4),%edxC、movl4(%edx),(%eax)D、movl%eax,4(%esp)

设i、j为int型变量名,a为int型数组名,以下选项中,正确的赋值语句是()。A、i = i + 2B、a [0]= 7;C、i++- --j;D、a(0)= 66;

若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, %eaxA、result=*p1B、result=*p3C、result=*p1+*p2D、result=*p1+*p3

下列指令的源操作数段基址在哪个段寄存器中? (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]

单选题下面指令中错误的是()Amovl8(%ebp),%eaxBmovl(%eax,%ecx,4),%edxCmovl4(%edx),(%eax)Dmovl%eax,4(%esp)

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

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

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