简答题

语句MOV BX,M和LEA BX,M有何区别?LEA BX,ARRAY[BX+SI]是否可以用MOV BX,OFFSET ARRAY[BX+SI]来代替?为什么?

正确答案

MOV BX,M语句的功能是将变量M字内容传送至BX中,即【M】→BX,而LEA BX,M是将变量M的偏移地址传送至BX中,即EA→BX.LEA BX,ARRAY【BX+SI】是不可以用MOV BX,OFFSET ARRAY[BX+SI]来代替的,因为取偏移地址算符OFFSET的优先级比加号(+)高。
LEA语句执行后,BX+SI+ARRAY的EA→BX.由此可见。这两条语句所指源操作数偏移地址均相同,只是LEA语句执行后是将该源操作数所在的存储单元的偏移地址送人BX,而后面的MOV语句的MOV语句执行后是将该偏移地址中内容即源操作数本身送人BX,故不能代替。

答案解析

相似试题
  • 执行LEA  BX, [DI]指令和执行MOV  BX,  DI指令,哪条指令执行较快?

    简答题查看答案

  • 执行LEA BX,TAB 指令与执行MOV BX,OFFSET TAB指令的功能相同吗?哪条指令执行的效率高?为什么?

    简答题查看答案

  • 是否能写出与MOV  POIN,  OFFSET  BUF等效的LEA语句LEA  POIN,, BUF?为什么?

    简答题查看答案

  • 若程序的数据段定义如下,写出各指令语句独立执行后的结果: MOV AL ,DATA1 XXXX; MOV BX ,OFFSET DATA2; LEA SI ,STRING ADD DI ,SI;

    简答题查看答案

  • 指出以下指令中,哪些指令是非法的,并说明为什么(8086系统)。 (1) PUSH 1234H (2) MOV CS,AX (3) IN AX, 300 (4) MOV AX,[DX+12] (5) MOV BX,[BX] (6) MOV DS,1000H (7) XCHG AL,AL (8) MOV AL,100H (9) MOV DX,AL (10)LEA BL,[BX+5] (11)LEA DX,BX (12)MOV [1000H],12H (13)ADD AX,DS (14)SUB [0100H],BYTE PTR [0001] (15)SHL BL,2 (16)SHR CL,CL (17)MUL AL,BL (18)INT 400

    简答题查看答案

  • 如TABLE为数据段中0032单元的符号名,其中存放的内容是1234H,试问以下两条指令有什么区别?指令执行完后BX寄存器的内容是什么? (1)MOV  BX,TABLE   (2)LEA   BX,TABLE

    简答题查看答案

  • 比较MOV  AX, [SI] 与LEA  AX, [SI]两条指令在功能上是否相同?为什么?

    简答题查看答案

  • 执行LEA  SI,  [BX+DI]指令时,若BX=1000H, DI=FF00H,则执行该指令后,送入SI的偏移地址是多少?

    简答题查看答案

  • 在汇编语句MOV AX,[BX]中,源操作数的寻址方式是()

    单选题查看答案