课后习题6.1第一题不懂
mov ax,与mov cs:,ax连在一起用有啥意思。 本帖最后由 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这个数据的地址
mov ax,这条指令通过循环用ax暂存0:0~0:15内存中的值。
mov cs:,ax,这条指令通过循环改变dw的数据。 额、顶楼上,通过ax这个中间寄存器,读取ds:所存储的内容,赋值到cs;中。因为ds初值为0,所以就实现了、把0:0-0:15的内容赋值到了 cs:中,改变dw中的数据。:Q mov ax, 前面将ds的代码设置为0是要指向数据段然后将ds:bx中的内容传送到ax寄存器中
mov cs:,ax
cs:ip指向的就是代码段 为了修改程序中的代码段就要将ax寄存器中的内容传到cs:中
就是将数据段ds里的内容对应传送给堆栈段cs
但是:
段寄存器之间是不可以直接进行数据传送的
所以,
这里通过寄存器ax在中间帮忙。 两个寄存器进行数据传递,把CS中的数据传送到DS,其实mov 就是 mov ds:,只是他默认的 mov ax,这条指令通过循环用ax暂存0:0~0:15内存中的值。
mov cs:,ax,这条指令通过循环改变dw的数据。
页:
[1]