永钢 發表於 2022-3-25 17:44:00

汇编语言程序

<h2 id="源程序">源程序</h2>
<pre><code>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
</code></pre>
<blockquote>
<p>在汇编语言程序中,包含两种指令,一种是汇编指令,一种是伪指令。汇编指令有机器码对应,可悲编译为机器指令,最终被CPU执行。伪指令没有对应的机器指令,由编译器来执行。</p>
</blockquote>
<pre><code>xxx segment
...
xxx ends
</code></pre>
<p>是成对使用的伪指令。功能:定义一个段。<br>
一个汇编程序是由多个段组成的,这些段被用来存放代码、数据或当作栈空间来使用。指令、数据、栈被划分到不同的段中。<br>
end 是一个汇编程序的结束标记。<br>
assume “假设”,它将有特定用途的段与段寄存器联系起来。<br>
源程序指整个程序,程序指的是源程序中被电脑执行、处理的指令和数据。</p>
<h3 id="标号">标号</h3>
<p>一个标号指代一个地址。比如codesg放在segment的前面,作为一个段的名称,这个段的名称最终被编译、连接程序处理一个段的段地址。</p>
<h3 id="程序的结构">程序的结构</h3>
<p>1、定义一个段,名称为abc<br>
abc segment<br>
abc ends<br>
2、写入汇编指令</p>
<pre><code>abc segment

mov ax,2
add ax,ax
add ax,ax

abc ends

end
</code></pre>
<p>4、abc被当作代码段来用,所以将abc与cs联系起来。<br>
assume cs:abc</p>
<pre><code>assume cs:abc

abc segment

mov ax,2
add ax,ax
add ax,ax

abc ends

end
</code></pre>
<p>5、程序返回<br>
在程序末尾加上<br>
mov ax,4c00H<br>
int 21H</p>
<h2 id="编辑源程序">编辑源程序</h2>
<p>使用记事本或notepad++等编辑保存为后缀为asm的文件。</p>
<h2 id="编译">编译</h2>
<p>masm<br>
1、source filename 输入文件所在的地址和目录。<br>
2、Object filename 默认<br>
3、Source listing .lst列表文件,中间文件,直接enter不生成<br>
4、Cross-reference .crf交叉引用文件 可忽略</p>
<h2 id="连接">连接</h2>
<p>使用LINK.EXE<br>
连接的作用:<br>
1、源程序较大时,分为多个源程序来编译,将他们连接起来生成一个可执行文件<br>
2、调用库函数,连接库函数<br>
3、生成可执行文件</p>
<h2 id="谁将可执行文件中的程序装载进内存并使它运行">谁将可执行文件中的程序装载进内存并使它运行?</h2>
<p>程序要执行,需要由另一个程序将其装载进内存,并将CPU权限交给它。<br>
在DOS中运行是command程序将程序加载到内存的<br>
编程-&gt;1.asm-&gt;编译-&gt;1.obj-&gt;连接-&gt;1.exe-&gt;加载-&gt;内存中的程序-&gt;运行</p><br><br>
来源:https://www.cnblogs.com/Sovohost-43/p/16055919.html
頁: [1]
查看完整版本: 汇编语言程序