热血冰点 发表于 2013-1-29 18:03:23

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

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   ,DX
0B89:0008 B430          MOV   AH,30
0B89:000A CD21          INT   21
0B89:000C 8B2E0200      MOV   BP,
0B89:0010 8B1E2C00      MOV   BX,
0B89:0014 8EDA          MOV   DS,DX
0B89:0016 A39200      MOV   ,AX
0B89:0019 8C069000      MOV   ,ES
0B89:001D 891E8C00      MOV   ,BX

0B89:0021 892EAC00      MOV   ,BP
0B89:0025 C7069600FFFFMOV   WORD PTR ,FFFF
0B89:002B E83401      CALL    0162
0B89:002E C43E8A00      LES   DI,
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 ,3738
0B89:003E 7519          JNZ   0059
0B89:0040 26            ES:
0B89:0041 8B5502      MOV   DX,


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

メ㊣逆ご帅☆ 发表于 2013-1-29 18:03:24

因为TC编译完之后,程序前面是有一堆初始化及其他复杂操作的

热血冰点 发表于 2013-1-29 18:32:11

谢谢提醒
被这东西弄得浪费很多时间
前面加了个HELLO WORLD
用-D找 在XXXX:0705位置找到了HELLO WORLD

〢坏ヤρì滊 发表于 2013-1-30 09:04:24

额,学tc时,_AX=1这个_ax是变量,但是你没定义变量和初始化变量。。。。这个tc没法直接控制寄存器的,你的想法有问题。。。TC没学过吧。。。。

Message_Box 发表于 2013-1-31 17:55:43

TC编译的程序,你用debug反汇编:L

xitonggongchen 发表于 2013-2-2 14:58:41

同样的问题,求赐教

热血冰点 发表于 2013-2-12 15:53:05

本帖最后由 热血冰点 于 2013-2-12 16:10 编辑

〢坏ヤρì滊 发表于 2013-1-30 09:04 static/image/common/back.gif
额,学tc时,_AX=1这个_ax是变量,但是你没定义变量和初始化变量。。。。这个tc没法直接控制寄存器的,你的 ...
我不知道你在说什么,请您好好补习一下再来丢人.本楼主给你现成代码让你自己调试
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学了?


热血冰点 发表于 2013-2-12 15:56:40

本帖最后由 热血冰点 于 2013-2-12 16:12 编辑

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

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

多干实事,少说空话,能回答出来就回答,回答不了一起虚心学习,这样才是提高水平的正确态度.

〢坏ヤρì滊 发表于 2013-2-13 16:24:19

热血冰点 发表于 2013-2-12 15:53 static/image/common/back.gif
我不知道你在说什么,请您好好补习一下再来丢人.本楼主给你现成代码让你自己调试
file test.c
运行一遍程 ...

额,我试过指针调用,没试过-ax这个符号功能。。。。
页: [1]
查看完整版本: 用TC2.0编译后的可执行文件,用debug看半天看不到我要的代码