转移的一些疑问
start:mov ax,2000hmov ds,ax
mov bx,0
s: mov cl,0
mov cx,
jxcz ok
inc ok
jmp short s
ok:
mov dx,bx
题目是将段地址2000h中第一个值为0的字节,把偏移地址放入dx中。
在s:中inc ok换成inc 有什么注意的地方?
还一个就是jxcz不是跳到ok吗,程序应该执行到ok那一段,那么接下来是怎么回到inc ok那一行的? inc ok 这样也可以? 初步改了一下,不懂再问!
start:mov ax,2000h
mov ds,ax
mov bx,0
s: mov cl,0 ;这个好像没什么用呀,下面这句还是会替换掉cl呀
mov cx,
jcxz ok ;不是jxcz,检查下错误。只有cx=0才会跳转
inc bx ;不加[]的,你要加地址,不是bx地址的值!!!还有,别加定位点ok等
jmp short s
ok: mov dx,bx 兄弟用的什么软件写程序 陈淮南 发表于 2017-9-29 21:46
兄弟用的什么软件写程序
问我吗?写什么程序?汇编还是C? 对啊汇编 我刚注册不能私聊你 陈淮南 发表于 2017-9-29 21:50
对啊汇编 我刚注册不能私聊你
大哥,点我回复的那个楼的左下角有点透明的“回复”再发言,不然我收不到你的消息的。
notepad++写的代码,DOSBox运行的代码 丶忘却的年少o 发表于 2017-9-29 21:53
大哥,点我回复的那个楼的左下角有点透明的“回复”再发言,不然我收不到你的消息的。
notepad++写的代 ...
好的,能加你qq吗 把软件传给我一下 谢谢了 丶忘却的年少o 发表于 2017-9-29 21:53
大哥,点我回复的那个楼的左下角有点透明的“回复”再发言,不然我收不到你的消息的。
notepad++写的代 ...
我邮箱957097425@qq.com 陈淮南 发表于 2017-9-29 21:57
我邮箱
notepad++百度下个就行,这个没要求的。
DOSbox链接:https://pan.baidu.com/s/1slUEn3R 密码:h8y9 丶忘却的年少o 发表于 2017-9-29 21:59
notepad++百度下个就行,这个没要求的。
DOSbox链接:https://pan.baidu.com/s/1slUEn3R 密码:h8y9
好的 谢谢老哥 丶忘却的年少o 发表于 2017-9-29 20:41
初步改了一下,不懂再问!
不懂的话就是第二个问题啊 已然就位 发表于 2017-9-29 23:08
不懂的话就是第二个问题啊
我在代码里写了,你把jcxz写反了,就算cx=0也不会跳的。
你把你的代码改了试试,有问题再问,没问题别忘记点“最佳答案”{:10_254:} 丶忘却的年少o 发表于 2017-9-30 00:05
我在代码里写了,你把jcxz写反了,就算cx=0也不会跳的。
你把你的代码改了试试,有问题再问,没问题别忘 ...
就是jcxz不是跳到ok吗,程序应该执行到ok那一段,那么接下来是怎么回到inc ok那一行的?就是这个问题。是不是ok段执行完了就会回到inc ok。你这里是inc bx。简单的说就是跳出S循环,到了ok段,程序的角度来说接下来是怎么回到inc bx 已然就位 发表于 2017-9-30 10:16
就是jcxz不是跳到ok吗,程序应该执行到ok那一段,那么接下来是怎么回到inc ok那一行的?就是这个问题。是 ...
这么说吧:
s段里是去寻找一个让CX=0的值的地址,bx是地址,是值,首先你取出一个发现cx不为0,那肯定会去寻找下一个地址呀,而不是跳转出去告诉它你找到了,所以jcxz ok判断出cx不为零后就执行下面那一条,让地址到下一个,判断是不是零,那你地址到下一个肯定是inc bx,那bx到后面去,inc ok是什么,没办法解释的呀,ok只是一个定位点,又不是寄存器,怎么能加那。然后循环s这个点开始的程序继续找……
假设找到了CX=0了,是这个地方的值,那BX就是该值的地址,然后JCXZ OK判断出CX=0,跳转到OK这个定位点开始的程序…… 丶忘却的年少o 发表于 2017-9-30 10:48
这么说吧:
s段里是去寻找一个让CX=0的值的地址,bx是地址,是值,首先你取出一个发现cx不为0,那肯定会 ...
原来我理解错误了,我理解成找到0后放入ds,会继续寻找 已然就位 发表于 2017-9-30 16:26
原来我理解错误了,我理解成找到0后放入ds,会继续寻找
多看看代码的执行过程就会了,一开始是容易理解错 丶忘却的年少o 发表于 2017-9-30 10:48
这么说吧:
s段里是去寻找一个让CX=0的值的地址,bx是地址,是值,首先你取出一个发现cx不为0,那肯定会 ...
一样的问题但是答案却是这个,和我答案完全不一样 已然就位 发表于 2017-9-30 16:34
一样的问题但是答案却是这个,和我答案完全不一样
我觉得这个答案不对。要是MOV后cx已经是0了,这里inc cx会让loop再次进入循环(cx=0才退出循环),再者,就算不考虑循环,下面的inc bx执行后dx的地址肯定就大了1,答案也不准确了 丶忘却的年少o 发表于 2017-9-30 16:43
我觉得这个答案不对。要是MOV后cx已经是0了,这里inc cx会让loop再次进入循环(cx=0才退出循环),再者, ...
dos,没有办法进行链接吗?为什么我运行不了程序。我的步骤应该对啊,编写源程序,把后缀名TXT改成asm。点【导入.asm文件】,启动dos.然后就是我图片上的步骤。还一张图片是成功的样式。大神帮我看一下
页:
[1]
2