鱼C论坛

 找回密码
 立即注册
查看: 2934|回复: 4

监测点6.1 2个题目。求解

[复制链接]
发表于 2011-10-20 19:21:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
问题如下。。。。。。。。。。。。。。。。
s: mov ax,[bx]                                      ; 指令意思 mov ax,ds:[bx]. ds的内容未知。传递给ax                                       
    mov cs:[bx],ax                                 ; 通过ax将从ds:[bx]获得数据传送给 cs:[bx].  问题ds内容未知。貌似错误了;
    add bx,2
    loop s


我理解的正确指令是   s: mov ax,cs:[bx]        
                                      mov [bx]:ax
                                      add bx,2
                                      loop s

第二题的内容我感觉也是错的。
                                      s:   push cs:[bx]
                                            pop [bx]
                                            add bx,2
                                            loop s
难道是书本错了。。还是我得思考方式错了。求解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-20 19:49:28 | 显示全部楼层
看清楚题意先!原题是要把0:0到0:15之间的单元的内容给程序中数据的位置,也就是说ds是0  !
然后你的第二条指令格式是不是错了是 mov [bx],ax  的吧!
你这样的话就是 把 程序 中的 数据 传送 到 0:0到0:15之间的单元!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-20 22:04:01 | 显示全部楼层
一针见血,2楼给力!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-21 19:13:05 | 显示全部楼层
C:\Users\lenovo\Desktop\C语言\1.jpg
ds上面已经赋值为0
第二个,你写错了吧?应该是 push [bx]
                                        pop cs:[bx]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-22 14:13:46 | 显示全部楼层
请楼主先看下6.1第一题的代码:
mov ax,0
mov ds,ax
已经把ds复制为0了

第二题你写错了,应该是楼上说的:
push [bx]
pop cs:[bx]
这2行代码的意思是把代码段为ds,偏移地址为bx,内存地址处的内容入栈,然后出栈,
将栈中的数据覆盖到代码段为cs,偏移地址为bx的内存地址的内容中。
实现了ds:[bx]中的数据覆盖到cs:[bx]中
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-10-8 22:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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