




已阅读5页,还剩52页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2部分汇编语言基础知识 AssemblyLanguageProgramming 1汇编语言的编码要求 AssemblyLanguageProgramming 基本特征 程序注释保留字标识符语句伪操作汇编程序的基本框架数据类型简单的程序举例 注释 注释利用 开始可自成一行 也可在指令之后的同一行里例如ADDAX BX 计算总量 保留字 在特殊情况下使用 具有固定用途而保留的某些名字 称为保留字 主要类型 指令如MOV ADD等计算机可执行的操作伪操作如END SEGMENT 为编译程序提供信息的语句操作符如FAR SIZE 在表达式中使用预定义符号如 data model等 在编译期间向程序返回信息 标识符1 用户定义的符号名称 包括两类 数据项的名称 表示数据项的地址如COUNTERDB0标号 表示指令 过程或者段的地址MAINPROCFARB30 ADDBL 25 标识符2 定义规则第一个字符必须是字母或者不为 的特殊字符长度限定在1 31之间不能和保留字相冲突不区分大小写例如合法 TATAL QTY25 P80非法 5P TY 字母 A Z和a z数字 0 9特殊 语句 语句包括两类 指令 具有对应的机器码例如 ADD MOV伪指令 只在程序汇编过程起作用 产生机器不可执行的代码例如 定义数据项DB DW 指令 指令 机器指令操作operation是必有的 规定该指令的动作操作数operand是可选的 并且数量不定例如 标识符操作操作数伪指令 COUNTDB1指令 MOVAX 0 标示名称 操作 操作数1 n 注释 伪操作 介绍几个常用的伪操作PAGE和TITLESEGMENTPROCEND和ENDPASSUME 标示名称 伪操作 操作数1 n 注释 PAGE和TITLE 程序的开头 PAGE定义程序打印时一页的最大行数和每行最大字符数 默认50 80格式 PAGE60 132TITLE为程序产生标题 打印程序时位于第2行格式 TITLEAssemblyprogramsort SEGMENT 格式 segment nameSEGMENT align combine class segment nameENDS解释定位align 指明段开始的边界 通常段为小边界 参数为PARA 组合combine 指明程序连接时 该段是否和其它的段组合在一起 以后解释 参数为STACK COMMON PUBLIC堆栈段通常定义segment nameSEGMENTPARASTACK类别class 指明段的类别代码段 code 数据段 data 堆栈段 stack PROC 定义过程 格式 proc namePROCFAR proc nameENDP过程名的操作数为FAR 意味着相应程序的入口点为此过程 在程序中只有一个操作数为FAR的过程 ENDP指明过程的结束 过程的结束在代码段内 即ENDS之前完成 代码段内可以包含任意数量的过程 其它的过程通常使用NEAR的操作数 END ENDS段结束ENDP过程结束END完整的程序结束格式 END过程操作数FAR的PROC ASSUME 指明程序各个段的用途典型的格式ASSUMEDS dataseg CS codeseg SS stackseg 上述的次序任意假如需要扩展段ES 也可以加上即可ES dataseg 程序的框架结构 page60 132TITLEA04ASM1 EXE MoveandaddoperationsSTACKSEGMENTPARASTACK Stack STACKENDS DATASEGSEGMENTPARA Data DATASEGENDS CODESEGSEGMENTPARA Code MAINPROCFARASSUMESS STACK DS DATASEG CS CODESEGMOVAX DATASEG SetaddressofdataMOVDS AX segmentinDS MOVAX 4C00H EndprocessingINT21HMAINENDP EndofprocedureCODESEGENDS EndofsegmentENDMAIN Endofprogram 解释 段的定义顺序可任意入口过程MAIN的名称可以为其它 例如START等程序结束返回MOVAH 4CH 请求结束处理MOVAL retcode 设置返回码INT21H 调用中断处理通常正常返回0 故可写作MOVAX 4C00HINT21H 编程技巧提示 由于汇编源程序的格式相对不变 故可以把上述的框架保留下来 添加功能代码即可 数据类型1 名称 对应标识符伪操作Dn 定义数据的类型长度字节DB 1字节 字DW 2字节 双字DD 4字节 表达式 定义数据的数值的常数或者表达式 名称Dn表达式 数据定义的格式 数据的定义1 表达式的形式对于尚未初始化的数据 使用 表示常数举例最简单的情形DATAXDB DATAYDB25 数据的定义2 数据序列的定义 数组数据因素依次用 隔开DATAZDB21 22 23 24对DATAZ的数据因素访问 根据数据所处的位置进行DATAZ 0表示21 DATAZ 1表示22 依次类推MOVAL DATAZ 3 数据的定义3 重复数据序列的定义举例DW10DUP DB5DUP 12 DB3DUP 5DUP 4 DB4DUP 3DUP 0 1 2DUP 名称Dn重复个数DUP 表达式 请大家思考 上述的数据是什么 数据的定义4 字符和字符串的定义字符或者字符串在单引号 或者双引号 内定义数据类型常用的是DB举例DB Computercity 若串中含有 以下处理DB Crazysam sCD DB Crazysam sCD 完整的源程序举例 page60 132TITLEA04ASM1 EXE MoveandaddoperationsSTACKSEGMENTPARASTACK Stack DW32DUP 0 STACKENDS DATASEGSEGMENTPARA Data FLDDDW215FLDEDW125FLDFDW DATASEGENDS CODESEGSEGMENTPARA Code MAINPROCFARASSUMESS STACK DS DATASEG CS CODESEGMOVAX DATASEG SetaddressofdataMOVDS AX segmentinDSMOVAX FLDD Move0215toAXADDAX FLDE Add0125toAXMOVFLDF AX StoresuminFLDFMOVAX 4C00H EndprocessingINT21HMAINENDP EndofprocedureCODESEGENDS EndofsegmentENDMAIN Endofprogram 编写注意 编写建议 同一小功能段 编写注释程序识别一般不区分大小写可读性强 通常所有汇编指令用大写 而注释全部用小写 使用简化的编程框架 MODEL自动产生ASSUME语句 MODEL本教程通常两种 Tiny 为 com生成代码Small 为 exe生成代码并且两者代码偏移量限定在64KB内 简化模型举例 page60 132TITLEA04ASM2 EXE Moveandaddoperations MODELSMALL STACK64 Definestack DATA DefinedataFLDDDW215FLDEDW125FLDFDW CODE DefinecodesegmentMAINPROCFARMOVAX data SetaddressofdataMOVDS AX segmentinDSMOVAX FLDD Move0215toAXADDAX FLDE Add0125toAXMOVFLDF AX StoresuminFLDFMOVAX 4C00H EndprocessingINT21HMAINENDP EndofprocedureENDMAIN Endofprogram 2源程序的编译 连接和执行 AssemblyLanguageProgramming 几个文件 源程序 asm目标文件 obj可执行文件 exe com 编辑源程序 asm asm 汇编 obj 连接 exe 选项 LST CRF 汇编过程1 MLa04asm1 asmMicrosoft R SegmentedExecutableLinkerVersion5 31 009Jul131992Copyright C MicrosoftCorp1984 1992 Allrightsreserved ObjectModules obj a04asm1 objRunFile a04asm1 exe a04asm1 exe ListFile nul map NULLibraries lib DefinitionsFile nul def 注意 该命令编译 生成obj 连接 生成exe同时完成 汇编过程2 E src CH04 ML ca04asm1 asmMicrosoft R MacroAssemblerVersion6 11Copyright C MicrosoftCorp1981 1993 Allrightsreserved Assembling a04asm1 asmE src CH04 LINKa04asm1 objMicrosoft R SegmentedExecutableLinkerVersion5 31 009Jul131992Copyright C MicrosoftCorp1984 1992 Allrightsreserved RunFile a04asm1 exe a04asm1 exeListFile nul map Libraries lib DefinitionsFile nul def 注意 该命令编译 生成obj 连接 生成exe分别完成 执行 E src CH04 a04asm1 exeE src CH04 ML其它注意的汇编选项 除了 c只汇编程序外 还要知道 Fl 产生列表文件 lst Fr 产生映象文件 map Sn 禁止符号表的列表 Zd 包含调试信息的行号 Zi 包含符号的调试信息大家在实验中 将上述的各个选项应用上编译程序 知道各个选项的含义 3编写 COM汇编程序 AssemblyLanguageProgramming COM程序 com程序通常较为小巧 最大不超过64KB 适合作为常驻内存的程序代码段和数据段在一个段内 堆栈段由装入程序在段尾自动创建头100H为ProgramSegmentPrex PSP堆栈段数据段代码段 ESSSDSCS PSP代码段堆栈段 ESDSCSSS 编写格式 ASSUME将所有段寄存器初始化为代码段的地址ORG100H指明第一条指令的地址为100H偏移量 即IP 100H注意 定义数据的方法 通常程序一开始即定义 TITLEA05COM1COMprogramtomoveandadddataCODESEGSEGMENTPARA Code ASSUMECS CODESEG DS CODESEG SS CODESEG ES CODESEGORG100H StartatendofPSPBEGIN JMPMAIN Jumppastdata DATAXDW215 DatadefinitionsDATAYDW125DATAZDW MAINPROCNEARMOVAX DATAX Move0215toAXADDAX DATAY Add0125toAXMOVDATAZ AX StoresuminDATAZMOVAX 4C00H EndprocessingINT21HMAINENDPCODESEGENDSENDBEGIN 通常格式 TITLEA05COM2COMprogramtomoveandadddata MODELTINY CODEORG100H StartatendofPSPBEGIN JMPMAIN Jumppastdata DATAXDW215 DatadefinitionsDATAYDW125DATAZDW MAINPROCNEARMOVAX DATAX Move0215toAXADDAX DATAY Add0125toAXMOVDATAZ AX StoresuminDATAZMOVAX 4C00H EndprocessingINT21HMAINENDPENDBEGIN 简化格式 com文件的汇编连接 AprogramsC ml AT Fl FmA05COM2 ASM Microsoft R MacroAssemblerVersion6 11Copyright C MicrosoftCorp1981 1993 Allrightsreserved Assembling A05COM2 ASMMicrosoft R SegmentedExecutableLinkerVersion5 31 009Jul131992Copyright C MicrosoftCorp1984 1992 Allrightsreserved ObjectModules obj A05COM2 obj tRunFile A05COM A05COM ListFile nul map A05COM2 map mLibraries lib DefinitionsFile nul def 参数 AT 产生com格式的可执行文件 Fl 产生列表文件 Fm 产生映像文件 4DEBUG程序跟踪调试 AssemblyLanguageProgramming 基本命令的使用 DEBUG是我们学习汇编语言的调试工具 所有的命令不区分大小写所有的输入数据都默认十六进制的 不用H结尾C DEBUG C DEBUGfile exe R检查寄存器 C DEBUG R AX 0000BX 0000CX 0000DX 0000SP FFEEBP 0000SI 0000DI 0000DS 0AC4ES 0AC4SS 0AC4CS 0AC4IP 0100NVUPEIPLNZNAPONC0AC4 0100F6C280TESTDL 80 RF标记寄存器 RF列举出标志寄存器的各个位状态 OF溢出 是 否 OVNVDF方向 减量 增量 DNUPIF中断 允许 关闭 EIDISF符号 负 正 NGPLZF零 是 否 ZRNZAF辅助进位 是 否 ACNAPF奇偶 偶 奇 PEPOCF进位 是 否CYNC D检查内存内容 使用的格式 Dstartingaddress length 开始的地址 segment offset采用默认DS的偏移地址offset例如 D0000 DDS 0000 D0100L5 E编辑机器指令程序 C DEBUG ECS 100B82301052500 ECS 1068BD803D88BCB ECS 10C2bc82bc0ebee DCS 100 0B00 0100B823010525008BD8 03D88BCB2BC82BC0 0B00 0110EBEEC3750580CF80 EBD43C0D3400EF0A u 4 0B00 0120013A0602967503E9 1701B23A3814751D u 8 u U反汇编 采用U反汇编机器程序例如 反汇编刚才的机器指令 U1000B05 0100B82301MOVAX 01230B05 0103052500ADDAX 00250B05 01068BD8MOVBX AX0B05 010803D8ADDBX AX0B05 010A8BCBMOVCX BX0B05 010C2BC8SUBCX AX0B05 010E2BC0SUBAX AX0B05 0110EBEEJMP01000B05 01123EDS 0B05 01133299C606XORBL BX DI 06C6 0B05 01173499XORAL 99 T跟踪执行指令 命令T执行CS IP指向的一条指令 RAX 0000BX 0290CX 0148DX 0000SP FFFEBP 0000SI 0000DI 0000DS 0B05ES 0B05SS 0B05CS 0B05IP 0100NVUPEIPLZRNAPENC0B05 0100B82301MOVAX 0123 TAX 0123BX 0290CX 0148DX 0000SP FFFEBP 0000SI 0000DI 0000DS 0B05ES 0B05SS 0B05CS 0B05IP 0103NVUPEIPLZRNAPENC0B05 0103052500ADDAX 0025 TAX 0148BX 0290CX 0148DX 0000SP FFFEBP 0000SI 0000DI 0000DS 0B05ES 0B05SS 0B05CS 0B05IP 0106NVUPEIPLNZNAPENC0B05 01068BD8MOVBX AX TAX 0148BX 0148CX 0148DX 0000SP FFFEBP 0000SI 0000DI 0000DS 0B05ES 0B05SS 0B05CS 0B05IP 0108NVUPEIPLNZNAPENC0B05 010803D8ADDBX AX R改变寄存器的内容 命令R改变寄存器的内容 在提示符下敲入寄存器的值格式Rregname RAX 0000BX 0290CX 0148DX 0000SP FFFEBP 0000SI 0000DI 0000DS 0B05ES 0B05SS 0B05CS 0B05IP 0100NVUPEIPLZRNAPENC0B05 0100B82301MOVAX 0123 RAXAX0000 1234 RAX 1234BX 0290CX 0148DX 0000SP FFFEBP 0000SI 0000DI 0000DS 0B05ES 0B05SS 0B05CS 0B05IP 0100NVUPEIPLZRNAPENC0B05 0100B82301MOVAX 0123 装入可执行文件 装入可执行文件进行调试命令n指定文件的名称命令l装入文件 N L G指定的断点调试 命令G执行正在调试的程序 一直到指定的断点格式 G 开始地址 断点1 断点2 默认的段寄存器CS例如 G11A从IP的当前指令开始 直到11A A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子支付与网络安全问题:高中信息技术课程教案
- 时装品牌干货知识培训课件
- 自由飞翔的小鸟450字7篇
- 纪检宣传课件
- 山东省济宁市(五四学制)2024-2025学年六年级下学期期末历史试题(含答案)
- 描写春天的中考作文(14篇)
- 品牌宣传与推广执行方案
- 农业种植资源共享和流通合作协议
- 品牌宣传与市场拓展方案
- 2025年嵌入式系统设计师考试嵌入式系统大数据试题
- 《高处作业安全培训》课件
- 垃圾清运合同范本模板建筑
- 合伙开公司必签的五份协议
- Module9 Unit2 Wishing You Happiness Every Day(说课稿)-2023-2024学年外研版(三起)英语六年级下册
- 2024LNG储罐焊缝X射线数字成像检测规范
- DB5117T 22-2020 地理标志产品 米城大米
- 粤沪版物理九年级上册第十二章第1节《认识内能》同步练习
- 采油工培训教学计划
- 设计概论讲课课件(第三版杨晓琪)
- 小学数学分数四则混合运算200题带答案
- 《血管活性药物静脉输注护理》团体标准解读
评论
0/150
提交评论