微机原理课件第8讲.ppt_第1页
微机原理课件第8讲.ppt_第2页
微机原理课件第8讲.ppt_第3页
微机原理课件第8讲.ppt_第4页
微机原理课件第8讲.ppt_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章汇编语言程序设计 H 4 1汇编语言的程序结构和语句格式 语言的发展 机器语言 MachineLanguage 二进制表示指令和数据 能被机器直接识别的计算机语言 速度快 占用内存少 汇编语言 AssemblyLanguage 采用助记符表示的程序设计语言 内存空间少 而且执行速度快 高级语言 HighLevelLanguage 高级语言则是面向用户的语言 H 机器语言 指令中仅包含 0 和 1 优点 执行速度快缺点 难记 编程时容易出错 修改程序时更是如此 不同种机器之间程序不能通用 原因 不同生产厂家 不同种计算机指令系统不相同 所以 在一台计算机上执行的程序 要想在另一台计算机上执行 必须另编程序 造成了重复工作 H 汇编语言 用一些简洁的英文字母 符号串来替代一个特定的指令的二进制串 例如 ADD 代表加法 MOV 代表数据传递 有了助记符 读懂 纠错及维护程序都变得方便了 计算机不认识这些助记符 需要一个专门的程序 专门负责将这些符号翻译成二进制数的机器语言 这种翻译程序被称为汇编程序 依赖计算机的硬件结构和指令系统 移植性较差 H 高级语言 这种语言接近于数学语言或人的自然语言 同时又不依赖于计算机硬件 编出的程序能在所有机器上通用 经过努力 1954年 第一个完全脱离机器硬件的高级语言 FORTRAN问世了 多年来 共有几百种高级语言出现 有重要意义的有几十种 如pascal c语言 高级语言也有缺点 高级语言需要翻译成机器语言 与直接用汇编语言编写的程序比 占用内存大 执行时间长 访问机器的硬件资源比较困难 H Pascal语言举例 读入两个数 将大数存入x 小数存入yPROGRAMlarger input output VARx y temp real BEGINread x y writenln x x y y IFx yTHENBEGINtemp x x y y tempEND writenln x x y y END 可能的运行结果2537 X 25y 37X 37y 25 H c语言举例 读入两个数 将大数存入x 小数存入yMain floatx y temp scanf f f 可能的运行结果2537 X 25y 37X 37y 25 H 汇编语言源程序使用汇编语言编写的程序 不能被机器识别 汇编与汇编程序汇编程序是把源程序翻译成与之等价的机器语言程序的翻译程序 相应的过程叫汇编 连接程序将目标程序和库文件相连 形成可执行文件 汇编语言 源程序 asm 目标程序 obj 可执行程序 exe H H DATASEGMENT 数据段DATA1DB0F8H 60H 0ACH 74H 3BHDATA2DB0C1H 36H 9EH 0D5H 20HDATAENDS 汇编语言源程序包含的内容数据段 一般为DATASEGMENT DATAENDS堆栈段 一般为STACKSEGMENT STACKENDS代码段 一般为CODESEGMENT CODEENDS 例 要求将两个5字节十六进制数相加 可以编写出以下汇编语言源程序 汇编语言源程序 汇编语言源程序 CODESEGMENT 代码段ASSUMECS CODE DS DATASTART CODEENDSENDSTART MOVAX DATAMOVDS AXMOVCX 5 循环5次MOVSI 0CLCLOOPER MOVAL DATA2 SI ADCDATA1 SI ALINCSIDECCXJNZLOOPER MOVAH 4CHINT21H 返回DOS H 分段结构 每个段以段定义伪指令SEGMENT语句开始 以ENDS语句结束 格式形如 段名SEGMENT 段名ENDS其中 代码段是必须有的 堆栈段如果用户不定义系统会自动分配 不同的段通过ASSUME识别 ASSUMECS 段名 DS 段名 SS段名 ES 段名整个源程序的结尾是END语句 汇编程序遇见END就结束 H 汇编语言语句的类型和格式 指令语句 与机器指令对应 汇编程序能将其翻译成目标代码 CPU可以执行的能完成特定功能的语句 伪指令语句 它是一种不产生目标代码的语句 它仅仅在汇编过程中告诉汇编程序应如何汇编 主要完成数据定义 存储区分配 段定义 段分配 指示程序结束等功能 H 变量因为变量是存储器中某个数据区的名字 所以在指令中可以作为存储器操作数 变量属性 段 SEGMENT 偏移量 OFFSET 和类型 TYPE 段值 变量所在段的段基址 段内偏移地址 指变量所在地址与所在段首地址之间的地址偏移字节数 类型 指变量中每个元素所包含的字节数 类型BYTE WORD DWORD等 变量 H 表达式中常用的运算符有以下6类 算术运算符 ArithmeticOperators 逻辑运算符 LogicalOperators 关系运算符 RelationalOperators 数值返回运算符 Value ReturningOperators 修改属性运算符 ModifingAttributeOperators 其他运算符 OtherOperators 表达式 H 算术运算符算术运算符可用于数值表达式 运算结果是一个数值 在地址表达式中通常只使用其中的 和 加和减 两种运算符 表达式 H 举例 数组ARR定义如下ARRDB1 2 3 4 5 6 7 8TRYDB20指令为 MOVAX 30 5MOVCX TRY ARR 汇编时 计算表达式形成如下指令 MOVAX 150MOVCX 8 算术运算符 H 逻辑运算符逻辑运算符只用于数值表达式中对数值进行按位逻辑运算 并得到一个数值结果 对地址进行逻辑运算是没有意义的 逻辑运算符和指令助记符中对应的符号完全相同 作为表达式在汇编时执行 指令助记符则在程序中执行 表达式 H 举例 有下列指令MOVAL NOT0FFHMOVBL 8FHAND63HMOVAH 82HXOR95H汇编时 计算表达式形成如下指令 MOVAL 0MOVBL 3HMOVAH 17H 逻辑运算符 H H 关系运算符参与关系运算的必须是两个数值或同一段中的两个存储单元地址 但运算结果只可能是两个特定的数值之一 当关系不成立 假 时 结果为0 全0 当关系成立 真 时 结果为0FFFFH 全1 或0FFH

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论