【汇编语言】开发过程
程序开发过程
文章目录
- 程序开发过程
- 一、逐步开发
- (1)源程序的编辑
- (2)源程序的汇编
- (3)目标文件的连接
- (4)可执行文件的运行
- 二、列表文件与调试程序
- (1)列表文件
- (2)调试程序
- 三、快速开发
一、逐步开发
(1)源程序的编辑
- 源程序文件是无格式文件、纯文本类型
- 以.ASM为扩展名,可使用任何文本编辑器
►Windows的记事本Notepad
►其他程序开发工具中的编辑环境
►专注于源程序编写的编辑软件,例如UltraEdit32
; eg0000.asm in Windows Consoleinclude io32.inc.data
msg byte 'Hello World' ; 数据定义.code
start:mov eax,offset msg call dispmsgexit 0end start
(2)源程序的汇编
- 生成目标模块文件(.OBJ)
- MASM 6.x的汇编程序是ML.EXE
BIN\ML /c /coff eg0101.asm
►参数“/c”(小写字母)实现源程序的汇编
►参数“/coff”(小写字母)生成COFF格式目标模块文件
ML.EXE的参数区别大小写
将源文件放在MASM目录
(3)目标文件的连接
- 把一个或多个目标文件和库文件合成一个可执行文件
- 可执行文件以.EXE为扩展名
- 32位连接程序被更名为LINK32.EXE
BIN\LINK32 /subsystem:console eg0101.obj
►“/subsystem:console”生成Windows控制台(Console)文件
►“/subsystem:windows”生成Windows图形窗口的可执行文件
使用批处理文件方便操作
汇编程序只指出语法错误
(4)可执行文件的运行
进入控制台(或模拟DOS)环境
在命令行提示符下输入文件名(可以省略扩展名)按下回车键运行
eg0101.exe
运行错误,就需要
- 静态排错:阅读分析源程序
- 动态排错:利用调试程序
不要在Windows下双击运行
二、列表文件与调试程序
(1)列表文件
- 列表文件(.LST)含有源程序和目标代码
BIN\ML /c /coff /Fl eg0101.asm
“/Fl”创建列表文件(大写F、小写l,不是数字1)
- 列表文件有两部分内容
- 第一部分:源程序及其代码
- 第二部分:各种标识符
(2)调试程序
- WinDbg是微软提供的Windows调试程序
- WinDbg支持源程序级调试,但汇编、连接时要加入参数
汇编时用“/Zi”(大写Z、小写i)参数
BIN\ML /c /coff /Fl /Zi eg0101.asm
连接时用“/debug”参数
BIN\LINK32 /subsystem:console /debug eg0101.obj
三、快速开发
快速开发的批处理文件MAKE32.BAT
@echo off BIN\ML /c /coff /Fl /Zi %1.asm if errorlevel 1 goto terminate BIN\LINK32 /subsystem:console /debug %1.obj if errorlevel 1 goto terminate DIR %1.* :terminate @echo on
快速开发过程
① 进入MASM目录:双击文件WIN32.BAT
② 生成可执行文件:make32 eg0101
【汇编语言】开发过程相关推荐
- 嵌入式C语言基础教程一
嵌入式系统C语言编程--背景 嵌入式系统C语言编程修炼之道--软件架构 ...
- C语言嵌入式系统编程修炼之道——背景篇
C语言嵌入式系统编程修炼之道--背景篇 作者:宋宝华 e-mail:[email]21cnbao@21cn.com[/email] 不同于一般形式的软件编程,嵌入式系统编程建立在特定的硬件平台上,势 ...
- [转]C语言嵌入式系统编程修炼之背景篇
http://www.2ed.cn/Article-150-21922.shtml 不同于一般形式的软件编程,嵌入式系统编程建立在特定的硬件平台上,势必要求其编程语言具备较强的硬件直接操作能力.无疑, ...
- 单片机软件设计架构(C语言)
C语言嵌入式系统编程修炼之一:背景篇 不同于一般形式的软件编程,嵌入式系统编程建立在特定的硬件平台上,势必要求其编程语言具备较强的硬件直接操作能力.无疑,汇编语言具备这样的特质.但是,归因于汇编语言开 ...
- C/C++程序员面试指南
C/C++程序员面试指南 编辑本段图书信息 书 名: C/C++程序员面试指南 作 者:杨国祥 出版社: 电子工业出版社 出版时间: 2010-4-1 ISBN: 9787121103599 开本: ...
- 嵌入式C/C++语言精华文章集锦
嵌入式C/C++语言精华文章集锦 C/C+语言struct 深层探索.................................................................. ...
- 浅谈C语言嵌入式系统编程注意事项
C语言嵌入式系统编程注意事项之背景篇 本文的讨论主要围绕以通用处理器为中心的协议处理模块进行,因为它更多地牵涉到具体的C语言编程技巧 不同于一般形式的软件编程,嵌入式系统编程建立在特定的硬件平台上 ...
- 嵌入式 C/C++语言精华文章集锦
C/C+语言 struct 深层探索 ............................................................................2 C++ ...
- C语言在嵌入式系统编程时的注意事项
C语言是一门通用计算机编程语言,应用广泛.C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言. 尽管C语言提供了许多低级处理的功 ...
- C语言嵌入式系统编程修炼(经典中的经典)
C语言嵌入式系统编程修炼 http://blog.chinaunix.net/u/25764/showart_326589.html转载自这里,真是太经典了. C语言嵌入式系统编程修炼 ...
最新文章
- 目标检测一卷到底之后,终于有人为它挖了个新坑|CVPR2021 Oral
- springboot 整合retry(重试机制)
- python之禅 中文_《Python之禅》中对于Python编程过程中的一些建议
- 【自动驾驶】23.相机成像究竟是成在像平面还是成在焦平面
- 事件,信号量,互斥量
- java中date类型如何赋值_一文读懂java中的Reference和引用类型
- TypeError: atlas.getSpriteFrame is not a function
- 你真的会用ABAP, Java和JavaScript里的constructor么?
- 基础拾遗------泛型详解
- css3实现的一些灰色的导航条按钮
- ASP.NET 2.0 本地化功能:本地化 Web 应用程序的新方法
- 短视频去除logo(抖音)
- PaddleNLP基于ERNIR3.0文本分类以CAIL2018-SMALL数据集罪名预测任务为例【多标签】
- KUBERNETES安装及访问web页面
- 2018世界互联网大会首日,丁磊马化腾雷军等都说了啥?
- 【那些年我们用过的Redis】还记得大明湖畔那些Redis数据吗?
- Android Studio的Signature Versions选择,分别是什么意思
- daimayuan每日一题#812 互质
- 简明Python教程笔记(一)
- 项立刚:FDD牌照发放 难改行业大格局
热门文章
- python之list与set的区别
- C#之xml配置文件读写
- 深度学习自学(三十九):基于对抗网络判别能力正则化的半监督生成方法
- 视频编解码(一):编解码器cedarc/libcedarx编译工具链配置
- java入学测试_OLI 课程 Java入学考试的五道题
- php 使用phpize报错Cannot find config.m4. Make sure that you run ‘/usr/bin/phpize‘ in the top l
- linux pkill窗口,在Linux系统中pkill命令的基础,附pkill命令的使用示例
- PHP依赖管理工具Composer配置安装及基本使用
- unity图片变成马赛克如何取像素并改变颜色_Unity3D-2.5D像素游戏随机地形构造tilemap(rule tile)...
- rstudio server docker 部署_Docker环境运行Spring Cloud项目