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

下载本文档

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

文档简介

,第四章 汇编语言程序设计,H,4.1汇编语言的程序结构和语句格式,语言的发展 机器语言(Machine Language):二进制表示指令和数据,能被机器直接识别的计算机语言。速度快、占用内存少。 汇编语言(Assembly Language):采用助记符表示的程序设计语言。内存空间少,而且执行速度快。 高级语言(High Level Language):高级语言则是面向用户的语言。,H,机器语言,指令中仅包含“0”和“1”。 优点:执行速度快 缺点:难记,编程时容易出错,修改程序时更是如此 不同种机器之间程序不能通用。 原因:不同生产厂家,不同种计算机指令系统不相同,所以,在一台计算机上执行的程序,要想在另一台计算机上执行,必须另编程序,造成了重复工作。,H,汇编语言,用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,例如: “ADD”代表加法,“MOV”代表数据传递 有了助记符,读懂、纠错及维护程序都变得方便了。 计算机不认识这些助记符,需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。 依赖计算机的硬件结构和指令系统,移植性较差 。,H,高级语言,这种语言接近于数学语言或人的自然语言,同时又不依赖于计算机硬件,编出的程序能在所有机器上通用。 经过努力,1954年,第一个完全脱离机器硬件的高级语言FORTRAN问世了,多年来,共有几百种高级语言出现,有重要意义的有几十种,如pascal,c语言。 高级语言也有缺点: 高级语言需要翻译成机器语言,与直接用汇编语言编写的程序比,占用内存大,执行时间长 访问机器的硬件资源比较困难,H,Pascal语言举例,读入两个数,将大数存入x,小数存入y PROGRAM larger(input,output); VAR x,y,temp:real; BEGIN read(x,y); writenln(x=,x,y=,y); IF xy THEN BEGIN temp:=x; x:=y; y:=temp END; writenln(x=,x,y=,y); END.,可能的运行结果 25 37 X=25 y=37 X=37 y=25,H,c语言举例,读入两个数,将大数存入x,小数存入y Main() float x,y,temp; scanf(“%f %f”, ,可能的运行结果 25 37 X=25 y=37 X=37 y=25,H,汇编语言源程序 使用汇编语言编写的程序,不能被机器识别。 汇编与汇编程序 汇编程序是把源程序翻译成与之等价的机器语言程序的翻译程序,相应的过程叫汇编。 连接程序 将目标程序和库文件相连,形成可执行文件。,汇编语言,源程序.asm,目标程序.obj,可执行程序.exe,H,H,DATA SEGMENT ;数据段 DATA1 DB 0F8H,60H,0ACH,74H,3BH DATA2 DB 0C1H,36H,9EH,0D5H,20H DATA ENDS,汇编语言源程序包含的内容 数据段:一般为DATA SEGMENTDATA ENDS 堆栈段:一般为STACK SEGMENTSTACK ENDS 代码段:一般为CODE SEGMENTCODE ENDS 【例】要求将两个5字节十六进制数相加,可以编写出以下汇编语言源程序。,汇编语言源程序,汇编语言源程序,CODE SEGMENT;代码段 ASSUME CS:CODE,DS:DATA START: CODE ENDS END START,MOV AX,DATA MOV DS,AX MOV CX,5 ;循环5次 MOV SI,0 CLC LOOPER: MOV AL,DATA2SI ADC DATA1SI,AL INC SI DEC CX JNZ LOOPER,MOV AH,4CH INT 21H;返回DOS,H,分段结构,每个段以段定义伪指令SEGMENT语句开始,以ENDS语句结束。格式形如: 段名 SEGMENT 段名 ENDS 其中,代码段是必须有的;堆栈段如果用户不定义系统会自动分配。不同的段通过ASSUME识别。 ASSUME CS:段名,DS:段名, SS段名, ES:段名 整个源程序的结尾是END语句,汇编程序遇见END就结束。,H,汇编语言语句的类型和格式,指令语句:与机器指令对应,汇编程序能将其翻译成目标代码,CPU 可以执行的能完成特定功能的语句。 伪指令语句:它是一种不产生目标代码的语句,它仅仅在汇编过程中告诉汇编程序应如何汇编。主要完成数据定义、存储区分配、段定义、段分配、指示程序结束等功能。,H,变量 因为变量是存储器中某个数据区的名字,所以在指令中可以作为存储器操作数。 变量属性:段(SEGMENT)、偏移量(OFFSET)和类型(TYPE) 。 段值:变量所在段的段基址。 段内偏移地址:指变量所在地址与所在段首地址之间的地址偏移字节数。 类型:指变量中每个元素所包含的字节数,类型BYTE、 WORD、DWORD等。,变量,H,表达式中常用的运算符有以下6类: 算术运算符(Arithmetic Operators) 逻辑运算符(Logical Operators) 关系运算符(Relational Operators) 数值返回运算符(Value-Returning Operators) 修改属性运算符(Modifing Attribute Operators) 其他运算符(Other Operators),表达式,H,算术运算符 算术运算符可用于数值表达式,运算结果是一个数值。在地址表达式中通常只使用其中的和(加和减)两种运算符。,表达式,H,【举例】数组ARR定义如下 ARR DB 1,2,3,4,5,6,7,8 TRY DB 20 指令为: MOV AX, 30*5 MOV CX,(TRYARR) 汇编时,计算表达式形成如下指令: MOV AX,150 MOV CX,8,算术运算符,H,逻辑运算符 逻辑运算符只用于数值表达式中对数值进行按位逻辑运算,并得到一个数值结果。对地址进行逻辑运算是没有意义的。 逻辑运算符和指令助记符中对应的符号完全相同,作为表达式在汇编时执行,指令助记符则在程序中执行。,表达式,H,逻辑运算符,H,H,关系运算符 参与关系运算的必须是两个数值或同一段中的两个存储单元地址,但运算结果只可能是两个特定的数值之一:当关系不成立(假)时,结果为0(全0);当关系成立(真)时,结果为0FFFFH(全1)或0FFH。,表达式,【举例】有下列指令 MOV AX,

温馨提示

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

评论

0/150

提交评论