李清越 发表于 2012-5-18 15:38:18

课后习题6.1第一题不懂

mov ax,与mov cs:,ax连在一起用有啥意思。

leebox 发表于 2012-5-18 15:38:19

本帖最后由 leebox 于 2012-5-18 17:49 编辑

当dx=0时 你定义的数据在CS:中也就是这句 codesg segment
    dw 0123h,0456h,0789h,0abc,0defh,0fedh,0cbah,0987h
codesg ends你要把他存放到0:0这个地址中所以 前面 定义

mov ax,0
mov ds,ax
那么 mov = mov ds: = 0:0这个地址
       mov cs: = 0123h这个数据的地址

玩酷子弟lv 发表于 2012-5-18 16:25:36

mov ax,这条指令通过循环用ax暂存0:0~0:15内存中的值。
mov cs:,ax,这条指令通过循环改变dw的数据。

小糊涂仙 发表于 2012-5-18 17:50:18

额、顶楼上,通过ax这个中间寄存器,读取ds:所存储的内容,赋值到cs;中。因为ds初值为0,所以就实现了、把0:0-0:15的内容赋值到了 cs:中,改变dw中的数据。:Q

退聊人物;战孜瞳 发表于 2012-5-18 18:16:08

mov ax, 前面将ds的代码设置为0是要指向数据段然后将ds:bx中的内容传送到ax寄存器中
mov cs:,ax   
cs:ip指向的就是代码段 为了修改程序中的代码段就要将ax寄存器中的内容传到cs:中

l罗衫扣儿 发表于 2012-5-19 13:09:19

就是将数据段ds里的内容对应传送给堆栈段cs
但是:
    段寄存器之间是不可以直接进行数据传送的
所以,
    这里通过寄存器ax在中间帮忙。

游戏人生 发表于 2012-5-19 18:23:55

两个寄存器进行数据传递,把CS中的数据传送到DS,其实mov 就是 mov ds:,只是他默认的

刺客信条 发表于 2013-6-7 17:22:53

mov ax,这条指令通过循环用ax暂存0:0~0:15内存中的值。
mov cs:,ax,这条指令通过循环改变dw的数据。
页: [1]
查看完整版本: 课后习题6.1第一题不懂