我是靠谱客的博主 善良万宝路,这篇文章主要介绍8086地址传送指令LEA,LDS,LES,现在分享给大家,希望可以做个参考。

LEA BX,[SI] ;BX<--DS:[SI]内存单元的偏移地址,与该单元中的数据无关

LDS BX,[SI] ;BX<--DS:[si]内存单元中的数据的低16位,DS<--内存单元中数据的高16位
LES BX,[SI] ;BX<--DS:[SI] ,ES<--DS:[SI+2]
显然LDS和LES的操作数是32位的(两个字 四个字节 32位)

写个程序测试一下,假设我们向内存中写入数据idata dd 12345678H

LEA:-u 0CA1:0000 B8A00C MOV AX,0CA0 0CA1:0003 8ED8 MOV DS,AX ;
DS指向数据段 0CA1:0005 8D1E0000 LEA BX,[0000] ;
指向数据段中第一个内存单元(16位5678) ;
此时如果是MOV BX,[0] 那么AX=5678H AX=0CA0 BX=0000 CX=001E DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=0CA0 ES=0C90 SS=0CA0 CS=0CA1 IP=0005 NV UP EI PL NZ NA PO NC 0CA1:0005 8D1E0000 LEA BX,[0000] DS:0000=5678 -t AX=0CA0 BX=0000 CX=001E DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=0CA0 ES=0C90 SS=0CA0 CS=0CA1 IP=0009 NV UP EI PL NZ NA PO NC 0CA1:0009 B8004C MOV AX,4C00 -;
BX=0000H 说明LEA只是传送DS:[]指向内存单元的偏移地址

 

LDS:-u 0CA1:0000 B8A00C MOV AX,0CA0 0CA1:0003 8ED8 MOV DS,AX 0CA1:0005 C51E0000 LDS BX,[0000] ;
ds:[0]指向数据段的第一个内存单元 -t ;
此时如果是MOV BX,DS:[0] 那么AX=5678H AX=0CA0 BX=0000 CX=001E DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=0CA0 ES=0C90 SS=0CA0 CS=0CA1 IP=0005 NV UP EI PL NZ NA PO NC 0CA1:0005 C51E0000 LDS BX,[0000] DS:0000=5678 -t AX=0CA0 BX=5678 CX=001E DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=1234 ES=0C90 SS=0CA0 CS=0CA1 IP=0009 NV UP EI PL NZ NA PO NC 0CA1:0009 B8004C MOV AX,4C00 -;
bx=5678H,ds=1234H ;
是的,LDS的传送并不是偏移地址而是实实在在的内存单元中的数据,bx<--[0],ds<--[0+2]
LES: 
LES BX,[0]
bx<--[0]
es<--[0+2]

 

最后

以上就是善良万宝路最近收集整理的关于8086地址传送指令LEA,LDS,LES的全部内容,更多相关8086地址传送指令LEA内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(106)

评论列表共有 0 条评论

立即
投稿
返回
顶部