ax为何放入ds中?
assume cs:codecode 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这一步是为了做什么?没理解到位! 将段寄存器ds的值置为0ffffh,8086cup不支持将数据直接送入段寄存器中,即mov ds,0ffffh 是不行的,所以先送入ax,再送入ds 这个题是加AX 和DS没关系啊! LZ重看一遍书吧,关键的东西你都没仔细看。 本帖最后由 lelering 于 2011-12-10 01:02 编辑
因为甲鱼哥说了DS是段寄存器,段寄存器是个非常害羞的小女孩,所以只能将0ffffh先送入AX,再用AX送入DS才可以!
(不知道楼主有没有看小甲鱼的视频教程) 哈哈……{:5_95:}
我知道要通过mov axmov ds ax 这个我理解 为什么这个程序需要加把ax 放入ds 放不放对程序没影响啊! ds是段寄存器,ax是通用寄存器,段寄存器不支持直接将数据放进去的,要通过通用寄存器,所以,这个就初相了,懂? mov ax,
中间是不是有这一句代码呢??这个是偏移量,他是相对于ds偏移的,那么ds是多少呢?如果不初始化就是一个乱码,所以有mov ax,0ffffh
这是个人的理解,虽然还没学到那里去,但是有一定的c基础。你看看这么理解可以不? 空手套小白狼 发表于 2011-12-10 01:40 static/image/common/back.gif
我知道要通过mov axmov ds ax 这个我理解 为什么这个程序需要加把ax 放入ds 放不放对程序没影响啊!
程序应该是不影响的,只不过数据段的段地址是按照默认值的,如果题目要求是要数据段的段地址为 0ffffH 开始的,就会影响到它的结果,不知道我这样讲你能理解吗?我的表达能力不是很好,请谅解!哈哈{:5_92:} 评评更健康为了升级LZ见谅 mov ax,0ffffh
mov ds,ax
mov bx,6
mov ax,
其中的mov ax,,就要用到段DS,多少呢?从上面的mov ds,ax赋值。
ds 可以说是段地址
把AX寄存器的值传输给ds段寄存器
当你运行时候可以-r 看到 ds的值多少 当执行 mov ds,ax 的时候就明白意思了。
页:
[1]