汇编程序基本概念 笔记

一、源程序格式

  • 由段组成
  • 包含若干code segment, data segment, extra segment(?), stack segment. Order is not concerned.
  • 需独立运行的程序必须有:一个代码段,指示程序执行的起始点(一个程序只有一个起始点)
  • 所有可执行性语句必须位于某一个代码段内;说明性语句可根据需要位于任一段内
  • 通常程序还需要一个堆栈段

二、语句格式

(1)executable code/执行性语句

  • 表达处理器指令(硬指令)/Machine code ——使CPU产生动作、并在程序执行时才处理的指令;与具体的processor有关,与assembler无关
  • 汇编后对应一条指令代码
  • 由处理器指令组成的代码序列——程序设计的主体
  • Label: Instruction Operand, Operand ;comment
  • Label(标号):硬指令位置(逻辑地址)和属性的标识符,跟冒号
  • Operand: immediate data, register, memory

(2) descriptive code/说明性语句

  • 表达伪指令 / Directive ——不产生CPU动作、在程序执行前由Assembler处理的说明性指令;与Processor无关、与assembler有关
  • 指示源程序如何汇编、变量怎样定义、过程怎么设置等
  • Name Directive Parameter,Parameter,... ;comment
  • Name(名字):伪指令位置(逻辑地址)和属性的标识符,无冒号
  • Parameter: constant, variable, expression

(3)标识符(Identifier)

(4)保留字(Reserved Word)/关键字——汇编程序已经利用的标识符

  • Instruction: MOV, ADD
  • Directive: DB, DW
  • Operator: OFFSET, PTR
  • Register: AX, CS
  • 预定义符号:@data

(5) MASM支持续行符“/"

(6)简化段定义格式

 

.model small ;定义程序的存储模式(小型模式)

.stack ;定义堆栈段(默认是1kb空间)

.data ;定义数据段

... ;数据定义

.coder ;定义代码段

start: mov ax,@data ;程序起始点

mov ds,ax ;设置DS指向用户定义的数据段

... ;程序代码

mov ax,4c00h

int 21h ;程序结束点,返回dos

... ;子程序代码

end start ;汇编结束,同时指明程序起始点start

 

关于程序的开始:

  • 在start后;
  • Linker会根据程序起始点正确地设置CS和IP值,根据程序大小和堆栈段大小设置SS和SP;
  • Linker没有设置DS和ES值。程序如果使用数据段或附加段,必须明确给DS或ES赋值;

关于程序终止和汇编结束:

  • 程序终止:mov ax,4c00h
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值