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相关寄存器中的变化。

目录
相关文章
|
Prometheus 监控 前端开发
prometheus|云原生|grafana-9.4.3版本的主题更改
prometheus|云原生|grafana-9.4.3版本的主题更改
1102 0
|
11月前
|
自然语言处理 JavaScript 前端开发
静态文档网站生成神奇器:VuePress!尤雨溪的旧爱!
【10月更文挑战第3天】静态文档网站生成神奇器:VuePress!尤雨溪的旧爱!
静态文档网站生成神奇器:VuePress!尤雨溪的旧爱!
|
7月前
|
计算机视觉
YOLOv11改进策略【小目标改进】| 2024-TOP 自适应阈值焦点损失(ATFL)提升对小目标的检测能力
YOLOv11改进策略【小目标改进】| 2024-TOP 自适应阈值焦点损失(ATFL)提升对小目标的检测能力
1332 11
YOLOv11改进策略【小目标改进】| 2024-TOP 自适应阈值焦点损失(ATFL)提升对小目标的检测能力
|
存储 NoSQL 关系型数据库
NoSQL 数据库的优缺点?
NoSQL 数据库的优缺点?
421 4
|
机器学习/深度学习 安全 物联网
智能家居技术的未来趋势与挑战
【8月更文挑战第22天】 在科技日新月异的今天,智能家居作为提高生活品质的重要工具,其发展势头迅猛。本文将探讨智能家居领域的最新技术动态、未来发展趋势以及面临的主要挑战,为读者提供一个全面而深入的视角。从智能语音助手到物联网安全,我们将逐一分析这些关键技术如何塑造我们的居住环境,并讨论实现智能家居梦想所需克服的难题。
214 0
|
应用服务中间件 nginx
Nginx 出现403 Forbidden 的几种解决方案【已解决】
Nginx 出现403 Forbidden 的几种解决方案【已解决】
10345 3
|
小程序
大转盘抽奖小程序源码
大转盘抽奖小程序源码,测试依旧可用,无BUG,跑马灯旋转效果,非常酷炫。
377 1
|
JavaScript 定位技术
【天地图】vue 天地图 T is not defined
【天地图】vue 天地图 T is not defined
412 1
|
C++
【PTA】​到底有多二​ (C++)
【PTA】​到底有多二​ (C++)
234 0
【PTA】​到底有多二​ (C++)
|
NoSQL 关系型数据库 MySQL
jump server
jump server
221 0