版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件开发环境,上次课-复习,上课的过程,复习 知识点 实战 练习 分享 建议大家带本本,主要内容,概述 良好的软件开发习惯 面向对象编程 UML 设计模式,开发软件所涉及到的各个方面: 操作系统 编程语言 软件设计 软件测试,实证的风格: 设问 猜测 实证,VC+6.0目前软件开发环境,VC+6.0之前,MS一直落后于Boland VS6,2003,2005,2008,2010 VC+6.0环境的简单演示 问题1:include“” 编译出现错误 断点、单步、Watch、Rebuild,int var = 5; int avar; Dev C+5,万丈高楼的基础,高级语言到汇编的映射 调试器的
2、使用 汇编高级技巧的学习,全局变量赋值引发的故事,调试功能:反汇编、监视、内存观察,从最简单的全局变量赋值开始,int gi; void main() gi = 12; 要观察这段语句的实现,就要从反汇编开始,打断点,并运行程序,首先,将光标放到要中断执行的语句,按f9, 然后按f5以调试方式运行 如下图,打开反汇编,如下图选择反汇编,gi = 12; 004117CE mov dword ptr gi (417164h),0Ch 下面的汇编语句对应gi = 12这句高级语言。为了看到它的机器码,我们如下选择,在编辑界面中鼠标右键单击,选择如下菜单,gi = 12; 004117CE C7 0
3、5 64 71 41 00 0C 00 00 00 mov dword ptr gi (417164h),0Ch 请注意,对应赋值语句的这一排可以分成三个部分。红色的部分是赋值语句的起始地址004117ce。黑色的部分是mov语句的机器码。而蓝色的部分是mov指令的汇编表示。 这条语句是将12(就是十六进制0ch)赋值给内存地址为417164h的内存。,设问、猜测、实证,构建,我们不相信结论,我们要实证!” 面对上页谈到的东西,大家想想有什么可以发问和存疑的东西呢? gi = 12; 004117CE C7 05 64 71 41 00 0C 00 00 00 mov dword ptr gi
4、 (417164h),0Ch,.dword ptr gi (417164h),gi的地址真的是417164h吗? C7 05 64 71 41 00 0C 00 00 00真的是mov指令的机器码吗?能看出两者的联系吗? 004117CE C7 05 64 71 41 00 0C 00 00 00 其中004117ce真的是mov语句的起始地址吗? ,问题,.dword ptr gi (417164h),gi的地址真的是417164h吗?,解题思路 (1)我们可以用printf(“gi address=%x n”, 来看看结果。这是我们最简单的想法。但需要修改代码。 (2)运用调试器,在不修改
5、代码的前提下观看程序的五脏六腑。 注意,设问后的猜测非重要,而这时基本知识的运用就非常关键,这里,调试器成为我们第一个重要的基本知识,查看高级语言的变量或表达式,如下图点击菜单,在名称中输入 004117CE C7 05 64 71 41 00 0C 00 00 00 mov dword ptr gi (417164h),0Ch Mov dword ptr gi (417164h), 0ch; gi的地址真的是417164h吗?搞定 C7 05 64 71 41 00 0C 00 00 00真的是mov指令的机器码吗?能看出两者的联系吗? 004117CE C7 05 64 71 41 00
6、0C 00 00 00 其中004117ce真的是mov语句的起始地址吗,C7 05 64 71 41 00 0C 00 00 00真的是mov指令的机器码吗?能看出两者的联系吗?,mov dword ptr gi (417164h),0Ch 我们觉得机器码一定包含了指令是mov,并且,包含了要赋值的12和gi的地址,417164h。 运用我们的前面才学的大小端机,和整数长度的原理,能看出来吗? 如果看出来了,请再做一个实验验证一下,004117CE C7 05 64 71 41 00 0C 00 00 00 其中004117ce真的是mov语句的起始地址吗?,如何可以从侧面证明mov指令的起
7、始地址? 提示:可以采用之前学到的几个调试手段中的一个。,小测试,char str = “Hello” ; char *p = str ; int n = 10; 请计算 sizeof (str ) = sizeof ( p ) = sizeof ( n ) =,小测试,char c; unsigned int a=6; int b=-20; (a+b6)?(c=1):(c=0);,作业1,建立VC+6.0的环境 用C语言编写计算器控制台程序,输入两个数和运算符,输出结果 学会各种调试技巧 要求: 程序源码 运行截图 心得体会:运行调试中遇到的问题以及如何解决,良好的编程风格,运算符的优先级和结合性,知识点: 单目运算符优先级较高,赋值运算符优先级低。算术运算符优先级较高,关系和逻辑运算符优先级较低。 多数运算符具有左结合性,单目运算符、三目运算符、赋值运算符具有右结合性。,运算符的优先级和结合性,良好风格 如果代码行中的运算符比较多,用括号确定表达式的操作顺序,避免使用默认的优先级。,word = (high 8) | low if (a | b) iN; i+) if (condition) DoSo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年湖南省怀化市新晃侗族自治县初三下学期第一次联物理试题含解析
- 2026年河南省安阳市安阳县达标名校5月初三月考数学试题含解析
- 2026年大学大一(基础医学)组织胚胎学基础测试题及答案
- 2025年前台防疫接待礼仪能力测试
- 护理健康教育课件及配套作业
- (一模)邯郸市2026届高三第一次模拟检测语文试卷(含答案详解)
- 护理教学中的职业素养与职业道德
- 护理中的研究方法与论文写作
- 如何在合作作文中激发学生修改作文的兴趣
- 2026二年级数学下册 用乘法口诀求商
- 51testing:2024年软件测试行业现状调查报告
- 2025年中国带状疱疹防治指南
- 灌排渠道设计规范
- 三年级数学下册口算练习题(每日一练共12份)
- 扬州大学广陵学院《遗传学》2025-2026学年期末试卷(A卷)含答案
- 我心中的老师班会课件
- 低空经济试题及答案
- 养老院安全生产教育培训内容
- 设备设施停用管理制度
- 学会宽容第3课时-和而不同 公开课一等奖创新教案
- 山东高考英语语法单选题100道及答案
评论
0/150
提交评论