断丶 发表于 2012-3-20 20:07:20

关于 检测点3.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,AX=2662H
mov bx,BX=E626H
这里的和是什么意思,是怎么用上面的内存来看出AX和BX分别是什么?
求高手!!!

夏洛 发表于 2012-3-20 20:26:37

本帖最后由 夏洛 于 2012-3-20 20:27 编辑

中的数字是偏移地址,如果前面没有标识段地址,则默认段地址为DS,一个内存单元的表示方法就是 “段地址*16+偏移地址”,所以和代表ds:和ds:这两个单元,又因为寄存器为16位,所以传输进去的是字单元,就是两个字节

其实你好好看看书就明白了

㊣水晶龙㊣ 发表于 2012-3-31 00:38:14

0000就是偏移地址,1*16+0=0010,那么在内存表中从高位取0011的值26,低价0010是62,组合起来就是2662,0001是一个意思。

V。i 发表于 2012-4-1 00:01:48

还是有点不理解啊,为什么高位取值26 低位取值 66那个是怎么换算的

c_l_龙龙 发表于 2012-12-12 16:15:26

夏洛 发表于 2012-3-20 20:26 static/image/common/back.gif
中的数字是偏移地址,如果前面没有标识段地址,则默认段地址为DS,一个内存单元的表示方法就是 “段地 ...

解释的很清晰啊,学习了
页: [1]
查看完整版本: 关于 检测点3.1习题的问题