鱼C论坛

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

用TC2.0编译后的可执行文件,用debug看半天看不到我要的代码

[复制链接]
发表于 2013-1-29 18:03:23 | 显示全部楼层 |阅读模式
1鱼币
TC下编辑代码:
void main()
{
        _AX=1;
        _BX=2;
        _CX=3;
        _AX=_BX+_CX;
}
编译生成可执行文件后
debug noname.exe
-u
0B89:0000 BAE00B        MOV     DX,0BE0
0B89:0003 2E            CS:
0B89:0004 8916F801      MOV     [01F8],DX
0B89:0008 B430          MOV     AH,30
0B89:000A CD21          INT     21
0B89:000C 8B2E0200      MOV     BP,[0002]
0B89:0010 8B1E2C00      MOV     BX,[002C]
0B89:0014 8EDA          MOV     DS,DX
0B89:0016 A39200        MOV     [0092],AX
0B89:0019 8C069000      MOV     [0090],ES
0B89:001D 891E8C00      MOV     [008C],BX

0B89:0021 892EAC00      MOV     [00AC],BP
0B89:0025 C7069600FFFF  MOV     WORD PTR [0096],FFFF
0B89:002B E83401        CALL    0162
0B89:002E C43E8A00      LES     DI,[008A]
0B89:0032 8BC7          MOV     AX,DI
0B89:0034 8BD8          MOV     BX,AX
0B89:0036 B9FF7F        MOV     CX,7FFF
0B89:0039 26            ES:
0B89:003A 813D3837      CMP     WORD PTR [DI],3738
0B89:003E 7519          JNZ     0059
0B89:0040 26            ES:
0B89:0041 8B5502        MOV     DX,[DI+02]


就这么一直U下去 看不到 mov ax,1
请问这是为什么?

最佳答案

查看完整内容

因为TC编译完之后,程序前面是有一堆初始化及其他复杂操作的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-1-29 18:03:24 | 显示全部楼层
因为TC编译完之后,程序前面是有一堆初始化及其他复杂操作的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-1-29 18:32:11 | 显示全部楼层
谢谢提醒
被这东西弄得浪费很多时间
前面加了个HELLO WORLD
用-D找 在XXXX:0705位置找到了HELLO WORLD

评分

参与人数 1鱼币 +1 收起 理由
メ㊣逆ご帅☆ + 1 我晕,佩服,我就没这么有思想。去搞这个。.

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-1-30 09:04:24 | 显示全部楼层
额,学tc时,_AX=1这个_ax是变量,但是你没定义变量和初始化变量。。。。这个tc没法直接控制寄存器的,你的想法有问题。。。TC没学过吧。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-1-31 17:55:43 | 显示全部楼层
TC编译的程序,你用debug反汇编  :L
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-2-2 14:58:41 | 显示全部楼层
同样的问题,求赐教
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-2-12 15:53:05 | 显示全部楼层
本帖最后由 热血冰点 于 2013-2-12 16:10 编辑

我不知道你在说什么,请您好好补习一下再来丢人.本楼主给你现成代码让你自己调试
file test.c
void main()
{
        _AX=1;
        _BX=2;
        _CX=3;
        _AX=_BX+_CX;
        printf("%x",main);
}
运行一遍程序记住输出值,你睁大眼睛
debug test.exe
-u 1fa
0B89:01FA 55            PUSH    BP
0B89:01FB 8BEC          MOV     BP,SP
0B89:01FD B80100        MOV     AX,0001
0B89:0200 BB0200        MOV     BX,0002
0B89:0203 B90300        MOV     CX,0003
0B89:0206 8BC3          MOV     AX,BX
0B89:0208 03C1          ADD     AX,CX
0B89:020A B8FA01        MOV     AX,01FA
0B89:020D 50            PUSH    AX
0B89:020E B89401        MOV     AX,0194
0B89:0211 50            PUSH    AX
0B89:0212 E8BC08        CALL    0AD1
0B89:0215 59            POP     CX
0B89:0216 59            POP     CX
0B89:0217 EB00          JMP     0219
0B89:0219 EBFE          JMP     0219


_AX在TC中可以直接控制AX寄存器,在VC中不能,你是把VC当TC学了?


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-2-12 15:56:40 | 显示全部楼层
本帖最后由 热血冰点 于 2013-2-12 16:12 编辑

最快的解决方法是:
printf("%x",main);

唱衰本楼主的楼上几位,您解答不出来为何还对本楼主指手画脚?还有人怪我TC编译的程序不能用DEBUG调试?还有人不懂装懂说我没学过TC?嗯 TC这玩意我真没主要去学,只是用用,C我只学C99而已.

多干实事,少说空话,能回答出来就回答,回答不了一起虚心学习,这样才是提高水平的正确态度.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-2-13 16:24:19 | 显示全部楼层
热血冰点 发表于 2013-2-12 15:53
我不知道你在说什么,请您好好补习一下再来丢人.本楼主给你现成代码让你自己调试
file test.c
运行一遍程 ...

额,我试过指针调用,没试过-ax这个符号功能。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 00:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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