(四)汇编语言——简单程序
目录
编写程序的工作过程
接下来,我们简单介绍一下一个汇编程序,从写出到最后执行,他到底经历了哪些步骤。
编写汇编源程序
首先第一步,我们需要编写我们的汇编程序。这个程序的后缀名为.asm。 我们对这段代码详细的分析一下。
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
伪指令
下面的4行代码就是伪指令, 伪指令是由编译器来执行的指令,编译器根据伪指令来进行相关的编译工作。没有对应的机器码的指令,最终不被CPU所执行。
assume cs:codesg
codesg segment
..............
codesg ends
end
段定义
这是段定义,一个汇编程序是由多个段组成的,这些段被用来存放代码、数据或当作栈空间来使用。主要的结构就是:段名+segment 为段的开始,段名+ends 为段的结束。
codesg segment
codesg ends
假设
这行代码是假设(assume), 含义是假设某一段寄存器和程序中的某一个用segment…ends定义的段相关联——assumecs:codesg指CS寄存器与codesg关联,将定义的codesg当作程序的代码段使用。
assume cs:codesg
结束
end,是汇编程序结束的标记。
end
汇编指令
这些就是汇编指令,对应有机器码的指令,可以被编译为机器指令,最终被CPU执行。但是在汇编指令里面。还有一部分程序返回,有点类似于C语言的return那样。
mov ax,0123H
mov bx,0456H
add ax,bx
add ax,ax
mov ax,4c00H
int 21h
程序返回
程序结束运行后,将CPU的控制权交还给使它得以运行的程序(常为DOS系统)。
mov ax,4c00H
int 21h
注释
;---注释
注释是用分号来的,怎么说呢,感觉不是很习惯,毕竟C语言的分号是结束。
编写步骤
- 定义一个段
- 实现处理任务
- 指出程序在何结束
- 段与段寄存器关联
- 加上程序返回的代码
编译连接
编译
当我们写好了汇编源程序之后,接下来就是要编译连接了,编译的话,我们是使用masm来进行编译,比如执行:masm p4-1.asm,这条指令,就会生成一个.obj 文件。
连接
连接的话也是类似的,就是让.obj 文件变成.exe 文件,也是比较简单的。 使用:link p4-1,命令即可。
运行
运行的话,我们分两种,第一种就是直接运行,第二种就是运用我们的debug工具去一一调试。直接运行我们不讲解,也讲解不了,我们来讲解一下我们的Debug。这里面学问也挺多的,我们慢慢来讲解。
我们先看一下我们的程序,一共15个字节,刚好CX就是15,说明,CX里面存放的是代码的有效的字节数。
然后呢,DS和CS刚好相差10h,但是在物理地址里面,却是相差100H,而这100H是什么呢?答案是数据区,具体内容在操作系统会讲,在这里我们只需要简单了解一下即可。然后CS后面就是代码区。
然后执行,我们用的是T命令,但是现在我们介绍两个命令用来执行程序: 继续命令P(Proceed):类似T命令,逐条执行指令、显示结果。但遇子程序、中断等时,直接执行,然后显示结果。 运行命令G(Go):从指定地址处开始运行程序,直到遇到断点或者程序正常结束。
总结
关于一个简单汇编程序的出生与成长和灭亡我们就介绍到这里了。
相关文章
- Ulysses for Mac(最好用的Markdown文本编辑写作工具)
- Xilinx MPSoC FSBL中的看门狗的用法总结
- 【FusionCompute】使用VMware Workstaion安装部署VRM(三)
- 【FusionCompute】添加CNA主机到VRM管理节点(四)
- RabbitMQ:安装配置
- RabbitMQ:消息模型
- 【FusionCompute】基于FreeNAS部署并使用虚拟存储(五)
- 【FusionCompute】创建虚拟机失败(六)
- Xshell同步复制粘贴Windows的东西
- 【OpenFiler】使用虚拟机安装openfiler
- 什么是BPM系统?BPM流程管理系统介绍
- Online DDL和Cardinality
- MRR和ICP
- 犀牛鸟中学科学人才培养计划喜报:祝贺北京一零一中学李一昕同学获丘成桐中学科学奖全球总决赛金奖!
- 耗时减半?腾讯云OCR只做了3件事
- 开箱即用区块链是一种什么体验?Lighthouse长安链给你答案
- 活动回顾 | 基于信任基础设施实现数据要素可信流通
- 【openfilier】配置iSCSI存储
- 【VMware vSphere 7】虚拟化概述(一)
- 【VMware vSphere 7】安装配置ESXi 7主机(二)