实验四第二题
题目是用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 ,bl
inc bl
loop s
mov ax,4c00h
int 21h
上面答案中红色那行不理解,既然 mov bl,0 ,但是bh还没有被赋值,所以mov ,bl中的偏移地址不一定是0000h吧?
应该是打字失误吧
严谨的应该是mov bx, 0 inc bx 我觉得程序没有打错!!!
大家看看题目(题目是用9条命令向内存0:200~0:23F依次传送数据0~63h)
传送内存单元0:200~0:23F 值:0到63H
第一次运行 bh=0bl=0 mov ,bl;inc bl
第二次运行 bh=0bl=1 mov ,bl;inc bl
第三次运行 bh=0bl=2 mov ,bl;inc bl
细心的你看出了吗?bl值会被改变,改变也就是说bx值也会改变!!!当第三次运行时BX=0003H bl=03H
如果按照另外一只熊猫说的把这条放在
s: mov ,bl
inc bl
loop s
里面 (严谨的应该是mov bx, 0 inc bx)那我只能说你错了!!
第一次运行 bh=0bl=0 mov bx, 0 inc bx
第二次运行 bh=0bl=1 mov bx, 0 inc bx
第三次运行 bh=0bl=1 mov bx, 0 inc bx
BX值会变成0,这个能实现用9条命令向内存0:200~0:23F依次传送数据0~63h吗????
小熊猫party 发表于 2012-2-23 16:33 static/image/common/back.gif
我觉得程序没有打错!!!
大家看看题目(题目是用9条命令向内存0:200~0:23F依次传送数据0~63h)
我懂了,谢谢 我用的此代码,上机通过测试.
assume cs:codesg
codesg segment
start: mov ax,0020h
mov ds,ax
mov bx,0
mov cx,64
s: mov ,bx
inc bx
loop s
mov ax,4c00h
int 21h
codesg ends
end start 你的帖子发表已经很长时间了,估计你已经弄懂了,既然交流论坛,作为初学者我也谈谈我的理解(我视频才看到第六章,你的困惑我也遇到了)
注意:①内存中的数据改变会影响相应的代码(指令)变化。
②在debug中cx默认显示当前指令的长度
③code即为cs的值
要想把“mov ax,4c00H”指令复制到内存0:200处,只需把每条指令所对应的内存数据赋到0:200处即可。
18H怎么来的呢???“mov ax,4c00H和int21H”的总长度为5H,1DH-5H=18H即为剩余指令长度(即为题目中要我们复制指令的长度)。
接下只需按照我提到的再去看程序 应该能看懂!!!
我是初学者难免有错,希望大家能指出错误!!!
谢谢!!!
不好意思上面我回复的是第三题。接下来我回复第二题,小甲鱼犯错误了,"mov bl,0"这是不准确的,正确的应该是“mov bx,0“,你的疑问是对的!!!开始我也有这样的疑问,嘿嘿。。。 小熊猫party 发表于 2012-2-23 16:33 static/image/common/back.gif
我觉得程序没有打错!!!
大家看看题目(题目是用9条命令向内存0:200~0:23F依次传送数据0~63h)
这个程序没有复制BH 等于什么啊? 我可以假设他等于02,那结果就不尽相同了吧? 简单地说你怎么知道BH一定等于零?
页:
[1]