汇编新手,求解
c++吧
全部回复
仅看楼主
level 1
btt1095347198 楼主
debug命令是模拟8086嘛?
怎样使用debug访问0x0021fa0f这样的内存单元?
比如我用c++写int a = 9; cout << &a << endl;结果为0x00021fa0f
但8086只能访问范围0~fffff.
刚接触汇编,希望高手不吝赐教。
2012年04月30日 14点04分 1
level 1
btt1095347198 楼主
8086是十四个寄存器,Windows有16个寄存器?是这样吗?
debug下只能显示十四个寄存器的内容,还有两个fs,gs应该咋显示呢?
2012年04月30日 14点04分 2
level 3
分清体系结构和操作系统。
8086的寻址只有1MB, 也没有fs和gs.
你用的32位windows很可能会对应386,至于286这个中间产品我不确认到底支持如何。
2012年04月30日 15点04分 3
level 11
debug.exe是16位DOS程序。在Windows NT系列(NT/2000/XP/2003/Vista/7/8)中启动debug.exe将自动启动ntvdm.exe这个16位DOS虚拟环境。根本不能调试你的32位程序。顶多把你的PE文件的 DOS stub 给调试了一下。
注:DOS stub就是PE格式(Portable Executable,可移植可执行)的文件的头部的一小段DOS程序,其作用就是调用 INT 21 中断输出“This program cannot be run in DOS mode”一句话。
2012年04月30日 19点04分 4
level 1
btt1095347198 楼主
我用的是win7。是啊,8086的寻址只有1MB, 也没有fs和gs.
那有没有别的办法能访问win7的各个寄存器,和内存空间呢?
3楼的386是啥呢?
2012年05月01日 01点05分 5
level 10
我之前用debug.exe 也发现只能调16位,
cv windbg 应该可以吧?
2012年05月01日 02点05分 6
level 1
btt1095347198 楼主
[气愤]
2012年05月01日 03点05分 8
level 1
LZ左转出门 汇编吧 [吐舌]
2012年05月01日 09点05分 9
level 12
[礼物]你们家win7是用8086的?
2012年05月01日 09点05分 10
level 1
debug 有32位的[吐舌]
不过想当蛋疼
2012年05月01日 09点05分 11
level 12
果断windbg,ring0的
2012年05月01日 09点05分 12
level 1
[我错了]
2012年05月01日 09点05分 13
level 1
btt1095347198 楼主
今天试了一下winbdg貌似很强大,只会用它调试.exe文件。
但是如果我写了一个c++程序,没通过编译(没有生产.exe文件),能用windbg调试吗?
求解,百度没整明白。
2012年05月01日 11点05分 14
level 12
exe都出不来拿啥家伙调试[砍死你]
不过偶经常干的事情就是用ollyice一边写一遍跑,写一句跑一句
2012年05月01日 13点05分 15
level 1
btt1095347198 楼主
我想说的是,winbdg能不能像vc那样对一个源文件编译,运行啥的。
winbdg查错貌似更方便一些。
2012年05月02日 04点05分 16
1