跟内存地址有关的一个小问题

qjzl2008 2011-02-01 04:35:04
RT.本人新手,最近在学王爽的 《汇编语言》看到了第七章,对于一个例题有点疑惑,希望哪位前辈能够指点下。



问题7.1

用Debug查看内存,结果如下:
2000:1000 BE 00 06 00 00 00 ...
写出下面的程序执行后,ax,bx,cx中的内容。

mov ax,200h
mov ds,ax
mov bx,1000h
mov ax,[bx]
mov cx,[bx+1]
add cx,[bx+2]

分析:
mov ax,[bx] (ax)=00BEh
mov cx,[bx+1]
访问的字单元的段地址在ds中,(ds)=2000h;偏移地址=(bx)+1=1001h;执行后(cx)=0600h



这是原文,
我的问题是 将2000:1001的内容装到cx里面呀。 为什么是0600h。。


上面给出的一段 2000:1000 BE 00 06 00 00 00 ...

偏移为1000的为BE 偏移为1001的为00 偏移为1002的为06吗?




...全文
86 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qjzl2008 2011-02-01
  • 打赏
  • 举报
回复
谢了,,,,我刚刚突然想懂了,,把高八位和低八位弄反了。
masmaster 2011-02-01
  • 打赏
  • 举报
回复
我的问题是 将2000:1001的内容装到cx里面呀。 为什么是0600h。
--------------------------------------------------------------

用Debug查看内存,结果如下:
2000:1000 BE 00 06 00 00 00 ...

这里,
2000:1000 内容是BE
2000:1001 内容是00
2000:1002 内容是06

bx=1000H,ds=2000H,bx+1后地址就是2000:1001到2000:1002的内容,根据小端原则, 低地址存放低字节高地址存放高字节的原则,cl=00,ch=06,所以cx=0600H。
如果把bx+2的内存单元内容给cx的话, 那么cx=0006h啦, 那么如果把[bx]的内容给cx,cx又是多少呢?
cx=00BEH! 不知道我说的你明白没?

PS:在第二版第五章,讲的非常详细了。有空去多看看。

21,453

社区成员

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

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