欢迎来到天天文库
浏览记录
ID:51997856
大小:722.00 KB
页数:65页
时间:2020-03-27
《汇编语言程序设计I.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第五章汇编语言程序设计5.1程序设计概述5.2汇编,链接和运行程序5.3模块化的程序设计5.4汇编语言程序设计的基本方法内容与要求:掌握汇编语言的基本语法、语句、操作数的寻址方式与汇编表示、常量与数值表达式,标号、变量与地址表达式。2.掌握顺序、分支、循环程序设计的基本方法和一般技巧。3.掌握子程序与堆栈技术。4.了解宏汇编和宏指令的应用。1.机器语言(MachineLanguage)机器语言是一种用二进制表示指令和数据,能被机器直接识别的计算机语言。它的缺点是不直观,不易理解和记忆,因此编写、阅读和修改机器语言程序都比较繁琐。但机器语言
2、程序是计算机惟一能够直接理解和执行的程序,具有执行速度快、占用内存少等特点。5.1程序设计概述2.高级语言(HighLevelLanguage)如果说机器语言是面向机器的,那么高级语言(如BASIC,FORTRAN等)则是“面向过程”的语言。利用这些语言编程,程序员可以完全不考虑机器的结构特点,不必了解和熟记机器的指令系统,仅使用一些接近人们书写习惯的英语和数学表达式形式的语句去编制程序。这样编写的程序与问题本身的数学模型之间有着良好的对应关系,可在各种机器上通用(不同机器之间仅做少量修改)。但是,这种用高级语言编写的源程序并不能在机器上
3、直接执行,需要被翻译成对应的目标程序(即机器语言程序),机器才能运行。把具有这种翻译作用的程序称为解释程序或编译程序,见图5.1。由于高级语言程序是在未考虑机器的结构特点的条件下编写的,因而它就不能充分利用某种具体CPU所具有的某些特性,而通过编译或解释程序生成的目标程序往往比较冗长,占有较多的内存空间,执行时间也比较长,这就限制了它在某些场合下的运用。例如,实时的数据采集、检测和在线的实时控制等,往往要求程序的目标代码尽可能少占内存并有尽可能快的执行速度,在这些场合下,使用高级语言编写的程序常常不能满足要求。3.汇编语言(Assembl
4、yLanguage)汇编语言是一种采用助记符表示的程序设计语言,即用助记符来表示指令的操作码和操作数,用标号或符号代表地址、常量或变量。助记符一般都是英文字的缩写,以方便人们书写、阅读和检查。实际上,用汇编语言编写的汇编语言源程序就是机器语言程序的符号表示,汇编语言源程序与其经过汇编所产生的目标代码程序之间有明显的一一对应关系,故也称汇编语言为符号语言。用汇编语言编写程序能够直接利用硬件系统的特性(如寄存器、标志、中断系统等)直接对位、字节、字寄存器或存储单元、I/O端口进行处理,同时也能直接使用CPU指令系统和指令系统提供的各种寻址方式
5、,编制出高质量的程序,这样的程序不但占用内存空间少,而且执行速度快。当然,由于源程序和所要解决的问题的数学模型之间的关系不够直观,使得汇编语言程序设计需要较多的软件开发时间,也增加了程序设计过程中出错的可能性。用汇编语言编写的源程序也需要翻译成目标程序才能被机器执行。这个翻译过程称为汇编,完成汇编任务的程序称为汇编程序,见图5.2。图5.2汇编程序的功能示意图5.2汇编,链接和运行程序5.3模块化的程序设计举例:;Createashellformodularprogrammingusingthecompletesegmentdefinit
6、ion.;onefilewillcontainthemainmodule:EXTRNSUBPROG1:FAREXTRNSUBPROG2:FARPUBLIC….;declaredataheretobeshared;-------------------------------------------STSEGSEGMENTPARASTACK‘STACK’DW64DUP(?)STSEGENDS;-------------------------------------------DTSEGSEGMENTPARA‘DATA’;definedat
7、ahereDTSEGENDS;-------------------------------------------CODSEG_ASEGMENTPARA‘CODE’MAINPROCFARASSUMECS:CODSEG_A,DS:DTSEG,SS:STSEGMOVAX,DTSEGMOVDS,AX….CALLSUBPROG1;callsubprogCALLSUBPROG2;callsubprog….MOVAH,4CHINT21HMAINENDPCODSEG_AENDSENDMAIN;-------andinanotherfile:SUBPR
8、OG1PROGRAM------EXTRN…..;declaredatathatisdefinedexternallyPUBLICSUBPROG1;declareproceduresthata
此文档下载收益归作者所有