The First ASM Program

简介: The First ASM Program eryar@163.com 1.Introduction 以前都是在Debug程序中写一些指令来测试,现在可以开始编写完整的汇编语言程序,用编译和连接程序将汇编代码编译连接成可执行程序。

The First ASM Program

eryar@163.com

1.Introduction

以前都是在Debug程序中写一些指令来测试,现在可以开始编写完整的汇编语言程序,用编译和连接程序将汇编代码编译连接成可执行程序。对于从TC2.0学习C语言的人来说,编译连接汇编代码与C代码很相似,有点亲切感。都要经历编写源码,然后编译源码生成目标OBJ文件;再通过连接将OBJ连接成可执行程序。

用汇编语言写的源程序,包含伪指令和汇编指令,其中汇编指令组成了最终由计算机执行的程序,而伪指令由编译器来处理。以后可以将源码文件中的由计算机执行处理的指令或数据称为程序。程序最先以汇编指令的形式存在源程序中,经编译连接后转变成机器码,存储在可执行文件中。

一段简单的汇编源程序如下:

assume cs : codesg

codesg segment
    mov ax
, 0123h
    mov bx
, 0456h
    add ax
, bx
    add ax
, ax ,
    
    mov ax
, 4c00h
    
int  21h
codesg ends

end

其中伪指令有:assume, segment, ends, end。在源码中除了汇编指令和伪指令外,还有一些标号,如codesg,一个标号指代了一个地址。比如codesg在segment前面,作为一个段的名称,这个段的名称最终将被编译连接程序处理为一个段的段地址。

源程序是由段组成的。我们可以在 这些段中存放代码、数据或将某个段当作栈空间使用。通过在segment前面加个标号表示段的名字,段结束加上ends。在段中可以写上汇编指令。end表示程序的结束。要把一个段当作代码来使用,需要这个段与CS寄存器建立关系,通过assume来实现。

程序运行结束都要交出控制权,汇编程序中通过指令mov ax,4c00h和int 21h来实现。

2.Edit Code

可以在记事本之类的工具编写源码,如下图所示:

wps_clip_image-32643

将上述源码保存为test.asm,并将其放到MASM文件夹中。

3. Compile

编译使用Microsoft的MASM5.0汇编编译器,程序名为masm.exe。

wps_clip_image-14263

编译成功后,会生成test.obj目标文件。也可以用简化的方式进行编译,即在masm后加上源码名后再加个分号即可以跳过中间文件的生成。

4. Link

通过连接将目标文件连接后生成可执行文件。连接使用的程序名为link.exe。

wps_clip_image-20370

连接需要指定目标文件名。也可以用简化的方式来对目标文件进行连接。

5. Execute

连接成功后就生成一个可执行文件test.exe了。在命令窗口中直接输入可执行文件的名字即可以运行程序了。

wps_clip_image-1809

程序是运行了,只不过没有在屏幕上输出什么内容。

6. Debug

可以用Debug来跟踪程序的运行过程,就像在Visual Studio中使用debug一样,一步一步地来查看程序的运行情况。

wps_clip_image-25107

通过U命令可以查看机器码对应的汇编指令。然后用T命令来一步一步地执行程序,从而可以观察程序运行过程中CPU相关寄存器中的变化。

目录
相关文章
|
Oracle 关系型数据库 数据库
ASM 创建pdb
asm创建pdb,asm克隆pdb.
808 0
|
SQL 数据库
ASM卷加盘
1.登陆服务器 2.登陆到ASM实例su - grid sqlplus '/as sysasm' SQL> SELECT path FROM v$asm_disk WHERE NAME IS NULL; PATH /dev/rdsk/c0t60060E8007C72E000030C72E0000...
848 0
|
存储 Oracle 网络协议
|
Java 数据库连接 应用服务中间件