注册 登录
编程论坛 汇编论坛

汇编教材上的一个疑问 求助大家 本人初学

zfzfzfzfln 发布于 2008-09-11 00:56, 2042 次点击
教材上是这样写的:LES DI,[BX]
如指令执行前(DS)=B000H,(BX)=080AH,(0B080AH)=05AEH,(0B080CH)=4000H
则指令执行后,(DI)=05AEH,(ES)=4000H。

这里面的,(0B080AH)=05AEH,(0B080CH)=4000H是怎么算的,什么意思?
13 回复
#2
随心2008-09-11 01:09
0B080AH) (0B080CH)是连续的内存单元,不需要算,是题目指定的
#3
zfzfzfzfln2008-09-11 08:45
还是不明白…这里面不是相加得到的吗?可是为什么相加得出来的东西又能转化为四维十六进制的地址呢?
#4
随心2008-09-11 13:51
我不太明白你的意思,你说的是谁和谁相加得到谁?
你把你的理解详细的说一下,我们一块讨论
#5
zfzfzfzfln2008-09-11 16:53
我的意思是DS=(B000)H变成了0B0000
然后用0B0000+080A=0B080A.
但是他把(0B080A)=05AEH,这是怎么算的?
#6
ONEPROBLEM2008-09-11 16:53
LES    传送目标指针,把指针内容装入ES.
例: LES DI,string  ;把段地址:偏移地址存到ES:DI.
===============================================
教材上是这样写的:LES DI,[BX]
如指令执行前(DS)=B000H,(BX)=080AH,
(0B080AH)=05AEH,      ;0B080AH是地址(由DS和BX合成),里面的值是05AEH
(0B080CH)=4000H       ;0B080CH里面的值是4000H

;高地址存放段地址,低地址存放偏移地址,于是:

则指令执行后,(DI)=05AEH,(ES)=4000H。
#7
zfzfzfzfln2008-09-11 16:59
(0B080AH)为什么等于05AEH?
(0B080CH)为什么等于4000H?
#8
ONEPROBLEM2008-09-11 17:02
[bo][un]zfzfzfzfln[/un] 在 2008-9-11 16:59 的发言:[/bo]

(0B080AH)为什么等于05AEH?
(0B080CH)为什么等于4000H?

不是等于的问题!
前者是地址,后者是地址里面的值.
#9
zfzfzfzfln2008-09-11 17:07
有点发蒙。
这个LEA系列语句不是传送的有效地址吗?
怎么又变成地址的内容了?
#10
ONEPROBLEM2008-09-11 17:08
如有王爽的<汇编语言>一书,请看第89页.关于"()"的定义.
#11
ONEPROBLEM2008-09-11 17:09
是LES ,不是LEA
#12
随心2008-09-11 17:13
回复 6# ONEPROBLEM 的帖子
这个回答好,学习了
#13
zfzfzfzfln2008-09-11 17:16
谢谢ONE PROBLEM大哥。

我懂了,谢谢你。
我看的太不仔细了。
谢谢大哥。
#14
lwq20152008-09-15 19:27
xiexie
1