上一题下一题
跳转到
 
 
  世界如此多姿,发展如此迅速,窥一斑未必还能知全豹。但正如万花筒一样,每一个管窥都色彩斑斓。  
 
 
  知识通道 | 学习首页 | 教师首页 | PK首页 | 知识创造首页 | 企业首页 | 登录
 
本文对应知识领域
汇编语言的语句和源程序组织
作者:未知 申领版权
2010年12月12日 共有 1882 次访问 【添加到收藏夹】 【我要附加题目
受欢迎度:

    

第三章 汇编语言基本语法

3.1 汇编语言的语句和源程序组织

一个汇编语盲源程序经过汇编程序(Assembler)的汇编(即翻译)才能生成一个目标程序(即机器语言程序)。汇编程序是一台计算机的系统软件之一,它提供下组成汇编语言源程序的语法规则.所以用汇编语言编制程序时,必须事先熟悉相应的汇编程序.支持Intel8086/8088系列微机的汇编程序,现有ASM,MASM,TASM,OPTASM.其中ASM是仅有基本汇编语言的“小汇编”,它不支持高级宏汇编语言功能。MASM(Macroassembler)是美国Micro-soft公司开发较早的宏汇编程序,它不仅含有ASM的全部功能,而且增加了宏指令,结构,记录等高级宏汇编语官功能。TASM是Turbo Assembler,在性能上与MASM相同,但汇编速度较MASM快。而OPTASM(Optimizing Assembler)是目前汇编速度最快的一种优化宏汇编程序。
    同高级语言程序一样,语句(Statements)乃是汇编语言程序的基本组成单位。一个汇编语言源程序中有三种基本语句;指令语句,伪指令语句和宏指令语句(或称宏调用语句)。
    

3.1.1 语句种类

指令语句:指令系统中每条指令都属于此类。它在汇编时会产生目标代码,对应着CPU 的一种作;
    伪指令语句:主要用来指示汇编程序如何进行汇编工作的,但它不产生目标代码。
    

3.1.2 语句格式

每一条指令语句在汇编时都要产生一个可供机器执行的机器目标代码,所以这种语句又叫可执行语句。
    语句格式  包括指令语句格式和伪指令语句格式。指令语句、伪指令语句的格式相似,都由四部分组成。语句格式列表如下:
    指令语句:[标号:]  指令助记符   [操作数]  [;注释];
    指令语句格式如图3.1
    
    图3.1:指令语句格式
    伪指令语句:[名字 ] 伪指令助记符  [操作数]  [;注释]。
    伪指令语句格式 如图3.2
    
    图3.2:伪指令语句格式
    不同点:指令语句中的标号后面跟有冒号(:),而在伪指令中的名字后面没有冒号,这是两种语句格式上的不同点。
    下面对语句中各域进行说明:
    标号,名字域 该域主要用来定义标号、名字,以便在操作数域中引用它们。标号和名字都是由标识符组成的。标识符可由最多31个字母、数字和特殊字符所组成它必须以字母或特殊字符开始。标识符的组成规则如下:
    ①字符个数为1~31个;
    ②标识符的第一个字符必须是字母,问号“?”,“@”或下划线‘_’这四种字符中的一个;
    ③从第二个字符开始,可以是字母,数字、?、@或_;
    ④不能使用属于系统专用保留字(Reserved word)。保留字主要有CPU中各寄存器名(如AX,CS),指令助记符(如MOV,ADD),伪指令(如SEGMENT,DB),表达式中的运算符(如GE,EQ)和属性操作符(如PTR,OFFSET,SEG)等。
    例:   1、AXYZ1,COUNT_DONE,.FOUND,@ATT都是合法的标识符;
    2、?,3AP,THIS NODE都是不合法的标识符。
    指令助记符域 又称作操作码域,它是语句中唯一必不可少的部分。 指令语句中的助记符规定这个语句中的操作类型;伪指令语句中的助记符规定这个语句中的伪操作功能。
    操作数域 它用来存放助记符要求的操作数,使之能实现预期的目的。指令语句可能有一个、两个或没有操作数,而伪指令是否需要操作数,需要何种操作数,随伪操作命令不同而不同。可充当操作数的有常量、变量、标号、寄存器和表达式等。
    注释域 注释以分号(;)开头,用来说明语句或程序功能和含义的符号序列。它增加了程序的可读性,为修改、调试、交流提供了方便。
    

3.1.3 源程序组织

汇编(ASM)和宏汇编(MASM)的源程序除了在使用某些伪指令上有些区别外,在源程序的书写结构形式上是完全相同的。
    数据段结构:
    数据段名 SEGMENT 
    (用变量定义预置的数据空间)
    数据段名  ENDS
    例如:DATA  SEGMENT
    X  DW 1520
    Y  DW 4327
    Z  DW 3215
    RESULT DW ?
    DATA  ENDS
    堆栈段结构:
    堆栈段名 STACK
    (用变量定义预置的堆栈空间)
    堆栈段名   ENDS
    例如:STACK  SEGMENT  PARA  STACK  'STACK'
    STACK  DB  20 DUP(?)
    TOP  EQU  LENGTH  STAPN
    STACK  ENDS
    代码段结构:
    代码段名 SEGMENT
    ASSUME   定义的寻址关系
    过程名 PROC
    (程序段)
    过程名  ENDP 
    代码段名  ENDS 
    过程名或起始标号
    例如:CODE  SEGMENT
    ASSUME CS:CODE,DS:DATA,SS:STACK
    MAIN  PROC FAR
    PUSH DS 
    SUB AX,AX
    PUSH AX
    MOV AX,DATA
    MOV DS,AX
    MOV AX,STACK
    MOV SS,AX
    START:MOV AX,X
    MOV BX,Y
    ADD AX,BX
    SUB AX,Z
    MOV RESULT,AX
    RET
    MAIN  ENDP
    CODE  ENDS
    END MAIN
    说明:上边是源程序的可能形式,但完全可以满足一般的要求。每个段都以"SEGMENT"语句开始,以"ENDS"语句结束。任何一个源程序至少必须有一个代码段和一条作为源程序结束的伪指令END。根据程序本身要求,数据段可以有,也可以没有。堆栈段如果没有,连接(LINK)时将产生一个警告性的错误:
    Warning:No STACK Segment
    There was 1 error detected
    这并不影响用户程序的正常运行,因为用户可以使用系统堆栈。当然用户如果设置了自己的堆栈段,使用起来会更方便些。一个源程序可以有多个数据段、多个代码段或多个堆栈段,它们可由相应的伪指令以适当形式进行组合,各个段在源程序中的顺序可以任意。
    

 

相关新闻

肢体语言塑造你自己
结束语
组织的对外传播(2)
组织的对外传播(1)
传播与组织人力资源管理(2)
传播与组织人力资源管理(1)
传播与组织冲突处理(2)
传播与组织冲突处理(1)
传播与组织决策过程(2)
传播与组织决策过程(1)

您可能对这些感兴趣  

干货分享|10本最受国外孩子喜爱的英文词典——上
从孩子的表现看父母的缺点!请家长对号入座,看看你是哪一类?
20条制作PPT的视觉原则
培训简史:培训者必知的历史轨迹
广田丰管理培训生人才培养调查报告
第4讲 作为上司的职业经理
第3讲 作为同事的职业经理
第2讲 作为下属的职业经理
第1讲 培养经理人的管理素养
酒店前台新员工上岗培训计划

题目筛选器
日期:
类型:
状态:
得分: <=
分类:
作者:
职业:
关键字:
搜索

 
 
 
  焦点事件
 
  知识体系
 
  职业列表
 
 
  最热文章
 
 
  最多引用文章
 
 
  最新文章
 
 
 
 
网站介绍 | 广告服务 | 招聘信息 | 保护隐私权 | 免责条款 | 法律顾问 | 意见反馈
版权所有 不得转载
沪ICP备 10203777 号 联系电话:021-54428255
  帮助提示    
《我的太学》是一种全新的应用,您在操作中遇到疑问或者问题,请拨打电话13564659895,15921448526。
《我的太学》