小白写汇编程序《基础篇》

第一个汇编程序

  1. 编写汇编源程序
  2. 对源程序进行编译连接
    • 编译–>生成目标文件
    • 连接–>生成可执行文件

可执行文件包含两部分

  • 程序(机器码)和数据(源程序中定义的数据)
  • 相关的描述信息(比如,程序有多大,要占用多少内存空间)
  1. 执行可执行程序中的程序
    操作系统依照可执行文件的描述信息,将可执行文件中的程序和数据装载进内存中, 并进行一定的初始化(比如指定CS:IP,指向第一条要执行的指令),然后由CPU运行程序

通过一个实例快速学习

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执行;另一种是伪指令,没有对应机器码,它由编译器进行识别并进行相关的编译工作。
上面的程序出现了三种伪指令

  1. xxx segment

    xxx ends

    它们成对使用。其功能是定义一个段,segment是开始,ends是结尾,并且段还要有个标识符,xxx即为段名。
    **一个有意义的汇编程序至少要有一个段,这个段用来存放代码
  2. end
    汇编程序结束标志,不要和ends混淆了就行。
  3. assume
    其意为“假设”,上面的程序可以看出我们把段寄存器cs假设为“codesg”,也就让两者有了联系,我们可以视代码段段名就是“codesg”。

源程序和程序

在这里插入图片描述
简单说的话,源程序文件里面所有内容就是源程序,其中的汇编指令就是程序。细说的话,程序:最终被计算机执行、处理的指令或数据,程序最先以汇编指令的形式存放在源程序中,经编译连接后转变为机器码储存在可执行文件中。

标号

类似codesg的东西,其代表一个地址,比如codesg代表的就是代码段的段地址。
段的名称经编译、连接程序处理为一个段的地址。

程序的结构

大家可以想怎么用汇编程序处理2^3这个问题,最简单的结构,可以尝试写一写

assume cs:code
code segment

	mov ax, 2
	add ax, ax
	add ax, ax
	
code ends

end

程序返回

一个程序结束后,将CPU的控制权交给使它得以运行的程序,这个过程称为:程序返回。
目前阶段只需要加上就行,不需理解其含义,在代码段后面加上这两行:

mov ax, 4c00H
int 21H
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值