有个疑问甚是不解

jackyjcb 2007-07-30 09:37:17

mov si,es:[di] ;SI=0007H
shl si,1 ;SI=000EH CF=0
add si,di ;000EH+0000H=SI,000EH
假设ES段保存了DI并指向这个数组的首地址这个单元中第一个元素存放着数组长度为0007H,DI=0000H,ES=4300H,,上面的程序是不是就是指定了SI指向数组的最后一个元素呢?我怎么通过计算SI=000EH,不知道我的计算对不?
...全文
225 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cook503 2007-08-13
  • 打赏
  • 举报
回复
搂主的计算结果与搂主想法是一致的。
其实这个问题自己完全可以通过Debug进行验证。
通过单步跟踪,执行到add si,di语句后,通过命令
(d es:寄存器si中的数值 寄存器si中的数值+1),以此察看地址为es:si和es:si+1的内存单元中的数据。然后和自己存储的最后一个字形数据进行对比。
结果一看便知!
zhgwbzhd 2007-07-30
  • 打赏
  • 举报
回复
按照你的思路,第一个元素存放着数组长度,也就是数组的个数。
那么shl si,1是为了按照字,来计算的,也就是你的数组类型每个字符占用了2个字节。
add si,di就是指向该数组最后一个元素。

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧