汇编 - 第一个程序

第一个程序

一个源程序从写出到执行的过程

编写汇编源程序
		使用edit、记事本编辑
编译源程序
		编译程序,产生目标文件,使用连接程序对目标程序进行连接,生成可执行文件
可执行文件
		程序 = 源程序中汇编指令翻译过来的机器码 
		数据 = 源程序中定义的数据
		相关的描述信息(程序大小,内存空间)
执行程序
		将可执行文件的数据和机器码加载到内存,比如设置CS:IP指向第一条运行指令

源程序

伪指令

伪指令不被CPU执行,是由编译器来执行的指令

xxx segment
	......
xxx ends
这是一对成对的伪指令,功能是定义一个段,segment开始,ends结束,xxx段名end 标记汇编程序结束
end:标记汇编程序技术
assume:假设,将有特定用途的段和相关寄存器关联
	如:codesg segment ...cpdesg ends定义了一个名叫codesg的段,使用assume cs:codesg将用作代码段的段codeesg和cou中的段寄存器

程序

源程序 = 伪指令 + 汇编指令

标号

一个标号代表了一个地址
如 codesg在segment的前面,作为一个段的名称,这个段的名称最终被编译、连接程序处理为一个段的地址

程序的结构

定义一个段
xxx segment
	......
xxx ends
在段中写入汇编指令
xxx segment
	mov ax,2
xxx ends
指出程序在何处结束
xxx segment
	mov ax,2
xxx ends
end
关联段寄存器CS
assume cs:xxx
xxx segment
	mov ax,2
xxx ends

程序返回

程序P2需要运行,P1程序将它加载到内存,并将控制权交给P2
可执行程序运行完毕之后,将CPU控制权交还P1,这个过程称为程序返回
mov ax,4c00H
int 21H

语法错误和逻辑错误

编辑源程序

进入DOS,运行Edit
编辑程序
将程序保存为c:\1.asm(指定文件名称和路径)
.asm源文件名称

编译

进入DOS,运行masm
[.ASM]是提示文件的扩展名为asm,在后面输入文件名称
	输入源文件名称的时需要指明路径,x:\x\1.txt如果在当前路径下,可以只输入文件名
	如果扩展名不是asm,就要输入全名如:1.txt
[.OBJ] 默认输出的目标文件,可以在后面输入更改名字和路径
[NUL.LST] 提示输入列表文件的名称,这个文件是编译器将源程序编译为目标文件的过程产生的中间结果,不生成,直接按ENTER
[NUL.CRF]提示输入交出啊引用文件的名称,这个文件是编译器将源程序编译为目标文件的过程产生的中间结果,不生成,直接按ENTER

连接

进入DOS,运行link
[.OBJ]是提示文件的扩展名为OBJ,在后面输入文件名称
	输入源文件名称的时需要指明路径,x:\x\1.bin如果在当前路径下,可以只输入文件名
[.EXE] 默认输出的目标文件,可以在后面输入更改名字和路径
[.MAP] 提示输入印象的名称,这个文件是编译器将源程序编译为目标文件的过程产生的中间结果,不生成,直接按ENTER
[.LIB] 提示输入库文件的名称,这个文件是编译器将源程序编译为目标文件的过程产生的中间结果,不生成,直接按ENTER

当源程序很大时,可以将它作为多个源文件来编译,生成目标文件后,通过连接程序将他们连接在一起,生成一个可执行程序
程序调用了可文件的子程序,需要将这个库文件和该程序生成的目标文件连接在一起,生成一个可执行文件
一个源程序编译后,得到了存有机器码的目标文件,目标文件中有些内容不能直接生成可执行文件,连接文件将这些内容生成可执行的信息

以简化的方式进行编译和连接

在编译和连接文件时,在文件名称后面加入分号会自动生成obj或者exe文件

l.exe的执行

	进入dos,输入可执行文件路径>文件名及名称(不加后缀),直接运行文件

谁将可执行文件.exe装载到内存并运行

程序执行过程的跟踪

debug 可执行文件名称.exe
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值