| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2598 人关注过本帖
标题:汇编菜鸟,我用JNC指令又出问题了,求大神帮助
取消只看楼主 加入收藏
Agdmeg
Rank: 4
来 自:四川成都
等 级:业余侠客
威 望:3
帖 子:101
专家分:201
注 册:2011-8-9
结帖率:92.31%
收藏
已结贴  问题点数:20 回复次数:8 
汇编菜鸟,我用JNC指令又出问题了,求大神帮助
DATA SEGMENT
   S  DB "ERROR !",0DH,0AH,"$"
DATA ENDS
CODE SEGMENT
     ASSUME CS:CODE,DS:DATA
START:
     CLC
     MOV AX,DATA
     MOV DS,AX

     MOV AH,47H   ;DOS的47H中断
     INT 21H

     JNC NEXT     根据47H中断结果是否显示错误“EEROR !"

     MOV DX,OFFSET S
     MOV AH,09H
     INT 21H

NEXT:     
     MOV AH,4CH
     INT 21H
CODE ENDS
END START
运行后显示:
图片附件: 游客没有浏览图片的权限,请 登录注册

显示EEROR !说明程序中没有跳转,然后DEBUG,输入G然它运行到47H中断完成停止,
但看到CF=0,那就应该跳转吧,为什么运行是没有跳转??
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 然后 
2012-08-11 13:41
Agdmeg
Rank: 4
来 自:四川成都
等 级:业余侠客
威 望:3
帖 子:101
专家分:201
注 册:2011-8-9
收藏
得分:0 
版主一定懂的,我刚学汇编,就遇到一堆问题,版主这么热心,一定要帮帮我啊
2012-08-11 14:53
Agdmeg
Rank: 4
来 自:四川成都
等 级:业余侠客
威 望:3
帖 子:101
专家分:201
注 册:2011-8-9
收藏
得分:0 
我只是想得到当前目录完全字符串,于是百度文库下了DOS中段列表,BIOS中断列表,在DOS中断列表中查到:

(4)、功能47H
功能描述:取当前目录的完全路径字符串
入口参数:AH=47H
DL=驱动器号(0=缺省,1=A,…)
DS:SI=存放当前目录字符串的地址
出口参数:CF=0——读取成功,否则,AX=错误号(0FH),其含义见错误代码表

其实我是想写个程序打开当前程序文件夹内另一个文件,我想这必须要得到当前目录的完全路径,看到47H这个可以,没想到一试就出现这莫名其妙的问题
2012-08-11 15:15
Agdmeg
Rank: 4
来 自:四川成都
等 级:业余侠客
威 望:3
帖 子:101
专家分:201
注 册:2011-8-9
收藏
得分:0 
书上的中段列表不全,只是常用的,所以在百度文库下载了全面的DOS,BIOS中断列表
2012-08-11 15:17
Agdmeg
Rank: 4
来 自:四川成都
等 级:业余侠客
威 望:3
帖 子:101
专家分:201
注 册:2011-8-9
收藏
得分:0 
版主一定要帮帮我啊,这汇编真TM扯淡,明明CF=0应该跳转,可程序运行就没有跳
2012-08-11 15:19
Agdmeg
Rank: 4
来 自:四川成都
等 级:业余侠客
威 望:3
帖 子:101
专家分:201
注 册:2011-8-9
收藏
得分:0 
入口参数我也不明白,尤其是DL,我是因为不知道程序当前目录路径在哪才用的47H中断,而DL要我指定驱动器,程序可能在我电脑中在C盘,但被人运行我的程序不一定就在C盘啊,我怎么指定?
2012-08-11 15:33
Agdmeg
Rank: 4
来 自:四川成都
等 级:业余侠客
威 望:3
帖 子:101
专家分:201
注 册:2011-8-9
收藏
得分:0 
DS:SI入口参数我明白,但我运行时我想SI已经是0000H,所以没必要了吧
2012-08-11 15:37
Agdmeg
Rank: 4
来 自:四川成都
等 级:业余侠客
威 望:3
帖 子:101
专家分:201
注 册:2011-8-9
收藏
得分:0 
代码改了,加入了参数,可仍然在JNC位置有问题
DATA SEGMENT
   S  DB "AAAAAAAAAAAAAA",0DH,0AH,"$"
DATA ENDS
CODE SEGMENT
     ASSUME CS:CODE,DS:DATA
START:
     CLC          ;程序初始化
     MOV AX,DATA  
     MOV DS,AX

     MOV DL,00H   ;中断的三个入口参数
     MOV SI,0000H
     MOV AH,47H   

     INT 21H     ;中断

     JNC NEXT    ;运行结果判断是否显示“AAAAAAAAAAAAAA”并退出程序
     MOV DX,OFFSET S
     MOV AH,09H
     INT 21H
     JMP EXIT

NEXT:     ;中断正确显示出目录路径
     MOV DX,SI
     MOV AH,09H
     INT 21H

EXIT:   
     MOV AH,4CH
     INT 21H
CODE ENDS
END START

运行后:
图片附件: 游客没有浏览图片的权限,请 登录注册

很明显,程序依然没有跳转,先是显示了14个A,然后将文件路径asm显示出来(我的程序的确在C:\ASM文件夹中)后,覆盖掉了4个A,那就是说MOV AH,47H      int  21H这是运行成功了的,但怎么JNC依然没有跳转,我将JNC改为JC运行结果和JNC一样,真不明白,JNC、JC指令要怎么用????

[ 本帖最后由 Agdmeg 于 2012-8-11 16:49 编辑 ]
2012-08-11 16:42
Agdmeg
Rank: 4
来 自:四川成都
等 级:业余侠客
威 望:3
帖 子:101
专家分:201
注 册:2011-8-9
收藏
得分:0 
既然都显示了14个A,那为什么JMP指令没起作用
2012-08-11 16:52
快速回复:汇编菜鸟,我用JNC指令又出问题了,求大神帮助
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042949 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved