微机原理ch5详解.ppt

  1. 1、本文档共95页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5.1 汇编语言的基本概念 程序设计语言是专门为计算机编程所配置的语言。它们按照形式与功能的不同可分为三种,即机器语言、汇编语言和高级语言。 1. 机器语言 机器语言(Machine Language)是由0和1二进制代码书写和存储的指令与数据。它的特点是能被机器直接识别与执行;程序所占内存空间较少。其缺点是难认、难记、难编、易错。 2. 汇编语言 汇编语言(Assembly Language)使用指令的助记符、符号地址、标号等书写程序的语言,简称符号语言。它的特点是易读、易写、易记。其缺点是不能为机器所直接识别。 3. 高级语言 高级语言(High Level Language)是脱离具体机器(即独立于机器)的通用语言,不依赖于特定计算机的结构与指令系统。 为什么要用汇编语言编写程序 凡是学过一种程序设计高级语言的人,都会有高级语言“易学易用”的感觉,这是因为高级语言的语句是面向数学语言和自然语言的,因此容易接受、掌握。相对来说汇编语言编制程序比高级语言要困难些。既然如此,为什么还要学习和使用汇编语言呢?主要有以下几点: ⑴汇编语言是机器语言的符号表示语言,因此,程序设计人员可以充分利用机器硬件的全部功能,发挥机器的长处。 ⑵现在的微机系统中,底层的一些功能仍然靠汇编语言程序来实现。例如机器的自检、系统初始化、实际的输入输出操作,至今仍然是用汇编语言编制的程序来完成。 ⑶汇编语言程序的效率通常高于高级语言程序。所以在节省内存空间和提高程序运行速度的重要场合,如实时控制,常常使用汇编语言来编制的。 鉴于以上理由,现在许多高级语言都设置有与汇编语言程序接口的功能,以便于提高高级语言程序的效率。 汇编语言与C程序比较 屏幕显示 “This is a test”,分别用C和汇编程序完成(testc.c/test.asm) 演示完成程序设计、编译(汇编)、运行及对比(通过对生成的可执行文件大小的比较,可看出完成同样的功能,用汇编编写的程序代码效率要高得多!) 考虑汇编语言程序的优越性 2) 语句格式 汇编源程序是由一条条的语句组成的,其每条语句的格式如下: [名字]助记符[操作数][;注释] 其中带方括号的部分表示任选项,既可以有,也可以没有。 (1) 名字 “名字”是语句的符号地址,对于指令语句,“名字”称为标号,其后必须加冒号“:”;对于伪指令语句“名字”可以是变量名、段名、过程名等,其后不能加冒号“:”。 “名字”一般都有三个属性:段属性、偏移属性和类型属性。 ① 段属性:表示“名字”所在段的起始地址(即段地址)。 ② 偏移属性:表示“名字”所在段的起始地址到定义该“名字”的地址之间的字节数(即偏移量)。偏移量是一个16位无符号数。 ③ 类型属性:表示该名字的数据或地址的类型。 对于标号和过程名,类型属性有NEAR和FAR两种,表示只能在段内被引用还是可以在其它段被引用; 对于变量类型属性有BYTE(字节)、WORD(字)、 DWORD(双字)、 QWORD(四字)、TBYTE(十字节)等,表示数据区中存取操作对象的大小。 对于段名只有段属性,表示段的起始地址(段地址),而没有偏移属性和类型属性。 (2) 助记符 在指令语句中,表示该指令语句的操作码,在伪指令语句中称为定义符,它指出其语句的功能。 (3) 操作数 操作数即为操作的对象。在指令语句中,可能有单操作数或双操作数,也可能无操作数或隐含操作数;而在伪指令中可能有更多个操作数。当操作数不止一个时,相互之间应该用逗号隔开。 可以作为操作数的有:常数、寄存器、标号、变量和表达式等。 1) 常数:是指令中出现的那些固定值,可以分为数值常数和字符串常数两类。 说明:I 常数除了自身的值外,没有其他属性。 ii 汇编语言中数值常数的第一位必须是数字; 字符串常数是由单引号括起来的一串字符。 2) 寄存器:8086/8088CPU的寄存器可以作为指令的操作数。 3)标号:标号代表一条指令的符号地址,它可以作为转移、过程调用、以及循环控制指令的操作数。 ☆算术运算符:+、-、*、/和MOD(模除, 即两个整数相除后取余数)等。 ☆逻辑运算符:AND、OR、XOR、NOT等。 ☆关系运算符:EQ、NE、LT、GT、LE、GE等。 结果只有两个全1或全0 ☆分析运算符:利用分析运算符可以把一个存储单元地址分解为段地址和偏移地址等。分析运算符有SEG 、OFFSET 、TYPE、SIZE和LENGTH等。 分析运算符表达式

您可能关注的文档

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档