




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章汇编语言程序格式4.1汇编程序功能4.2伪操作4.3汇编语言程序格式4.4汇编语言程序的上机过程4.1汇编程序功能1.程序运行步骤及生成的文件编辑程序myfile.asm汇编程序myfile.lstmyfile.crfmyfile.objotherfiles.obj连接程序myfile.mapmyfile.exe建立,运行汇编语言程序C>EDITC>MASMMYFILE.ASMMYFILE.ASMMicrosoft(R)MacroAssemblerVersion5.10Copyright(C)MicrosoftCorp1981,1988.Allrightsreserved.Objectfilename[MYFILE.OBJ]:Sourcelisting[NUL.LST]:MYFILE.LSTCross-reference[NUL.CRF]:47962+413345Bytessymbolspacefree0WarningErrors0SevereErrorsC>LINKMYFILE.OBJMicrosoft(R)OverlayLinkerVersion3.64Copyright(C)MicrosoftCorp1983-1988.Allrightsreserved.RunFile[MYFILE.EXE]:ListFile[NUL.MAP]:Libraries[.LIB]:LINK:warningL4021:nostacksegmentC>MYFILE2.汇编程序功能汇编程序的主要功能:•检查源程序,给出出错信息。•产生目标文件(.obj)和列表文件(.lst)。•展开宏指令。1.处理器选择伪操作:.8086选择8086指令系统.286选择80286指令系统.286P选择保护模式下的80286指令系统.386选择80386指令系统.386P选择保护模式下的80386指令系统.486选择80486指令系统.486P选择保护模式下的80486指令系统.586选择Pentium指令系统.586P选择保护模式下的Pentium指令系统2.段定义伪操作:完整的段定义格式datasegment;定义数据段…dataends;----------------------------------------extrasegment;定义附加段…extraends;----------------------------------------codesegment;定义代码段assumecs:code,ds:data,es:extrastart:movax,datamovds,ax;段地址段寄存器…codeendsendstart段指派语句assume例:assumecs:code,ds:data,es:extra段指派语句一般出现在代码段中可执行汇编指令之前,用于指明段寄存器和段的对应关系一个汇编语言源程序至少有一个assume伪指令指出CS对应的代码段assume伪指令格式中段名为nothing,表示取消对相应段寄存器已有的指派段指派语句不负责段寄存器的初始化3.程序开始和结束伪操作:TITLEtextNAMEmodule_name这两个不是必须的。END[label]指示汇编程序源程序就此结束[label]表示程序开始执行的起始地址4.数据定义及存储器分配伪操作:[变量]助记符操作数[,操作数,…][;注释]助记符:DBDWDDDFDQDTDATA_BYTE0AH04H10H-DATA_WORD64H00H00H01HFBHFFH例:DATA_BYTEDATA_WORDDBDW10,4,10H,?100,100H,-5,?--ARRAYDBDBDW‘HELLO’‘AB’‘AB’ARRAY48H45H4CH4CH4FH41H42H42H41H复制操作符DUPVARDB100DUP(?)DB2DUP(0,1,2,?)5表达式赋值伪操作:表达式名EQU表达式ALPHABETABBEQUEQUEQU9ALPHA+18[BP+8]“=”伪操作(允许重复定义)……EMP=7……EMP=EMP+1……6.地址计数器与对准伪操作:地址计数器$:保存当前正在汇编的指令的地址ORG$+8;跳过8个字节的存储区JNE$+6;转向地址是JNE的首址+6JMP$+2;转向下一条指令ARRAY01H00H02H00H7CH00H03H00H0074$用在伪操作的参数字段:表示地址计数器的当前值0078ARRAYDW1,2,$+4,3,4,$+404H00H82H00H007EORG伪操作:用来设置当前地址计数器的值SEG1SEGMENTORG10VAR1DW1234HORG20VAR2DW5678HORG$+8VAR3DW1357HSEG1ENDSBUFFERLABELBYTEORG$+8BUFFERDB8DUP(?)ORG100HSTART:……4.3汇编语言程序格式
完整的汇编语言源程序由段组成,每段以SEGMENT开始,以ENDS结束,整个源程序以END结束。
一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与段之间的顺序可随意排列
需独立运行的程序必须包含一个代码段,并指示程序执行的起始点,一个程序只有一个起始点
所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内
通常,程序还需要一个堆栈段1.汇编语言语句行源程序的每条语句可表示为:[名字]操作操作数[;注释]标号变量指令伪指令宏指令寄存器标号变量常数表达式说明程序或语句的功能标号/变量:段值、偏移量、类型三种属性表达式:数字表达式地址表达式3.表达式操作符:算术操作符:、、、、ModVIDEO_BUFDB25*80*2DUP(?)ARRAYDW1,2,3,4,5,6,7ARYENDDW?MOVCX,(ARYEND-ARRAY)/2ADDAX,BLOCK+2;符号地址常数有意义;时意义不明确MOVAX,BX+1;
MOVAX,[BX+1];寄存器间接寻址逻辑和移位操作符:AND、OR、XOR、NOT、SHL、SHROPR1EQU25OPR2EQU7;00011001B;00000111BANDAX,OPR1ANDOPR2;ANDAX,1MOVAX,0FFFFHSHL2;MOVAX,0FFFCH关系操作符:EQ、NE、LT、LE、GT、GE计算结果为逻辑值:真0FFFFH假0000HMOVFID,(OFFSETY-OFFSETX)LE128X:…………Y:……若128(真)汇编结果:MOVFID,-1若128(假)汇编结果:MOVFID,0数值回送操作符:OFFSET、SEG、TYPE、LENGTH、SIZEOFFSET/SEG功能:回送变量或标号的偏址/段址变量/标号TYPE变量/标号/常数DBDWDDDFDQDTNEARFAR常数1246810-1-20LENGTH变量功能:回送由DUP定义的变量的单元数,其它情况回送1SIZE变量功能:LENGTH*TYPEARRAYDW100DUP(?)TABLEDB‘ABCD’ADDSI,TYPEARRAY;ADDSI,2ADDSI,TYPETABLE;ADDSI,1MOVCX,LENGTHARRAY;MOVCX,100MOVCX,LENGTHTABLE;MOVCX,1MOVCX,SIZEARRAY;MOVCX,200MOVCX,SIZETABLE;MOVCX,14.4汇编语言程序的上机过程1.编辑源程序进入DOS方式,运行Edit,在其中编辑程序,如下图所示:2.编译进入DOS方式,进入C:\masm目录,运行masm.exe。如果源程序文件不是以asm为扩展名的话,就要输入它的全名。比如p1.txt。在输入源程序文件名的时候一定要指明它所在的路径。如果文件就在当前路径下,只输入文件名就可以。对源程序的编译结束,编译器输出的最后两行说明这个源程序没有警告错误和必须要改正的错误。3.连接对目标文件的连接结束,生成EXE可执行文件。连接的作用:
当源程序很大时,可以将它分为多个源程序文件来编译,每个源程序编译成为目标文件后,再用连接程序将它们连接到一起,生成一个可执行文件;
程序中调用了某个库文件中的子程序,需要将这个库文件和该程序生成的目标文件连接到一起,生成一个可执行文件;
一个源程序编译后,得到了存有机器码的目标文件,目标文件中的有些内容还不能直接用来生成可执行文件,连接程序将这此内容处理为最终的可执行信息。所以,在只有一个源程序文件,而又不需要调用某个库中的子程序的情况下,也必须用连接程序对目标文件进行处理,生成可执行文件。4.执行程序已经运行,程序的执行是将数据送入寄存器和加法的操作,屏幕上看不到运行结果。5.程序执行过程的跟踪(Debug)可以用R命令看一下各个寄存器的设置情况:可以用U命令查看其它指令(反汇编):可以用T命令单步执行程序中的每一条指令,并观察每条指令的执行结果,到了int21h,要用P命令执行:int21h执行后,显示“Programterminatednormally”,返回
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030农业生物育种技术突破与粮食安全保障战略研究分析
- 2025-2030农业无人机精准变量施药算法演进与植保服务商业模式创新研究报告
- 五年级安全教育课堂教学方案
- 2025-2030农业无人机市场渗透率提升路径与投资回报分析
- 2025-2030农业微生物基因编辑技术商业化应用合规路径探讨
- 2025-2030农业废弃物发酵菌种选育技术突破与产业化路径设计报告
- 2025-2030农业传感器网络部署成本下降与精准农业推广应用障碍分析
- 2025-2030再生医学发展瓶颈分析及临床转化研究报告
- 2025-2030共享经济模式对组织管理咨询服务的创新启示报告
- 2025-2030全球碳纤维材料市场需求与产能布局分析研究报告
- 第三单元 一共有多少第1课时 说课稿-2022-2023学年数学一年级上册-北师大版
- 年度安全资金投入计划
- 2023年苏州职业大学高职单招(数学)试题库含答案解析
- GB/T 39554.1-2020全国一体化政务服务平台政务服务事项基本目录及实施清单第1部分:编码要求
- GB/T 2942-2009硫化橡胶与纤维帘线静态粘合强度的测定H抽出法
- 电梯设计系统
- 劳动保障协理员考试复习资料
- DB3301T 0286-2019 城市绿地养护管理质量标准
- 道路护栏设计和路侧安全净区宽度的计算
- 高处作业安全技术交底-
- 轴类零件工艺工序卡片
评论
0/150
提交评论