调试第一个汇编程序(下)
来源:互联网 发布:vscode前端插件 编辑:程序博客网 时间:2024/05/29 04:39
接“调试第一个汇编程序(上)”。很抱歉,在此篇博文中我截了很多的图,这样便于讲解清楚,各位也看得明白,但是现在我上传的图片太多,不能再继续上传图片,以后一旦解禁,我会把缺失的图片补上。
在watch标签页窗口中,我们在Command命令窗口输入了命令:ws 1, r0来监控r0寄存器的变化,在此就会显示r0寄存器的内容。也可以手动在watch窗口加入需要查看的变量。或者直接从代码中把需要查看的寄存器拖到watch窗口。
OK,我们暂时需要了解这些就可以完全的能调试弄明白我们的程序了。好了,开始我们的第一个问题了。我们使用Ctrl + F5即可调试我们的程序,这时我们仔细观察一下,此时PC寄存器的内容为0x30000000,到底这个内容是如何来得呢。这还要从我们引入的调试文件说起,这个调试文件中就有一句话,指出了pc的初始值内容,实际上pc初始值内容确实来源于此处。这时我们观察Command命令窗口的输出,会看到:Load "C:\\Documents and Settings\\cc\\My Documents\\Asm1_a\\asm_1a.AXF"
Include "C:\\Documents and Settings\\cc\\My Documents\\Asm1_a\\DebugINRam.ini" 字样,实际上这就是告诉调试器pc的内容以及在某些内存区间设置权限。
这个程序不是太长,我们完全不用打断点,单步调试即可。OK,单步执行的快捷键是F10,进入到函数内部的快捷键是F11。通过单步调试,可以很清楚地看到寄存器的变化。如果我们在调试文件中去掉
map 0x00000000,0x00200000 read write execmap 0x30000000,0x34000000 read write exec这两句,会有什么反应呢,这时,我们观察Command窗口,就会有类似的信息输出:*** error 65: access violation at 0x30200000 : no 'write' permission。此处就是因为没有对内存区间设置权限的原因。通过多次练习,相信大家会对第一个程序进行调试就会有了初步的印象了。
如果大家用VC++ 6.0,会发现uVision的调试功能和VC++ 6.0有很多相似的地方。同样,对于有些内容,我在这里也没有进行深入讲解,以后我会慢慢补充一些相关的知识。我们只需要有这么一个框架,其余的汇编程序都可以套用到这里面来,我相信,经过多次的训练,大家会程序的调试会有了比较深刻的认识了。
- 调试第一个汇编程序(下)
- 调试第一个汇编程序
- 调试第一个汇编程序(上)
- 第一个windows下的汇编程序
- 第一个汇编程序
- 第一个汇编程序
- 第一个汇编程序
- 第一个ARM汇编程序
- 第一个ARM汇编程序
- 第一个汇编程序
- 第一个汇编程序
- 第一个汇编程序分析
- 第一个汇编程序
- 第一个汇编程序
- 第一个masm32汇编程序
- 俺的第一个汇编程序
- 我的第一个汇编程序
- 第一个汇编程序hello world
- Google的威风六面
- 有问题
- 执行rake db:migrate时的两个错误
- oracle连接中出现错误ORA-12541,ORA-12514,ORA-01017的解决方法
- 更换android的初始化图片
- 调试第一个汇编程序(下)
- Balsamiq Mockups安装&使用
- java基础知识之 算法 【冒泡排序】【快速排序】
- 换bak 文件-debug 请使用WITH MOVE选项来 xxx 错误
- android开机动画
- 面向模型之 “模型+插件”技术
- 哈希表
- 如何打开Android 打包文件 .apk 文件
- Android的Activity启动长时间的操作开启一个Service比开启一个线程好