守望 发表于 2012-5-25 12:51:42

3.3字的传送

file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/1255301870/QQ/WinTemp/RichOle/~AVRXQ_QHP~BHGT2Q%25Q3]%60K.jpg
要转入ds寄存器中非得用通用寄存器bx吗?别的通用寄存器行吗?
倒数第一行为什么将CX赋值到中就是把cx的数据输送到1000:0里呢?

黃花比我胖 发表于 2012-5-25 12:51:43

第一个问题:当然不是只得用bx,可以这样写:
mov ax,1000h
mov ds,ax

第二:请听我慢慢道来
mov bx,1000h
mov ds,bx             ;这两句代码定义了段地址为1000h

那么,mov 【0】,cx   也可写作mov ds:,cx,因为默认段地址是存储在ds中,所以这里可以省略ds;ax是16为寄存器,进行的是字操作,目标偏移地址是0,很显然,是把cx寄存器里存储的字单元中的值传送到1000h(段地址):0(偏移地址)这个字单元中

不知道,讲清楚了没有

Yara 发表于 2012-5-25 14:34:08

1、不一定要用bx,可以用si,di,bp也可以,这些会在小甲鱼老湿后面的教程有讲到的。2、因为编译器默认的缺省值是ds:,ds是数据段,例如的缺省值为ss:这些都是默认的,你如果不想用ds,可以手动改为es:

守望 发表于 2012-5-25 19:17:37

黃花比我胖 发表于 2012-5-25 14:33 static/image/common/back.gif
第一个问题:当然不是只得用bx,可以这样写:
mov ax,1000h
mov ds,ax


哦,这样子啊,明白了

守望 发表于 2012-5-25 19:18:58

Yara 发表于 2012-5-25 14:34 static/image/common/back.gif
1、不一定要用bx,可以用si,di,bp也可以,这些会在小甲鱼老湿后面的教程有讲到的。2、因为编译器默认的缺 ...

额,老大你说的有点高深了,后面的还没看{:5_92:}
页: [1]
查看完整版本: 3.3字的传送