鱼C论坛

 找回密码
 立即注册
查看: 5371|回复: 24

[已解决]转移的一些疑问

[复制链接]
发表于 2017-9-29 20:18:47 | 显示全部楼层 |阅读模式

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

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

x
start:mov ax,2000h
        mov ds,ax
        mov bx,0

s:        mov cl,0
        mov cx,[bx]
        jxcz ok
        inc ok
        jmp short s
ok:
        mov dx,bx
题目是将段地址2000h中第一个值为0的字节,把偏移地址放入dx中。


在s:中inc ok换成inc [bx]有什么注意的地方?
还一个就是jxcz不是跳到ok吗,程序应该执行到ok那一段,那么接下来是怎么回到inc ok那一行的?
最佳答案
2017-9-29 20:41:15
初步改了一下,不懂再问!
start:mov ax,2000h
       mov ds,ax
       mov bx,0

s:     mov cl,0                ;这个好像没什么用呀,下面这句还是会替换掉cl呀
       mov cx,[bx]
       jcxz ok                ;不是jxcz,检查下错误。只有cx=0才会跳转
       inc bx                ;不加[]的,你要加地址,不是bx地址的值!!!还有,别加定位点ok等
       jmp short s

ok:           mov dx,bx
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-9-29 20:27:42 | 显示全部楼层
inc ok 这样也可以?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-29 20:41:15 | 显示全部楼层    本楼为最佳答案   
初步改了一下,不懂再问!
start:mov ax,2000h
       mov ds,ax
       mov bx,0

s:     mov cl,0                ;这个好像没什么用呀,下面这句还是会替换掉cl呀
       mov cx,[bx]
       jcxz ok                ;不是jxcz,检查下错误。只有cx=0才会跳转
       inc bx                ;不加[]的,你要加地址,不是bx地址的值!!!还有,别加定位点ok等
       jmp short s

ok:           mov dx,bx
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-29 21:46:10 | 显示全部楼层
兄弟用的什么软件写程序
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-29 21:47:33 | 显示全部楼层
陈淮南 发表于 2017-9-29 21:46
兄弟用的什么软件写程序

问我吗?写什么程序?汇编还是C?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-29 21:50:16 | 显示全部楼层
对啊  汇编 我刚注册不能私聊你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-29 21:53:16 | 显示全部楼层
陈淮南 发表于 2017-9-29 21:50
对啊  汇编 我刚注册不能私聊你

大哥,点我回复的那个楼的左下角有点透明的“回复”再发言,不然我收不到你的消息的。
notepad++写的代码,DOSBox运行的代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-29 21:57:16 | 显示全部楼层
丶忘却的年少o 发表于 2017-9-29 21:53
大哥,点我回复的那个楼的左下角有点透明的“回复”再发言,不然我收不到你的消息的。
notepad++写的代 ...

好的,能加你qq吗 把软件传给我一下 谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-29 21:57:57 | 显示全部楼层
丶忘却的年少o 发表于 2017-9-29 21:53
大哥,点我回复的那个楼的左下角有点透明的“回复”再发言,不然我收不到你的消息的。
notepad++写的代 ...

我邮箱957097425@qq.com
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-29 21:59:53 | 显示全部楼层

notepad++百度下个就行,这个没要求的。
DOSbox链接:https://pan.baidu.com/s/1slUEn3R 密码:h8y9
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-29 22:08:08 | 显示全部楼层
丶忘却的年少o 发表于 2017-9-29 21:59
notepad++百度下个就行,这个没要求的。
DOSbox链接:https://pan.baidu.com/s/1slUEn3R 密码:h8y9

好的 谢谢老哥
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-29 23:08:15 | 显示全部楼层
丶忘却的年少o 发表于 2017-9-29 20:41
初步改了一下,不懂再问!

不懂的话就是第二个问题啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-30 00:05:12 From FishC Mobile | 显示全部楼层
已然就位 发表于 2017-9-29 23:08
不懂的话就是第二个问题啊

我在代码里写了,你把jcxz写反了,就算cx=0也不会跳的。
你把你的代码改了试试,有问题再问,没问题别忘记点“最佳答案”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-30 10:16:27 | 显示全部楼层
丶忘却的年少o 发表于 2017-9-30 00:05
我在代码里写了,你把jcxz写反了,就算cx=0也不会跳的。
你把你的代码改了试试,有问题再问,没问题别忘 ...

就是jcxz不是跳到ok吗,程序应该执行到ok那一段,那么接下来是怎么回到inc ok那一行的?就是这个问题。是不是ok段执行完了就会回到inc ok。你这里是inc bx。简单的说就是跳出S循环,到了ok段,程序的角度来说接下来是怎么回到inc bx
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-30 10:48:56 | 显示全部楼层
已然就位 发表于 2017-9-30 10:16
就是jcxz不是跳到ok吗,程序应该执行到ok那一段,那么接下来是怎么回到inc ok那一行的?就是这个问题。是 ...

这么说吧:
s段里是去寻找一个让CX=0的值的地址,bx是地址,[bx]是值,首先你取出一个[bx]发现cx不为0,那肯定会去寻找下一个地址呀,而不是跳转出去告诉它你找到了,所以jcxz ok判断出cx不为零后就执行下面那一条,让地址到下一个,判断是不是零,那你地址到下一个肯定是inc bx,那bx到后面去,inc ok是什么,没办法解释的呀,ok只是一个定位点,又不是寄存器,怎么能加那。然后循环s这个点开始的程序继续找……
假设找到了CX=0了,是[BX]这个地方的值,那BX就是该值的地址,然后JCXZ OK判断出CX=0,跳转到OK这个定位点开始的程序……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-30 16:26:04 | 显示全部楼层
丶忘却的年少o 发表于 2017-9-30 10:48
这么说吧:
s段里是去寻找一个让CX=0的值的地址,bx是地址,是值,首先你取出一个发现cx不为0,那肯定会 ...

原来我理解错误了,我理解成找到0后放入ds,会继续寻找
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-30 16:31:39 | 显示全部楼层
已然就位 发表于 2017-9-30 16:26
原来我理解错误了,我理解成找到0后放入ds,会继续寻找

多看看代码的执行过程就会了,一开始是容易理解错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-30 16:34:54 | 显示全部楼层
丶忘却的年少o 发表于 2017-9-30 10:48
这么说吧:
s段里是去寻找一个让CX=0的值的地址,bx是地址,是值,首先你取出一个发现cx不为0,那肯定会 ...

一样的问题但是答案却是这个,和我答案完全不一样

图1

图1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-30 16:43:55 | 显示全部楼层
已然就位 发表于 2017-9-30 16:34
一样的问题但是答案却是这个,和我答案完全不一样

我觉得这个答案不对。要是MOV后cx已经是0了,这里inc cx会让loop再次进入循环(cx=0才退出循环),再者,就算不考虑循环,下面的inc bx执行后dx的地址肯定就大了1,答案也不准确了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-2 18:13:30 | 显示全部楼层
丶忘却的年少o 发表于 2017-9-30 16:43
我觉得这个答案不对。要是MOV后cx已经是0了,这里inc cx会让loop再次进入循环(cx=0才退出循环),再者, ...

dos,没有办法进行链接吗?为什么我运行不了程序。我的步骤应该对啊,编写源程序,把后缀名TXT改成asm。点【导入.asm文件】,启动dos.然后就是我图片上的步骤。还一张图片是成功的样式。大神帮我看一下
QQ图片20171002180812.png
QQ图片20171002180818.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 00:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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