鱼C论坛

 找回密码
 立即注册
查看: 2879|回复: 8

实验四第二题

[复制链接]
发表于 2012-2-22 21:14:57 | 显示全部楼层 |阅读模式

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

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

x
题目是用9条命令向内存0:200~0:23F依次传送数据0~63h,看了一下答案有一点不理解,
assume cs:codesg
codesg segment
   
   mov ax,0020h
   mov ds,ax
   mov bl,0
   mov cx,40h
s: mov [bx],bl
   inc bl
   loop s

   mov ax,4c00h
   int 21h
上面答案中红色那行不理解,既然 mov bl,0   ,但是bh还没有被赋值,所以mov [bx],bl  中的偏移地址不一定是0000h吧?
        
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-23 15:54:42 | 显示全部楼层

回帖奖励 +5 鱼币

应该是打字失误吧
严谨的应该是  mov bx, 0    inc bx
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-23 16:33:51 | 显示全部楼层
我觉得程序没有打错!!!

大家看看题目(题目是用9条命令向内存0:200~0:23F依次传送数据0~63h)

传送内存单元0:200~0:23F   值:0到63H
第一次运行 bh=0  bl=0   mov [bx],bl;inc bl
第二次运行 bh=0  bl=1   mov [bx],bl;inc bl
第三次运行 bh=0  bl=2   mov [bx],bl;inc bl

细心的你看出了吗?bl值会被改变,改变也就是说bx值也会改变!!!当第三次运行时BX=0003H bl=03H


如果按照另外一只熊猫说的把这条放在
s: mov [bx],bl
   inc bl
   loop s
里面 (严谨的应该是  mov bx, 0    inc bx)那我只能说你错了!!

第一次运行 bh=0  bl=0   mov bx, 0    inc bx
第二次运行 bh=0  bl=1   mov bx, 0    inc bx
第三次运行 bh=0  bl=1   mov bx, 0    inc bx

BX值会变成0,这个能实现用9条命令向内存0:200~0:23F依次传送数据0~63h吗????




想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-2-24 17:20:38 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-6-17 23:14:14 | 显示全部楼层
我用的此代码,上机通过测试.
assume cs:codesg
codesg segment
start: mov ax,0020h
       mov ds,ax
           mov bx,0
          
           mov cx,64
        s: mov [bx],bx
           inc bx
           loop s
          
           mov ax,4c00h
           int 21h
codesg ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-6-21 17:19:14 | 显示全部楼层
你的帖子发表已经很长时间了,估计你已经弄懂了,既然交流论坛,作为初学者我也谈谈我的理解(我视频才看到第六章,你的困惑我也遇到了)

注意:①内存中的数据改变  会影响相应的代码(指令)变化。
      ②在debug中cx默认显示当前指令的长度
      ③code即为cs的值
   要想把“mov ax,4c00H”指令复制到内存0:200处,只需把每条指令所对应的内存数据赋到0:200处即可。
   18H怎么来的呢???“mov ax,4c00H和int21H”的总长度为5H,1DH-5H=18H即为剩余指令长度(即为题目中要我们复制指令的长度)。
接下只需按照我提到的  再去看程序   应该能看懂!!!


我是初学者难免有错,希望大家能指出错误!!!
谢谢!!!

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-6-21 19:35:26 | 显示全部楼层
不好意思上面我回复的是第三题。接下来我回复第二题,小甲鱼犯错误了,"mov bl,0"这是不准确的,正确的应该是“mov bx,0“,你的疑问是对的!!!开始我也有这样的疑问,嘿嘿。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-18 18:27:50 | 显示全部楼层
小熊猫party 发表于 2012-2-23 16:33
我觉得程序没有打错!!!

大家看看题目(题目是用9条命令向内存0:200~0:23F依次传送数据0~63h)

这个程序没有复制BH 等于什么啊? 我可以假设他等于02,那结果就不尽相同了吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-18 18:28:34 | 显示全部楼层
简单地说你怎么知道BH一定等于零?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-10-8 06:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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