鱼C论坛

 找回密码
 立即注册
查看: 2743|回复: 7

课后习题6.1第一题不懂

[复制链接]
发表于 2012-5-18 15:38:18 | 显示全部楼层 |阅读模式
2鱼币
mov ax,[bx]与mov cs:[bx],ax连在一起用有啥意思。
未命名.jpg

最佳答案

查看完整内容

当dx=0时 你定义的数据在CS:[DX]中 也就是这句 你要把他存放到0:0这个地址中 所以 前面 定义 那么 mov = mov ds: = 0:0这个地址 mov cs: = 0123h这个数据的地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-5-18 15:38:19 | 显示全部楼层
本帖最后由 leebox 于 2012-5-18 17:49 编辑

当dx=0时 你定义的数据在CS:[DX]中  也就是这句
codesg segment 
    dw 0123h,0456h,0789h,0abc,0defh,0fedh,0cbah,0987h
codesg ends
你要把他存放到0:0这个地址中  所以 前面 定义
mov ax,0 
mov ds,ax
那么 mov [bx] = mov ds:[bx] = 0:0这个地址
       mov cs:[bx] = 0123h这个数据的地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-5-18 16:25:36 | 显示全部楼层
mov ax,[bx]这条指令通过循环用ax暂存0:0~0:15内存中的值。
mov cs:[bx],ax,这条指令通过循环改变dw的数据。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-5-18 17:50:18 | 显示全部楼层
额、顶楼上,通过ax这个中间寄存器,读取ds:[bx]所存储的内容,赋值到cs;[bx]中。因为ds初值为0,所以就实现了、把0:0-0:15的内容赋值到了 cs:[bx]中,改变dw中的数据。:Q
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-5-18 18:16:08 | 显示全部楼层
mov ax,[bx] 前面将ds的代码设置为0是要指向数据段然后将ds:bx中的内容传送到ax寄存器中
mov cs:[bx],ax     
cs:ip指向的就是代码段 为了修改程序中的代码段就要将ax寄存器中的内容传到cs:[bx]中
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-5-19 13:09:19 | 显示全部楼层
就是将数据段ds里的内容对应传送给堆栈段cs
但是:
    段寄存器之间是不可以直接进行数据传送的
所以,
    这里通过寄存器ax在中间帮忙。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-5-19 18:23:55 | 显示全部楼层
两个寄存器进行数据传递,把CS中的数据传送到DS,其实mov [bx]就是 mov ds:[bx],只是他默认的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-6-7 17:22:53 | 显示全部楼层
mov ax,[bx]这条指令通过循环用ax暂存0:0~0:15内存中的值。
mov cs:[bx],ax,这条指令通过循环改变dw的数据。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 10:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表