定义字符串变量STR1和STR2如下,其中,变量STR1的偏移地址=0。 STR1 DB ‘Hello,Everybody!’ STR2 DB ‘Hello, Everyone!’ 则执行以下程序段后,SI=()H LEA SI,STR1 LEA DI,STR2 MOV CX,16 CLD REPE CMPSB JZ STOP DEC SI MOV BX,SI MOV AL,[SI] STOP:HLT

题目

定义字符串变量STR1和STR2如下,其中,变量STR1的偏移地址=0。 STR1 DB ‘Hello,Everybody!’ STR2 DB ‘Hello, Everyone!’ 则执行以下程序段后,SI=()H LEA SI,STR1 LEA DI,STR2 MOV CX,16 CLD REPE CMPSB JZ STOP DEC SI MOV BX,SI MOV AL,[SI] STOP:HLT


相似考题
更多“定义字符串变量STR1和STR2如下,其中,变量STR1的偏移地址=0。 STR1 DB ‘Hello,Everybody!’ STR2 DB ‘Hello, Everyone!’ 则执行以下程序段后,SI=()H LEA SI,STR1 LEA DI,STR2 MOV CX,16 CLD REPE CMPSB JZ STOP DEC SI MOV BX,SI MOV AL,[SI] STOP:HLT”相关问题
  • 第1题:

    以下程序段的作用是将STR1的后【 】个数据传送到STR2中。

    STR1 DB 300 DUP(?)

    STR2 DB 100 DUP(?)

    MOV CX,100

    MOV BX,200

    MOV SL,0

    MOV DI,0

    NEXT:MOV AL,STRl1[BX][SI]

    MOV STR2[DI],AL

    INC SI

    INC DI

    LOOP NEXT


    正确答案:100
    100

  • 第2题:

    下面的程序段 DAT DB 1,2,3,4 MOV AL,0 MOV CX,4 MOV SI,3 LP: ADD AL,DAT [SI] DEC SI LOOPE LP HLT 执行结束后,AL和CX寄存器中的内容分别是

    A.4和3

    B.7和2

    C.9和1

    D.10和0


    正确答案:A
    解析:该题考查考生对汇编指令的理解。LOOPE循环指令只有在ZF=1且CX> 0时,才进行循环,本题中当执行到LOOPE指令时,ZF=0而且CX=3,不满足循环条件,所以退出循环,此时AL和CX的值分别是4和3,所以应该选择A。

  • 第3题:

    下面的程序段DAT DB 1, 2, 3, 4 MOV AL, 0 MOV CX, 4 MOV SI, 3LP: ADD AL, DAT [SI] DEC SI LOOPE LP HTL 执行结束后,AL和CX寄存器中的内容分别是

    A.4和3

    B.7和2

    C.9和1

    D.10和0


    正确答案:A
    解析:该题考查考生对汇编指令的理解。LOOPE循环指令只有在ZF=1且CX>0时,才进行循环,本题中当执行到LOOPE指令时,ZF=0而且CX=3,不满足循环条件,所以退出循环,此时AL和CX的值分别是4和3,所以应该选择A。

  • 第4题:

    执行下列指令后,(CL)=______。 STR1 DW 'AB' STR2 DB 16DUP(?) CNT EQU $-STR1 MOV CX,CNT MOV AX,STR1 HLT

    A.10H

    B.0EH

    C.12H

    D.0FH


    正确答案:C

  • 第5题:

    设char str1[11]="HELLO,",str2[10]=“world”;则执行语句cout<

    设char str1[11]="HELLO,",str2[10]=“world”;则执行语句 cout<<strlen(strcpy(str1,str2)));后的输出结果是 ______。

    A.12

    B.11

    C.7

    D.5


    正确答案:D

  • 第6题:

    判断下列指令是否正确。若不正确,指出错误原因。 (1)MOV SI, DL (2)MOV ES, 1000H (3)LEA AX, 3006H (4)MOV [BP][DI], 0 (5)MOV [SI], [DI] (6)MOV [DI],[BX] (7)MOV [DX+SI],AL (8)MUL AL , 58H (9)MOV DS,SEG DAT (10)MOV WORD PTR [BX],-1


    正确答案: (1)指令MOV SI, DL是错误的,两个操作数类型不匹配。
    (2)指令MOV ES, 1000H是错误的,装载段寄存器时,源操作数不能为立即数。
    (3)指令LEA AX, 3006H是错误的,LEA指令的源操作数必须为内存操作数。
    (4)指令MOV [BP][DI], 0是错误的,操作数类型无法确定。
    (5)指令MOV [SI], [DI] 是错误的,不能同时出现两个内存操作数。
    (6)MOV [DI],[BX] ;错,存储器不能传存储器
    (7)MOV[DX+SI],AL; 错,DX不能用作基址寻址
    (8)MUL AL , 58H ;错,乘法指令不能用立即数
    (9)MOV DS,SEG DAT;错,立即数不能送段寄存器
    (10)MOV WORD PTR [BX],-1 ;正确 ,-1送BX指示的字单元

  • 第7题:

    已知下列程序:  D1     DB    10  DUP(?)  D2     DB    30H,31H,32H,33H,34H,35H,36H,37H,38H,39H                    ┇  MOV    CX,LENGTH    D1  MOV    SI,SIZE    D1—TPYE D1  LP:MOV    AL,D2[SI]  MOV    D1[SI],AL  SUB     SI,TYPE D1  DEC     CX  JNZ      LP  HLT  问: (1)该程序执行后,D1单元开始的10个字节内容是什么?  (2)该程序完成的功能是什么?


    正确答案: (1)该程序执行后,D1开始的10个字节内容为:0~9的ASCII码.即30H,31H,32H,33H,34H,35H,36H,37H,38H,39H.
    (2)功能是将从变量D2单元开始存放的10个字节数据传送到从D1单元开始的10个字节单元中.

  • 第8题:

    有一段程序如下: MOV CX,100 LEA SI,XSI MOV DI,OFFSET CLD REP MOVSW REP执行是完成什么操作?


    正确答案:REP实现的操作室重复执行MOVSW,.具体的操作室CX←CX-1,若CX≠0则重复执行MOVSW,否则结束。

  • 第9题:

    判断下列指令是否正确。若不正确,指出错误原因。  (1)MOV AX, [EBX]  (2)MOV SI, DL  (3)MOV EBP, [ESP][EAX*3] (4)LEA AX, 3006H   (5)MOV [BP][DI], 0    (6)MOV [SI], [DI]   (7)MOV ES, 1000H   (8)MOV AX, X+2  (9)MOV AX, CX+2    (10)MOV [EAX][EAX*2], AL 


    正确答案: (1)指令MOV AX, [EBX]是正确的。
    (2)指令MOV SI, DL是错误的,两个操作数类型不匹配。
    (3)指令MOV EBP, [ESP][EAX*3] 是错误的,比例因子不能为3。
    (4)指令LEA AX, 3006H是错误的,LEA指令的源操作数必须为内存操作数。
    (5)指令MOV [BP][DI], 0是错误的,操作数类型无法确定。
    (6)指令MOV [SI], [DI] 是错误的,不能同时出现两个内存操作数。
    (7)指令MOV ES, 1000H是错误的,装载段寄存器时,源操作数不能为立即数。
    (8)如果“X”是用常数表达式定义的符号(例如:X   EQU   5+6),或者是用“DW”定义的内存变量,指令MOV AX, X+2是正确的。否则这条指令是错误的。
    (9)指令MOV AX, CX+2是错误的,源操作数表达式CX+2不是一个可以直接计算的“常数表达式”。
    (10)指令MOV [EAX][EAX*2], AL是正确的。

  • 第10题:

    有变量定义语句“Dim Str1,Str2 As String *10”,其中Str1变量的类型应为(),其中Str2变量的类型应为()。


    正确答案:变体型;字符串型

  • 第11题:

    有一段程序如下: MOV CX,100 LEA SI,XSI MOV DI,OFFSET CLD REP MOVSW 该程序段完成了什么功能?


    正确答案:该程序段实现将从DS:XSI存储单元开始的200个字数据转移到ES:XS2开始的存储区中。

  • 第12题:

    问答题
    判断下列指令是否正确。若不正确,指出错误原因。 (1)MOV SI, DL (2)MOV ES, 1000H (3)LEA AX, 3006H (4)MOV [BP][DI], 0 (5)MOV [SI], [DI] (6)MOV [DI],[BX] (7)MOV [DX+SI],AL (8)MUL AL , 58H (9)MOV DS,SEG DAT (10)MOV WORD PTR [BX],-1

    正确答案: (1)指令MOV SI, DL是错误的,两个操作数类型不匹配。
    (2)指令MOV ES, 1000H是错误的,装载段寄存器时,源操作数不能为立即数。
    (3)指令LEA AX, 3006H是错误的,LEA指令的源操作数必须为内存操作数。
    (4)指令MOV [BP][DI], 0是错误的,操作数类型无法确定。
    (5)指令MOV [SI], [DI] 是错误的,不能同时出现两个内存操作数。
    (6)MOV [DI],[BX] ;错,存储器不能传存储器
    (7)MOV[DX+SI],AL; 错,DX不能用作基址寻址
    (8)MUL AL , 58H ;错,乘法指令不能用立即数
    (9)MOV DS,SEG DAT;错,立即数不能送段寄存器
    (10)MOV WORD PTR [BX],-1 ;正确 ,-1送BX指示的字单元
    解析: 暂无解析

  • 第13题:

    交换寄存器SI、DI的内容,正确的程序段是( )。

    A.PUSH SI

    B.PUSH SI PUSH DI PUSH DI POP SI POP DI POP DI POP SI

    C.MOV AX,SI

    D.MOV AX,SI MOV SI,AX MOV BX,DI MOV DI,BX XCHG BX,AX


    正确答案:A

  • 第14题:

    阅读下列程序,写出程序的运行结果【】。 include void main() { charstr1[ ]: "Hello,

    阅读下列程序,写出程序的运行结果【 】。

    include<iostream. h>

    void main() { char str1[ ]: "Hello, World?;

    char str2[100];

    int i=0;

    do{

    if (str1[i]>= 'a'&& str1[i]<= 'z' )

    str2[i]=str1[i]-32;

    else

    str2[i]=strl [i];

    i++;

    }while(strl[i]!='\0');

    str2[i]='\0';

    cout<<str1<<end1;

    cout<<str2<<end1;

    }


    正确答案:Hello World! HELLO WORLD!
    Hello, World! HELLO, WORLD!

  • 第15题:

    执行下列指令后: STR1 DW ‘AB’ STR2 DB 16 DUP(?) CNT EQU $ -STR1 MOV CX,CNT (CL)= ( )

    A.10H

    B.12H

    C.OEH

    D.0FH


    正确答案:B
    解析:由于STR1为2字节,STR2为16字节,故CX=CNT=$-STR1=2+16=180

  • 第16题:

    交换寄存器SI,DI的内容,正确的程序段是( )

    A.PUSH SI PUSH DI POP SI POP DI

    B.PUSH SI PUSH DI, POP SI,DI

    C.MOV AX,SI MOV SI,DI MOV DI,AX

    D.MOVAX,SI MOV BX,DI XCHG BX,AX


    正确答案:A
    解析:在堆栈中,无论是压人还是弹出,都必须以字为单位进行,即一次压人必须压入堆栈一个字,弹出时,也必须从堆栈中取出一个字。所以选项B是错误的;在串操作指令中,SI用作源变址寄存器,DI用作目的地址寄存器,所以选项C是错误的;选项D交换的是AX寄存器和BX寄存器里的内容,不符合题意;只有选项A是正确的,它依次把SI和DI的值推进栈中,然后把DI的值弹出来给SI,把SI的值弹出来给DI,即完成了SI和DI内容的交换。

  • 第17题:

    执行下面的程序段 MOV SP,2000H MOV Ax,OFOH MOV SI,1234H MOV DX,5678H PUSH SI POP DI SHL DX,1 TEST AX,DX PUSH DX HLT 之后,DH内容所在程序段的偏移地址是( )

    A.1FFFH

    B.1FFEH

    C.1FFDH

    D.1FFCH


    正确答案:A
    解析:一个字在寄存器中存储时低字节在前,高字节在后;在堆栈中存储时,高字节在高地址,低字节在低地址,即高字节在下,低字节在上;每次入栈操作SP-2,每次出栈操作SP+2。在本题中,经过PUSHSI后,SP=IFFEH,而又执行POPDI后,SP=2000H,所以最后执行PUSHDX后,SP=1FFEH,这时SP指向DL所在的偏移地址,而DH的偏移地址是1FFFH。

  • 第18题:

    有一段程序如下: MOV CX,100 LEA SI,XSI MOV DI,OFFSET CLD REP MOVSW REP和MOVSW那条指令先执行?


    正确答案:MOVSW先执行。

  • 第19题:

    源程序如下: MOV CX,9 MOV AL,01H MOV SI,1000H NEXT:MOV[SI],AL INC SI SHL AL,1 LOOP NEXT 执行本程序后AL等于多少?SI等于多少?CX等于多少?


    正确答案:AL=0;SI=1009H;CX=0

  • 第20题:

    阅读下面的程序,回答问题 DATA SEGMENT BUF DB '1234' N=$-BUF BCD DB N DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA SI,BUF MOV CX,N LEA DI,BCD+N-1 LOOP1:MOV AL,[SI] SUB AL,30H MOV [DI],AL INC SI DEC DI DEC CX JNE LOOP1 MOV AH,4CH INT 21H CODE ENDS END START 如果将代码段中的指令LEA DI,BCD+N-1改成LEA DI,BCD;DEC DI改成INC DI,其它指令不变,程序执行后,从BCD开始的N个字节单元中的内容是什么?


    正确答案: 程序执行后,从BCD开始的N个字节单元中的内容是1234。

  • 第21题:

    一般程序如下:                ORG  2000H      ARY      DW   --4,3,--2,1   CNT      DW   $--ARY   VAR      DW   ARY,$+4          ┆           MOV  AX,ARY              MOV  BX,OFFSET VAR               MOV  CX,CNT               MOV  DX,VAR+2              LEA  SI,ARY            ┆   此程序段执行后,寄存器AX,BX,CX,DX与SI中的内容各是多少? 


    正确答案:AX=—4,BX=200AH,CX=8,DX=2010H,SI=2000H

  • 第22题:

    程序段如下: BLK1 DB 46,84,34,-5,20,122,73 : MOV CX,7 LEA S1,BLK1 NEXT:MOV AL,[SI] INC SI TEST AL,81H LOOPZ NEXT MOV BL,[SI] : 请回答程序段运行后: (AL)=? (BL)=?


    正确答案: (AL)=-5或0FBH
    (BL)=14H或20

  • 第23题:

    问答题
    程序段如下: BLK1 DB 46,84,34,-5,20,122,73 : MOV CX,7 LEA S1,BLK1 NEXT:MOV AL,[SI] INC SI TEST AL,81H LOOPZ NEXT MOV BL,[SI] : 请回答程序段运行后: (AL)=? (BL)=?

    正确答案: (AL)=-5或0FBH
    (BL)=14H或20
    解析: 暂无解析

  • 第24题:

    问答题
    一般程序如下:                ORG  2000H      ARY      DW   --4,3,--2,1   CNT      DW   $--ARY   VAR      DW   ARY,$+4          ┆           MOV  AX,ARY              MOV  BX,OFFSET VAR               MOV  CX,CNT               MOV  DX,VAR+2              LEA  SI,ARY            ┆   此程序段执行后,寄存器AX,BX,CX,DX与SI中的内容各是多少?

    正确答案: AX=—4,BX=200AH,CX=8,DX=2010H,SI=2000H
    解析: 暂无解析