汇编语言开发过程详解

程序开发过程

一、逐步开发

(1)源程序的编辑

  • 源程序文件是无格式文件、纯文本类型
  • 以.ASM为扩展名,可使用任何文本编辑器

►Windows的记事本Notepad
►其他程序开发工具中的编辑环境
►专注于源程序编写的编辑软件,例如UltraEdit32

; eg0000.asm in Windows Console
	include io32.inc
	.data
msg	byte 'Hello World'		; 数据定义
	.code
start:
	mov eax,offset msg
	call dispmsg
	exit 0

	end 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

到此这篇关于汇编语言开发过程的文章就介绍到这了,更多相关汇编语言开发过程内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解汇编语言各种指令的解释与用法

    [数据传输指令] 一.通用数据传送指令 1.传送指令MOV(move) 指令的汇编格式:MOV DST,SRC 指令的基本功能:(DST)<-(SRC) 将原操作数(字节或字)传送到目的地址.指令支持的寻址方式:目的操作数和源操作数不能同时用存储器寻址方式,这个限制适用于所有指令.指令的执行对标志位的影响:不影响标志位.指令的特殊要求:目的操作数DST和源操作数SRC不允许同时为段寄存器:目的操作数DST不能是CS,也不能用立即数方式. 2.进栈指令 PUSH(push onto the sta

  • 汇编语言mov指令及基本用法

    在汇编语言中,MOV指令是数据传送指令,也是最基本的编程指令,用于将一个数据从源地址传送到目标地址(寄存器间的数据传送本质上也是一样的).其特点是不破坏源地址单元的内容. 例如: MOV AX,2000H:将16位数据2000H传送到AX寄存器 MOV AL,20H:将8位数据20H传送到AL寄存器 MOV AX,BX:将BX寄存器的16位数据传送到AX寄存器 MOV AL,[2000H]:将2000H单元的内容传送到AL寄存器 需要注意的是: (1)两个存储单元之间不能直接传送数据,即:MOV

  • 汇编语言软件延时1s的实现方法

    对于不同的计算机,因为其主频不同,延时1s的参数也不相同,计算延时的方法如下: 计算机主频:x (Hz) 一条LOOP语句执行始终周期数:y 所需要延时的时间:z (s) 需要执行的语句数:a z=y*(1/x)*a 计算得到所需的执行语句数编写程序. 例:(计算机主频为3GHz) delay proc near push bx push cx mov bx,400h for1:mov cx,0ffffh for2:loop for2 dec bx jnz for1 pop cx pop bx

  • 汇编语言lea指令使用方法解析

    这篇文章主要介绍了汇编语言lea指令使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 lea指令变种(按大小分类): leaw #2个字节 leal #4个字节 leaq #8个字节 lea的用法: leaq a(b, c, d), %rax 首先lea指令是mov指令的变种,据说,lea指令是x86体系结构中,是一条最古老但是从某个方面来讲又是最神奇的指令. 表面上看,它做的事情非常简单,根据括号里的源操作数来计算地址,然后把地址加

  • Windows10下利用DOSBOX和MASM32搭建汇编语言开发环境

    1 工具准备 1)下载DOSBOX 工具介绍:DOSBox 是一个 DOS 模拟程序,由于它采用的是 SDL 库,所以可以很方便的移植到其他的平台.目前,DOSBox 已经支持在 Windows.Linux.Mac OS X.BeOS .palmOS.Android .webOS.os/2等系统中运行.不少DOS下的游戏都可以直接在该平台上运行. 工具官网:http://www.dosbox.com/ 项目主页:http://sourceforge.net/projects/dosbox/ 下载

  • 汇编语言入门教程(这一篇足矣)

    汇编语言是一种最低级.最古老.不具有移植性的编程语言,它能够直接访问计算机硬件,所以执行效率极高,占用资源极少,一般用于嵌入式设备.驱动程序.实时应用.核心算法等. 汇编语言的缺点是开发周期特别长,实现一个简单的功能都非常麻烦,已经很少用来编写应用程序了. 1 本讲座以汇编初学者或对汇编一点也不了解的读者为对象,汇编高手不属于该范围,但强烈建议高手指导并增补.修改本文. 2 任何读者可以跟此贴,提出疑问,或解答其中的问题,但对于所有跟贴,水贴.内容有错.毫不相干贴将直接删除,有意义的贴可能会合并

  • 汇编语言开发过程详解

    程序开发过程 一.逐步开发 (1)源程序的编辑 源程序文件是无格式文件.纯文本类型 以.ASM为扩展名,可使用任何文本编辑器 ►Windows的记事本Notepad ►其他程序开发工具中的编辑环境 ►专注于源程序编写的编辑软件,例如UltraEdit32 ; eg0000.asm in Windows Console include io32.inc .data msg byte 'Hello World' ; 数据定义 .code start: mov eax,offset msg call

  • Mybatis Plugin拦截器开发过程详解

    这篇文章主要介绍了Mybatis Plugin拦截器开发过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.Plugin MyBatis 允许使用插件来拦截的方法调用包括: • Executor (update, query, flushStatements, commit, rollback,getTransaction, close, isClosed) • ParameterHandler (getParameterObject,

  • 基于java的opencv开发过程详解

    1.下载安装OpenCV https://opencv.org/releases/ 选择合适的平台安装包下载,然后双击安装,也就是解压的过程.这里主要记录windows下的环境搭建,opencv-342版本. 2.找到jar包 1)在-\opencv\build\java路径下能找到opencv-xx.jar 2)idea 新建工程,在Project Structure -> modules -> dependencies中添加jars or derectories 选择1)的jar包 3)运

  • vue输入框组件开发过程详解

    本文实例为大家分享了vue输入框组件开发过程的具体代码,供大家参考,具体内容如下 input-number.js function isValueNumber(value) {     return(/(^-?[0-9]+\.{1}\d+$)|(^-?[1-9]*$)|(^-?0{1}$)/).test(value + ''); } Vue.component('input-number',{     template: '\     <div class=input-number>\   

  • Python+AutoIt实现界面工具开发过程详解

    前言 不同于Linux服务器上的命令行操作,在windows系统上用户的使用习惯还是倾向于使用有界面的工具.如果工具是命令行交互操作的方式,可能是有悖于在windows上使用的操作习惯,往往不容易推广使用. 由于需要维护测试部工具的原因,其中有一个工具是用AutoIt语言实现的,利用几天时间把工具源码学习了一下.发现使用AutoIt可以快速开发工具界面.当然它也能各种逻辑处理,而且也很方便. 但是考虑精力和学习成本,我主要使用AutoIt的方式还是利用它来实现界面开发以及学习基本的语法完成简单的

  • 汇编语言实现电子闹钟思路详解

    2.1 设计思路 首先使用8255.8254.8259 三个芯片实现电子时钟的功能,让闹钟可以正常走时:其次,在时钟的基础上添加闹铃功能.整点报时功能.设置当前时间功能:完成设计. 2.2 设计方案 1. 电子时钟部分:此次设计是通过对计数器8254设定计数值对脉冲进行计数,在程序里,8254工作于计数器0,方式3.接入的CLK为1MHz,设计数初值为10000,每100次中断计数一次,产生的记数时间正好是时钟每秒走过的时间.通过对中断控制器8259设置初始化命令字初值来控制中断.程序中通过移位

  • 汇编语言指令mov、add、sub、jmp详解

    指令(instruction)是一种语句,它在程序汇编编译时变得可执行.汇编器将指令翻译为机器语言字节,并且在运行时由 CPU 加载和执行. 一条指令有四个组成部分: 标号(可选) 指令助记符(必需) 操作数(通常是必需的) 注释(可选) 不同部分的位置安排如下所示: [label: ] mnemonic [operands] [;comment] 现在分别了解每个部分,先从标号字段开始. mov传送指令mov a,b 将b数据放进a mov:寄存器,数据 mov:寄存器,寄存器 mov:寄存器

  • 使用Spring Boot搭建Java web项目及开发过程图文详解

    一.Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者.SpringMVC是非常伟大的框架,开源,发展迅速.优秀的设计必然会划分.解耦.所以,spring有很多子项目,比如core.context.

  • 详解CSS开发过程中的20个快速提升技巧

    1.使用CSS重置(reset) css重置库如normalize.css已经被使用很多年了,它们可以为你的网站样式提供一个比较清晰的标准,来确保跨浏览器之间的一致性. 大多数项目并不需要这些库包含的所有规则,可以通过一条简单的规则来应用于布局中的所有元素,删除所有的margin.padding改变浏览器默认的盒模型. *{box-sizing:border-box;margin:0;padding:0} 使用box-sizing声明是可选择,如果你使用下面继承的盒模型形式可以跳过它. 2.继承

随机推荐