第一个汇编程序

来源:互联网 发布:matlab矩阵乘法代码 编辑:程序博客网 时间:2024/06/06 01:11

汇编语言编译成.exe是要经过编译和连接两步

编译生成.obj文件

连接生成.exe文件

所以要首先下载masm汇编编译器和连接器我这边是用masm5.0编译器 

下载地址:链接:https://pan.baidu.com/s/1jHO65Em 密码:n3a1



assume cs:codesgcodesg segment        mov ax,0123H        mov bx,0456H        add ax,bx        add ax,ax        mov ax,4c00H        int 21Hcodesg endsend

在汇编语言源程序中有两种指令:汇编指令和伪指令两种

1伪指令是由编译器来执行的指令 如:codesg segment   ......codesg ends就是一对伪指令,segment是定义一个段的开始,ends是一个段的结束

语法是:段名+segment

2汇编指令有对应的机器码指令,可以被编译成机器指令,最终被CPU执行  如:mov add

assume伪指令是把自己定义的代码段与段寄存器关联,我这边codesg段放的是代码所以与cs(代码段寄存器)关联

注意:end伪指令是汇编语言程序结束,ends是段结束,与segment成对使用


mov ax,4c00H

int 21H

这两条汇编指令功能是程序返回的意思,程序返回放弃cpu



执行编译过程:

运行masm让你写要编译的文件名,记得文件路径要写对,是在当前目录可以不要写路径 ,如果是.asm后缀名可以直接写文件名,不是要全部写 ,例如:源程序在1.txt中就写1.txt,运行后生成.obj目标文件,不在.obj下填写默认生成你的文件名.obj   另外两个是生成.obj文件中间生成步骤,暂时不用管


连接过程:

运行link,和上面步骤一样填写要连接的文件名,这个文件名是生成的.obj文件,另外两个提示也是中间生成的,一个是镜像文件map,

一个是库文件lib,库文件是包含是可以调用的子程序,如果源程序中调用了子程序,就要包含调用子程序的库文件(相当于c语言的动态库,个人理解),生成.exe可执行文件

报一个警告错误,"没有栈段",暂时忽略




也有简单的编译连接方式,只要在文件名后加上分号(;)就好了


原创粉丝点击