专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 汇编语言

新手提问,关于DS,该怎么解决

发布时间:2010-06-14 15:51:12 文章来源:www.iduyao.cn 采编人员:星星草
新手提问,关于DS
小弟刚刚开始学习汇编,现在做课后题的时候有个地方没搞明白,往大家指教下。
1.在Debug中,用“D 0:0 1f”查看内存,结果如下。 
0000:0000 70 80 F0 30 EF 60 30 E2 - 00 80 80 12 66 20 22 60 
0000:0010 62 26 E6 D6 CC 2E 3C 3B - AB BA 00 00 26 06 66 88 
下面的程序执行前,AX = 0, BX = 0, 写出每条汇编指令执行完后相关寄存器中的值。 
mov ax, 1 
mov ds, ax 
mov ax, [0000] ax = 2662H 
mov bx, [0001] bx = E626H 
mov ax, bx ax = E626H 
代码我没完全复制上来,主要是第一个AX的值等于2662我没明白。我知道经过计算后DS的值为10,但是从上面代码中不管我怎么数数,数到第十个都不是2662啊?难道我没数对方法?

------解决方案--------------------
这个与编码方式有关,X86采用的是小端方式。假如将DS:0000处内容存入AX,那么AX=8070H,AH=80H,AL=70H。在小端编码中,高字节在最右边,低字节在最左边。
AL AH
00 01 0F;地H
0000:0000 70 80 F0 30 EF 60 30 E2 - 00 80 80 12 66 20 22 60
0000:0010 62 26 E6 D6 CC 2E 3C 3B - AB BA 00 00 26 06 66 88
10 11 1F
 
------解决方案--------------------
0000:0010 62 26 E6 D6 CC 2E 3C 3B - AB BA 00 00 26 06 66 88
冒号前是段地址,冒号后是偏移地址。
真正的地址=段地址*10H+偏移地址。

mov ax, 1
mov ds, ax 
所以,段地址是0001; 
mov ax, [0000]
默认使用ds为段地址。
所以真正的地址=0001*10H+0000=0000:0010
所以就是:62 26 在小端编码中,高字节在最右边,低字节在最左边,就是26 62H
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: