Loading

汇编语言程序

源程序

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

在汇编语言程序中,包含两种指令,一种是汇编指令,一种是伪指令。汇编指令有机器码对应,可悲编译为机器指令,最终被CPU执行。伪指令没有对应的机器指令,由编译器来执行。

xxx segment
  ...
xxx ends

是成对使用的伪指令。功能:定义一个段。
一个汇编程序是由多个段组成的,这些段被用来存放代码、数据或当作栈空间来使用。指令、数据、栈被划分到不同的段中。
end 是一个汇编程序的结束标记。
assume “假设”,它将有特定用途的段与段寄存器联系起来。
源程序指整个程序,程序指的是源程序中被电脑执行、处理的指令和数据。

标号

一个标号指代一个地址。比如codesg放在segment的前面,作为一个段的名称,这个段的名称最终被编译、连接程序处理一个段的段地址。

程序的结构

1、定义一个段,名称为abc
abc segment
abc ends
2、写入汇编指令

abc segment

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

abc ends

end

4、abc被当作代码段来用,所以将abc与cs联系起来。
assume cs:abc

assume cs:abc

abc segment

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

abc ends

end

5、程序返回
在程序末尾加上
mov ax,4c00H
int 21H

编辑源程序

使用记事本或notepad++等编辑保存为后缀为asm的文件。

编译

masm
1、source filename 输入文件所在的地址和目录。
2、Object filename 默认
3、Source listing .lst列表文件,中间文件,直接enter不生成
4、Cross-reference .crf交叉引用文件 可忽略

连接

使用LINK.EXE
连接的作用:
1、源程序较大时,分为多个源程序来编译,将他们连接起来生成一个可执行文件
2、调用库函数,连接库函数
3、生成可执行文件

谁将可执行文件中的程序装载进内存并使它运行?

程序要执行,需要由另一个程序将其装载进内存,并将CPU权限交给它。
在DOS中运行是command程序将程序加载到内存的
编程->1.asm->编译->1.obj->连接->1.exe->加载->内存中的程序->运行

posted @ 2022-03-25 17:44  sovo  阅读(647)  评论(0)    收藏  举报