空手套小白狼 发表于 2011-12-9 23:06:09

ax为何放入ds中?

assume cs:code
code segment
mov ax,0ffffh
mov ds,ax
mov bx,6
mov ax,
mov dx,0
mov cx,3
s:         add dx,ax
loop s
mov ax,4c00h
int 21h
code ends
end   为何mov ds,ax这一步是为了做什么?没理解到位!

ITaman 发表于 2011-12-9 23:19:51

将段寄存器ds的值置为0ffffh,8086cup不支持将数据直接送入段寄存器中,即mov ds,0ffffh 是不行的,所以先送入ax,再送入ds

空手套小白狼 发表于 2011-12-9 23:56:02

这个题是加AX 和DS没关系啊!

api 发表于 2011-12-10 00:15:17

LZ重看一遍书吧,关键的东西你都没仔细看。

lelering 发表于 2011-12-10 01:02:03

本帖最后由 lelering 于 2011-12-10 01:02 编辑

因为甲鱼哥说了DS是段寄存器,段寄存器是个非常害羞的小女孩,所以只能将0ffffh先送入AX,再用AX送入DS才可以!
(不知道楼主有没有看小甲鱼的视频教程) 哈哈……{:5_95:}

空手套小白狼 发表于 2011-12-10 01:40:03

我知道要通过mov axmov ds ax      这个我理解 为什么这个程序需要加把ax 放入ds 放不放对程序没影响啊!

幸福你懂得_し゛ 发表于 2011-12-10 10:34:05

ds是段寄存器,ax是通用寄存器,段寄存器不支持直接将数据放进去的,要通过通用寄存器,所以,这个就初相了,懂?

小妖。。 发表于 2011-12-10 14:23:50

mov ax,
中间是不是有这一句代码呢??这个是偏移量,他是相对于ds偏移的,那么ds是多少呢?如果不初始化就是一个乱码,所以有mov ax,0ffffh
这是个人的理解,虽然还没学到那里去,但是有一定的c基础。你看看这么理解可以不?

lelering 发表于 2011-12-10 18:08:40

空手套小白狼 发表于 2011-12-10 01:40 static/image/common/back.gif
我知道要通过mov axmov ds ax      这个我理解 为什么这个程序需要加把ax 放入ds 放不放对程序没影响啊!

程序应该是不影响的,只不过数据段的段地址是按照默认值的,如果题目要求是要数据段的段地址为 0ffffH 开始的,就会影响到它的结果,不知道我这样讲你能理解吗?我的表达能力不是很好,请谅解!哈哈{:5_92:}

lsgo 发表于 2011-12-10 20:09:39

评评更健康为了升级LZ见谅

751101 发表于 2011-12-22 13:08:15

mov ax,0ffffh
mov ds,ax
mov bx,6
mov ax,

其中的mov ax,,就要用到段DS,多少呢?从上面的mov ds,ax赋值。

小熊猫party 发表于 2011-12-23 02:18:45

ds 可以说是段地址
把AX寄存器的值传输给ds段寄存器

当你运行时候可以-r 看到 ds的值多少 当执行 mov ds,ax 的时候就明白意思了。
页: [1]
查看完整版本: ax为何放入ds中?