汇编网首页登录博客注册
masmaster的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
文章收藏

[2010-07-16 14:48] 装入有效地址指令:lea/lds/les/lss

在16位的8086指令中装入有效地址的指令有:lea,lds,les。
lea指令把偏移地址装入16位/32位寄存器中, 这个地址由该指令选定的寻址方式决定。
lea跟offset的比较
offset是编译器提供的伪指令, 由编译器在编译阶段生成地址,如果对于简单的操作数, 效率要远远高于lea。而lea是x86指令, 它在程序运行中生成有效地址,但是复杂性灵活性要比offset强大很多。
lds/les指令确定把内存单元位置的偏移地址装入任何16位寄存器。然后把确定内存段的地址装入DS或ES。
如:lds bx,[di] ;把数据段中由DI寻址的32位数传送至BX和DS,低地址送至BX,高地址送至DS。
lss:只能用于80386以上处理器。功能是保护旧的SS:SP, 完成某些任务后, 用lss恢复回来。 比如程序片段:
-----------------------------------------
cli
mov ax,sp
mov word ptr saddr,ax   ;保存旧的sp
mov ax,ss
mov word ptr saddr+2,ax ;保存旧的ss
mov ax,newadd
mov ss,ax
mov sp,128H
sti
...                      ;做一些别的事
...                      ;之后
lss sp,sddr  ;装入旧的ss和sp
----------------------------------------
评论次数(0)  |  浏览次数(368)  |  类型(汇编语言笔记) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码