BlackMelody 发表于 2013-12-4 14:00:50

检测题 3.1 的疑问 求帮忙

检测点3.1(1)在DEBUG中,用 "D 0:0 lf" 查看内存,结果如下:0000:0000 70 80 F0 30 EF 60 30 E2-00 80 80 12 66 20 22 600000: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= 2662Hmov bx,bx= E626Hmov ax,bx      ax= E626Hmov ax,ax= 2662Hmov bx,bx= D6E6Hadd ax,bx      ax= FD48Hadd ax,ax= 2C14Hmov ax,0       ax=   0    mov al,ax= 00e6Hmov bx,0       bx=   0    mov bl,bx= 0026Hadd al,bl      ax= 000CH
在这里的话我想要知道这个指令的意义mov ax,1mov ds,ax这样是传送1这个到ds中,这里是让ds取得数据段的地址那么在这里有个问题,ds为何是从 0000:0010开始的是不是所有的段寄存器都要使用这个公式:SA X 16 + EA,也就是DS * 16 + IP然后得出一个数据段的地址?

dancene 发表于 2013-12-4 16:31:53

段寄存器顾名思义,存放的是段地址,
完整地址是 段地址*16+偏移地址

0000:0010 代表的完整地址是:00010

那么当ds = 0001,
mov ax, 偏移地址为0,即: 0001:0000 ,楼主考虑下,代表的地址和上面是一样的么?
页: [1]
查看完整版本: 检测题 3.1 的疑问 求帮忙