




已阅读5页,还剩130页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
汇编语言程序的格式、汇编语言程序在计算机上的过程、伪指令语句、汇编语言程序设计的基本方法、汇编语言程序的基本格式和计算机的过程。主数据定义伪指令、段定义伪指令、符号定义伪指令、过程定义伪指令。掌握汇编语言编程的一般步骤以及顺序程序、分支程序、循环程序和子程序设计的方法。6.1汇编语言和汇编程序,6.1.1汇编语言的基本概念,1机器语言和汇编语言(machine language and assembly bly language),由二进制代码0,1表示的指令称为机器指令,相应的程序称为机器语言程序。由指令助记符表示的指令称为汇编语言指令,相应的程序称为汇编语言程序。示例6-1将4位二进制数转换为ASCII字符。当数字为0000B-1001B时,相应的ASCII码为“0”到“9”;当数字为1010B1111B时,相应的ASCII码为“a”到“f”。假设要转换的数据已经在累加器A1(低4位)中。编译后的机器语言程序和汇编语言程序如下表所示。汇编语言和高级语言(汇编语言和独立于计算机的语言)。汇编语言是一种依赖于计算机微处理器的语言。汇编语言通常没有通用性和可移植性。为了设计汇编语言程序,必须熟悉机器的硬件和软件资源。高级语言是一种面向过程的语言。高级语言具有良好的通用性和可移植性。有必要学习汇编语言,并使用汇编语言以极高的效率设计核心和底层程序。用汇编语言编写的程序通常比用高级语言编写的程序执行得更快,占用的内存更少。汇编语言程序可以直接有效地利用机器硬件资源。学习汇编语言对于理解和掌握计算机硬件组成和工作原理非常重要。6.1.2汇编语言源程序的组成,1。汇编语言源程序的程序结构,示例6-2汇编语言源程序的完整示例。NAMEHEXTOASC* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * DATASEGMENT。数据段定义以HEXDB5AHASCDB2DUP(?)DATAENDS数据段定义结束;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * STACKSEGMENT。堆栈段定义从db256dup (s)开始,要求$-stack packkends。堆叠段定义结束;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *,* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * CODESEGMENT。代码段定义以assumecs :代码、ds:数据、ss: stackstart : movax数据开始。主程序启动,movds,axmovax,stackmovss,axmovsp,topmovbx,offsetascmoval,hexmovah,almovcl,4shral,clcallnearptrconvert.hlt。主程序结束,CONVERTPROC程序(子程序)定义开始和结束,0 FHCMPAL,10 JBNumaddal,7 Num: Addal,0 RetransferNDP过程(子程序)定义结束CODEENDS代码段定义结束;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * END START。在程序的最后,总结了程序的要点:汇编语言源程序由段结构组成。段由“SEGMENT”(段定义开始)和“ENDS”(段定义结束)语句定义。每个段都有一个唯一的段名,一致。不同段的段名不能相同。数据段、堆栈段和代码段的功能不同。每个部分由一系列语句组成。该语句包括指令语句和伪指令语句。2.语句汇编语言的格式。汇编语言程序的每一行语句由14个部分组成。指令语句和伪指令语句的格式略有不同。指令语句用冒号“:”标记,而伪指令语句不用冒号标记。指令语句的格式为,标签:操作已操作;注释标签字段指令助记符字段操作数字段注释字段,伪指令语句格式为,标签操作操作;注释标签字段伪指令助记符字段操作数字段注释字段,一行最多可有132个字符语句的每个部分至少由一个空格分隔。3.标签(包括数据变量标签和程序位置标签),(1)数据变量标签的三个属性,(1)段值:段的段地址。(2)偏移量:数据变量所在位置的地址与其段地址之间的差值。(3)类型:指数据变量是字节、字还是双字。(2)节目位置标签的两个属性:(1)在NEAR中调用或转移标签。(2)在FAR区间调用或转移标签。4。操作数字段,(1)常量:二进制、八进制、十进制、十六进制或ASC代码字符串。(2)寄存器名、标签、变量、指令:MOVAL、HEX、AL是寄存器名,HEX是变量名。(3)表达式:由运算符连接的表达式称为表达式,表达式按照一定的规则运算后得到数值或地址。表达式可分为算术表达式、逻辑表达式、关系表达式、分析表达式和综合表达式。例如,算术表达式如5*8 30、128/100、206MOD128等。根据参与运算的数字的字长,逻辑表达式的结果可以是8位或16位二进制数。逻辑操作指令可以包含逻辑表达式,例如指令ANDAL,左边的第一个“与”是逻辑操作指令,第二个“与”是逻辑运算符,而10101010BAND0FH是逻辑表达式,其结果在组装时已经确定,即00001010B,因此上述指令等同于ANDAL,00001010B,例如,指令MOVBX,5GT3等同于MOVBX,0FFFFH分析表达式将内存操作数分解成几个部分,如段值、偏移量、类型等。合成运算表达式将这些组件合成为内存操作数。汇编程序将它们翻译成机器代码和命令8086来执行相应的操作。伪指令语句:汇编程序不把它们翻译成机器代码,它只是用来在汇编过程中指导汇编程序做一些操作,它不占用存储单元。*程序分段和内存分配*变量定义和内存应用*过程定义*符号定义*程序模块定义和通信*宏定义和宏调用*条件汇编*格式控制、列表等功能。伪指令主要分为以下几类:6.2.1定义伪指令SEGMENT/ENDS。定义模式:段名段定位模式组合模式类别名语句1语句2.段名结束时,链接程序不仅完成段和段的联合操作,而且将联合操作后得到的段相互连接起来。线段和线段之间的连接方式称为定位方式,共有4种。(2)定位方法,(3)字:表示该段以最低位为0的二进制数地址开始。(4)页:表示段从页的边界开始,即十六进制数表示地址的最低两位都是0。(1) PARA(未定义):表示段从段的边界开始,即地址的最低位是0,用十六进制数表示。(2) BYTE:表示该段可以从任何地址开始。Bytex xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 000000 BX表示0或1,位置类型起始地址,(3)组合模式。如果程序不同模块中性质相同的段使用相同的段名,那么连接时,同名的段将按照指定的方式进行组合,共有6种组合方式。一个,指示该段与其他模块的段无关,并且每个段都有自己的基址。这是默认方法。NONE(默认)模式:STACK模式:连接时,STACK模式中所有同名的段都连接到一个段中,运行时是SS的加载值,堆栈指针SP指向该段的起始地址。(2)公共模式:这意味着该段和在其他模块中被描述为公共模式的具有相同名称的段被组合成一个逻辑段,共享一个段地址,并且在运行时被加载到相同的物理段中。(5) MEMORY模式:表示该段应位于所有其他段之上。i(4)公共模式:指该段与所有在其它模块中被描述为公共的同名段共享同一存储区域,即具有相同的段起始地址,共享长度是模块中同名段的最大长度。例如:a,b;丙、甲、乙;共有7个段是3个模块中的段,其中P、C和S分别代表公共、公共或堆栈。组装成4个新段(见下图)。新线段的长度是组合在一起的线段长度的总和(当使用PUBLIC和STACK方法时),或者是每个线段中最长线段的长度(COMMON方法)。AT模式:表示该段由绝对地址定位,其段地址为以下表达式的值,位移为0。例如,一个段“FAT”AB段“BAZ”EC段“BAZ”BD段“ZOU”CE段“FAT”数据链路在链路处理前进行链路处理后,格式:组名组段名 ,功能:用于将一个模块中几个不同名称的段组合成一个组,并将它们加载到同一个物理段中。组中段之间的跳跃可以被视为段内跳跃。注意:组名与段名的命名规则相同,段名代表组的段地址。格式中的段名也可以用SEG变量或SEG标签表示。6.2.2位置计数器$和位置伪指令ORG。汇编程序特别设置了一个代表当前位置的计数器,称为位置计数器$。在正常情况下,对于汇编程序扫描的每个字节,位置计数器的值增加1。语句:Topequip $-STACK的意思是:当前位置计数器的值是$减去STACK表示的起始位置的值,然后两者之间的差值被赋予符号常数top。语句:JMP$的意思是:程序跳到这个指令的执行。format: ORG数据表达式,函数:将位置计数器的值设置为表达式的值。组织是从指定位置编译的。格式:ASSENT段寄存器:段名,段寄存器:段名,功能:用于通知汇编程序段寄存器CS、DS、ES和SS的内容将被设置为这些段或组的段地址。第6.2.3节地址伪指令假设,例如CODESEGMENTASSUMECS:CODE,DS: DATA,SS: STACK,ES:nothinmovax,DATAMOVDS,AX;设置DSMOVAX、STACKMOVSS、ax;设置SSCODEENDS,6.2.4进程定义伪指令PROC/ENDP,该进程是一个子程序。汇编语言规定必须定义进程来确定进程的三个属性。在过程的属性被确定之后,调用指令CALL可以被正确地组装以决定是生成近调用指令还是远调用指令。(1)段属性:流程所在段的段地址。偏移属性:流程所在段内的偏移地址。类型属性(近或远)。该过程为近或远类型。近过程。该程序与CALL指令CALL在同一个代码段(相同的段名)中。FAR一个漫长的过程。该过程与调用指令CALL处于不同的代码段(段名不同)。功能:将具有某些功能的程序段设计成一个过程(子程序),以便于模块化程序设计。过程名是为过程指定的名称,与变量和标签的定义方法相同。任何变量都有以下三个属性。(1)段属性是变量使用的段;(2)段中的迁移属性;(3)变量类型:字节、字、双字等。6.2.5数据定义伪指令和内存分配,1。变量的三个属性,数据库定义字节型变量,每个变量分配一个存储单元,数据库定义字体变量,每个变量分配两个存储单元,数据库定义双字体变量,每个变量分配四个存储单元,2。变量定义和内存应用程序伪指令数据库/数据仓库/数据仓库,函数:定义一个变量并为其分配一定数量的存储单元,变量的初始值由表达式的值指定。如果初始值是任意的,请使用问号(?)说道。变量名可以保存。HEXDB5AH定义一个字节变量VWORDDW1234H。定义单词变量,注意:当存储单词变量时,低字节在前,高字节在后。BUFFERDW1,0,-1;定义了三个字单元,strdb 程序。定义了一个字符串。注意:当存储字符串时,存储字符的ASCII码,DVARDD12345678H双字单位,ASCDB2DUP(?)函数:分配2个字节单元,初始值为BUDDW 100 DUP(0)函数:分配100个字单元,初始值为0ZIPDB3DUP(0,2DUP(1)函数:存储单元依次初始化为0,1,1,0,1,1,0,1,1。在变量被定义并应用于内存之后,它们就可以在像高级语言这样的程序中使用了。MOVAL、HEX获取变量HEX的内容,并将其发送到AL寄存器AL。铝,BX;获取变量ASC的偏移地址,并将其添加到BX寄存器的内容中,以获得存储器操作数的有效地址EA,然后将AL寄存器的内容发送到该单元。3。变量的使用,6.2.6记录和结构定义伪指令(记录、结构/结束),1。记录定义伪指令记录,记录:能够进行位处理的8位或16位二进制数。字段:记录中几个相邻的位组成一个字段。记录类型:描述记录中有哪些字段以及每个字段中有多少位。(1)记录类型的定义。记录名和字段名遵循标签的命名规则。宽度表示字段占用的二进制位数,最多不能超过16位。初始值表达式可以保存,表示字段的初始值。例如,COLORRECORDX:3=5,Y:4=12,Z:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年二手交易电商信用体系建设与风险防范策略报告
- 线上线下零售数据可视化平台企业制定与实施新质生产力项目商业计划书
- 二手车交易安全保障创新创业项目商业计划书
- DB1303T 163.2-2011 农业企业标准体系养殖业标准体系的构成和要求 第2部分:管理标准体系
- 2025年二手电商平台信用体系建设与消费者信心构建报告
- 大学诗词赏析题目及答案
- 2025年低碳城市建设中的绿色交通基础设施建设案例分析
- 2025年低碳城市建设规划与江苏案例分析报告
- 黑龙江安全b证考试试题及答案
- 【黄冈】2025年湖北黄冈市团风县事业单位统一公开招聘工作人员35人笔试历年典型考题及考点剖析附带答案详解
- 2025年苏教版四年级(下)期末考试数学试卷(含答案)
- (网络+收集版)2025年高考全国二卷语文高考真题文档版(无答案)
- 国家开放大学2025年《创业基础》形考任务4答案
- 新版出口报关单模板
- 2023年南方科技大学机试样题练习
- GB/T 13384-2008机电产品包装通用技术条件
- 高中有机化学方程式汇总
- 中海地产海之子启航计划应届毕业生接收与培养工作管理办法
- 廉颇蔺相如列传原文及翻译x0001
- GSM信令流程详解
- 听课记录空白模板
评论
0/150
提交评论