欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

8086地址传送指令LEA,LDS,LES

发布时间:2023/12/1 编程问答 49 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。