- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第四章汇编语言程序设计第一节汇编语言及其上机过程第二节汇编语言程序结构第三节指示性语句第四节汇编语言程序举例第五节BIOS和DOS功能调用第六节汇编语言程序设计
第一节汇编语言(AssembleLanguage)一种面向机器的程序设计语言,是一种用符号表示的低级程序设计语言(机器语言的符号化描述),通常是为特定计算机或计算机系列专门设计的。用汇编语言编写的程序不能由机器直接执行,而必须经汇编程序翻译成机器语言程序。汇编语言指令与翻译成的汇编过程示意:
采用汇编语言进行程序设计的优点可充分利用机器的硬件功能和结构特点,加快程序的执行速度,减少目标程序所占用的存储空间常用来编写实时控制程序、实时通信程序,有时也用来编制某些系统软件程序。汇编语言进行程序设计的缺点:编程效率低(与人们描述计算过程的需要差距大)与机器硬件的具体结构联系过于紧密——在一种结构的机器上开发的程序极难移植到另一种不同结构的机器上去。
汇编语言程序的简历及汇编过程编辑程序Prog.asm文件汇编程序Prog.obj文件连接程序Prog.exe文件Edit.exeMasm.exeLink.exe
检查源程序;测出源程序中的语法错误,并给出出错信息;产生目标文件(.OBJ),并可给出列表文件(同时列出汇编语言源程序和机器语言目标程序的文件,称之为.LST文件)和交叉索引文件(列出程序中使用的符号、变量和标号以及引用情况,称之为.CRF文件)。展开宏指令。汇编程序的主要功能汇编程序分两种,一种是基本汇编(ASM.EXE),一种是宏汇编(MASM.EXE),宏汇编功能比较强。
汇编示意图调用MASM.EXE.ASM汇编.OBJ.LST.CRF可选
连接程序汇编之后生成的OBJ文件必须经过链接过程,才能成为扩展名.EXE的可执行文件。链接的过程就是调用连接程序(LINK.EXE),对OBJ文件进行定位、链接,最后生成扩展名为EXE的可执行文件。如果需要,也可生成MAP文件和LIB文件。
连接示意图:调用LINK.EXE.OBJ.OBJ.LIB连接.EXE.MAP.LIB可选
调试程序(DEBUG.COM)DEBUGPROG.EXE-U(反汇编)-g=起始地址断点地址-T=地址指令条数
汇编语言程序开发中的相关文件HandwrittensourceprogramEDITEditorprogramMASMassemblerprogramLINKlinkerprogramDEBUGdebugprogramFinaldebuggedrunmodulePROG1.LSTPROG1.OBJPROG1.CRFOther.OBJfilesLibraries
汇编语言上机过程D:EDITABC.asmD:MASMABC;有语法错,回EDIT下改该程序D:LINKABC;有错,回在EDIT下改程序D:ABC运行结果错,回EDIT下改程序或在DEBUG下调试,找原因。D:DEBUGABC.exe
汇编语言上机过程——操作用MASM5.0上机第一步编辑:EDIT.EXE
第二步汇编:MASM.EXE可以不输入,用回车回应
修改好后再汇编:
第三步连接并执行:LINK.EXE可以直接用回车回应执行
用DEBUG调试程序:段值偏移指令码反汇编的源码1)用U命令查看程序和目标码及指令地址
2)用T命令单步跟踪,逐条执行看中间结果,DEBUG将显示每个寄存器以及各标志位的当前值这是还未执行的下一条指令这是MOVBX,[SI]的执行结果标志位
3)对于系统功能调用,可以用G命令设置断点执行,也可以用P命令跳过过程与系统功能服务程序。设断点执行,断点设在INT21H的后一句INT21H输出的一个字符
注意:DEBUG只支持16位汇编调试,如果要编写32位汇编程序,需要用MASM6.11汇编和连接,用CodeView软件查看执行代码。但MASM6.11中带的CodeView4.01可以查看32位程序的执行代码,不能进行单步调试。要调试可以考虑使用SoftICE软件。另外,VC嵌入汇编可以支持80486的所有指令,也支持32位汇编。
用VC6.0实现C++中嵌入汇编
建立源程序asmsample.cpp
将下列程序输入到asmsample.cpp中#includeiostream.hintpower2(int,int);voidmain(void){cout2的6次方乘5等于:\t;cou
文档评论(0)