关于汇编中的LDS指令例:lds 寄存器,源操作数书中描述:当指令指定的是16位寄存器时,把源操作数存储单元中存放的十六位偏移地址取出存放在寄存器中,然后把源操作数+2的十六位数装入指

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/04 19:30:18
关于汇编中的LDS指令例:lds 寄存器,源操作数书中描述:当指令指定的是16位寄存器时,把源操作数存储单元中存放的十六位偏移地址取出存放在寄存器中,然后把源操作数+2的十六位数装入指

关于汇编中的LDS指令例:lds 寄存器,源操作数书中描述:当指令指定的是16位寄存器时,把源操作数存储单元中存放的十六位偏移地址取出存放在寄存器中,然后把源操作数+2的十六位数装入指
关于汇编中的LDS指令
例:lds 寄存器,源操作数
书中描述:
当指令指定的是16位寄存器时,把源操作数存储单元中存放的十六位偏移地址取出存放在寄存器中,然后把源操作数+2的十六位数装入指令指定的段寄存器
当指令指定的是32位寄存器时 把源操作数存储单元中存放的32位偏移地址装入寄存器 然后把 源操作数+4 的16位数装入段寄存器
我不明白为什么要将 源操作数+2 或者源操作数+4 的十六位数装入.
为什么要将源操作数分别+2 ,+4,这样就能得出段寄存器地址了吗

关于汇编中的LDS指令例:lds 寄存器,源操作数书中描述:当指令指定的是16位寄存器时,把源操作数存储单元中存放的十六位偏移地址取出存放在寄存器中,然后把源操作数+2的十六位数装入指
你这样想,这条指令格式是LDS reg,mem
这条指令的功能是把mem指向的地址,高位存放在DS中,低位存放在reg中.
下面说的是16位的.
比如当前DS=1000H,BX=0100H.
当前内存:
1000:0100 01
1000:0101 02
1000:0102 03
1000:0103 04
而有一条指令:LDS BX,[BX]
[BX]指向1000:0100,执行后BX存低位的内容,也就是BX=0201H,
而DS则存高位的内容,也就是[BX+2]的内容,DS=0403H
这样你是不是就理解了为什么要加2,因为[BX+2]才能指向高位.想清楚了16位的,你也就想通了32位的