- 1、本文档共170页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编语言课件54445
第4章 汇编语言程序设计 汇编语言的特点 汇编语言是一种以处理器指令系统为基础的低级程序设计语言,它采用助记符表达指令操作码,采用标识符号表示指令操作数; 利用汇编语言编写程序的主要优点是可以直接、有效地控制计算机硬件,因而容易创建代码序列短小、运行快速的可执行程序; 在有些应用领域,汇编语言的作用不容置疑无可替代; 汇编程序设计的过程是与其他高级语言程序设计大致相同; 源程序经过编辑、汇编、连接形成可执行文件;如果存在运行错误,借助调试程序进行排错。 4.1 汇编语言的源程序格式 汇编语言源程序由语句序列构成,每条语句一般占一行; 完整的汇编语言源程序由段组成; 一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与段之间的顺序可随意排列; 需独立运行的程序必须包含一个代码段,并指示程序执行的起始点,一个程序只有一个起始点; 所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内; 通常,程序还需要一个堆栈段。 汇编语言的语句格式 ⑴执行性语句——用于表达处理器指令(也称为硬指令),使CPU产生动作、并在程序执行时才处理的指令;汇编后对应一条指令代码。 标号: 硬指令助记符 操作数,操作数 ;注释 由处理器指令组成的代码序列是程序设计的主体 ⑵说明性语句——用于表达伪指令,指示源程序如何汇编、变量怎样定义、过程怎么设置等。不产生CPU动作、在程序执行前由汇编程序处理。 名字 伪指令助记符 参数,参数,…… ;注释 标号、名字与标识符 标号是反映硬指令位置(逻辑地址)和属性的标识符,后跟一个冒号分隔; 名字是反映伪指令位置(逻辑地址)和属性的标识符,后跟空格或制表符分隔,没有冒号; 标识符(Identifier)一般最多由31个字母、数字及规定的特殊符号(如 _、$、?、@)组成,不能以数字开头,默认情况下,汇编程序不区别标识符中的字母大小写; 一个源程序中,每个标识符的定义是唯一的,还不能是汇编语言采用的保留字。 保留字 保留字(Reserved Word)是汇编程序已经利用的标识符(也称为关键字),主要有: 硬指令助记符——例如:MOV、ADD 伪指令助记符——例如:DB、DW 操作符——例如:OFFSET、PTR 寄存器名——例如:AX、CS 预定义符号——例如:@data 注释 语句的4个组成部分要用分隔符分开 标号后用冒号,注释前用分号 操作数之间和参数之间使用逗号分隔 其他部分通常采用空格或制表符 多个空格和制表符的作用与一个相同 例4.1 在屏幕上显示一段信息 ;数据段(定义要显示的字符串) string db ’Hello, Assembly !’,0dh,0ah,’$’ ;代码段(显示字符串的程序) mov dx,offset string mov ah,9 int 21h 4.1.1 简化段定义格式 .model small ;定义程序的存储模式(小型模式) .stack ;定义堆栈段(默认是1KB空间) .data ;定义数据段 …… ;数据定义 .code ;定义代码段 start: mov ax,@data ;程序起始点 mov ds,ax ;设置DS指向用户定义的数据段 …… ;程序代码 mov ax,4c00h int 21h ;程序结束点,返回DOS …… ;子程序代码 end start ;汇编结束,同时指明程序起始点start 1. 存储模式(Memory Model) 存储模式决定了一个程序的规模,也确定了子程序调用、指令转移和数据访问等的缺省属性 当使用简化段定义的源程序格式时,必须有存储模式.MODEL语句,且位于所有简化段定义语句之前。 其格式为: .MODEL 存储模式 .MODEL语句确定了程序采用的存储模式,MASM有7种可以选择,如表3.1所示 2. 逻辑段的简化定义 .STACK [大小] ;堆栈段定义伪指令.STACK创建一个堆栈段,段名是:STACK。堆栈段名可用@STACK预定义标识符表示。可选的“大小”参数指定堆栈段所占存储区的字节数,默认是1KB(=1024=400H字节) .DATA ;数据段定义伪指令.DATA创建一个数据段,段名是:_DATA。数据段名可用@DATA预定义标识符表示 .CODE [段名] ;代码段定义伪指令.CODE创建一个代码段,可选的“段名”参数指定该代码段的段名。如果没有给出段名,则采用默认段名 3. 程序开始 为了指明程序开始执行的位置,需要使用一个标号(例题中采用了start标识符) 连接程序会根据程序起始点正确地设置CS和IP值,根据程序大小和堆栈段大小设置SS和SP值 连接程序没有设置DS和ES值。程序如果使用数据段或附加段
您可能关注的文档
最近下载
- 电容式液位传感器及测量原理.doc
- 译林版小学一年级英语上册全套教案.pdf VIP
- 2023-2024年广东省广州市海珠区六年级上册期末数学试卷及答案(人教版).pdf
- [GB5009标准]GB 5009.156-2016 食品安全国家标准 食品接触材料及制品迁移试验预处理方法通则.pdf
- JTG-T 3650-2020公路桥涵施工技术规范.doc
- 县统计局党支部工作总结.pptx VIP
- 县人大常委会办公室的资料搜集提纲.doc VIP
- 某大型家电集团微波电器事业部通用分权规范手册.xls VIP
- 超声引导下针刀治疗.pptx VIP
- 2024年湖南司法警官职业学院单招职业技能测试题库及答案解析.docx VIP
文档评论(0)