汇编上级环境.ppt_第1页
汇编上级环境.ppt_第2页
汇编上级环境.ppt_第3页
汇编上级环境.ppt_第4页
汇编上级环境.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

汇编语言上机调试环境 编程和上机调试环境一 DEBUG环境1 进入DEBUG环境在系统的MS DOS环境下 键入DEBUG 在DEBUG环境中 默认的数制为十六进制 只能使用数字地址 2 DEBUG常用命令1 显示存储单元中的数据 D Dump D默认显示从0100H开始的数据 D地址显示从当前地址开始的80H个字节单元中的数据 例如 D0100 D地址范围例如 D01000120 D地址L长度例如 D0100L20 2 修改存储单元内容 E Enter 和F Fill E地址内容列表以指定的内容修改指定范围存储单元的内容 例如 EDS 010012 ABC 8D则修改了自0100H单元开始的5个字节单元的内容 E地址逐个单元修改 例如 EDS 0100系统显示原来该单元中的数据 可以在显示原数据之后键入修改内容 键入空格键 可以继续修改下一个字节单元的内容 直到键入回车键为止 F地址L长度内容列表例如 F0100L512 ABC 34 F地址范围内容列表例如 F01000120 ABCDEF 3 检查和修改寄存器的内容 R R显示所有的寄存器内容和标志位的状态 DEBUG环境中标志位状态的表示方法 R寄存器显示和修改某个寄存器的内容 例如 RBX RF显示和修改标志位的状态 4 运行 G 起始地址 断点地址 断点地址 由起始地址或当前的CS IP开始 运行至指定的断点 并显示所有寄存器和标志位的值 5 单步运行 T 起始地址 自起始地址处开始逐条执行指令 子程序中的指令也会逐条执行 P 起始地址 自起始地址处开始逐条执行指令 子程序调用作为一条指令 6 汇编 A A 起始地址 自指定的起始地址处可以输入汇编语言的指令 7 反汇编 U U 起始地址 从指定的地址或者接着上一次的地址反汇编32个字节 U地址范围对指定范围的地址进行反汇编 U地址L长度从指定的地址处开始反汇编L个地址单元 二 宏汇编环境1 利用编辑软件编制汇编语言源文件 例如 使用EDIT编辑软件 原文件的扩展名为 asm例 edita1 asm2 利用MASM EXE汇编源文件 生成 OBJ目标文件 例 masma1 asm回车后生成a1 obj文件 3 利用LINK EXE连接目标文件 生成 EXE可执行文件 例 linka1 obj回车后生成a1 exe文件 4 2伪指令伪指令 汇编程序在汇编期间处理的操作 二 表达式赋值伪指令1 EQU格式 符号名EQU表达式例如 MAX VALEQU1002 格式 符号名 表达式例如 MIN VAL 10注 EQU 与 的区别 EQU不允许对同一个符号名进行重复赋值 三 定义存储单元伪指令DB 定义一个字节单元DW 定义一个字单元DD 定义一个双字单元DQ 定义一个四字单元DT 定义一个十字节单元格式 变量名 DB变量初值例如 VAL1DB12H 34HVAL2DW1234H 1 单元初值为 空 的表示方法使用 来代替具体的初值 例如 VAL3DB 2 多个单元的定义格式 变量名 DB单元个数DUP 初值 例如 VAL4DB5DUP 0 VAL5DW3DUP 四 指明存储单元类型伪指令1 指明数据类型BYTE WORD DWORD例如 MOVBYTEPTR BX 02 指明地址类型SHORT NEAR FAR例如 CALLFARPTRSUBR1 五 过程定义伪指令格式 过程名PROCNEAR FAR 过程名ENDP当过程的定义和调用在同一个段中时 使用NEAR属性 当过程的定义和调用不在同一个段中时 使用FAR属性 六 段定义伪指令一 完整段定义1 格式 段名SEGMENT 定位类型 组合类型 类别 段名ENDS 2 定位类型 段从具有何种特征的物理地址处开始 1 PARA 隐含类型 段从小段边界 PA能被16整除 开始 2 PAGE 段从页边界 PA能被256整除 开始 3 WORD 段从字边界 偶数地址 开始 4 BYTE 段可以从任何地址开始 3 组合类型 连接类型 不同程序模块中的相同名字的段以何种方式连接 1 PUBLIC 几个段首尾相连 2 COMMON 几个段从共同的起始地址开始覆盖 3 STACK 表明该段为堆栈段 系统对SS和SP赋值 4 AT表达式 利用表达式指明段地址 偏移地址为零 5 MEMERY 与PUBLIC相同 若在段的定义中未指明组合类型 则表示该段为独立的段 不与任何的其他分段连接 3 类别 具有相同类别名字的段放在连续的存储空间 格式 类别名 例如 代码段均用 CODE 4 指定分段寄存器伪指令格式 ASSUME段寄存器 段名 组名例如 ASSUMECS CODE DS DATA 二 简化段定义只能用于MASM5 0以上版本 不能用于 COM文件 便于汇编语言模块与其他语言模块的连接 1 指定段次序格式 DOSSEG用于主模块前面 各个分段在内存中的顺序按照DOS段次序约定排列 2 指定内存模式格式 MODEL模式类型指定使用的数据段和代码段的个数和长度 TINY 所有的段都在一个物理段区域之内 只有一个段 整个文件最大长度为64KB 即 COM格式 FLAT 32位操作系统模式 只有一个段 但段的最大长度为4GB 二 简化段定义只能用于MASM5 0以上版本 不能用于 COM文件 便于汇编语言模块与其他语言模块的连接 1 指定段次序格式 DOSSEG用于主模块前面 各个分段在内存中的顺序按照DOS段次序约定排列 2 指定内存模式格式 MODEL模式类型指定使用的数据段和代码段的个数和长度 TINY 所有的段都在一个物理段区域之内 只有一个段 整个文件最大长度为64KB 即 COM格式 FLAT 32位操作系统模式 只有一个段 但段的最大长度为4GB SMALL 小模式 一个数据段 一个代码段 MEDIUM 中模式 一个数据段 多个代码段 COMPACT 压缩模式 多个数据段 一个代码段 LARGE 大模式 多个数据段 多个代码段 HUGE 巨模式 多个数据段 多个代码段 并且允许使用大于64KB的数据语句 3 堆栈段语句格式 STACK 字节长度个数 隐含段名为 STACK 定位类型为PARA组合类型为STACK 类别标志符为 STACK 隐含长度为1024字节 4 代码段语句格式 CODE 名字 只有一个代码段时 隐含段名为 CODE 定位类型为WORD 组合类型为PUBLIC 类别标志符为 CODE 5 初始化的近程数据段格式 DATA隐含段名为 DATA 定位类型为WORD 组合类型为PUBLIC 类别标志符为 DATA 6 未初始化的近程数据段格式 DATA 隐含段名为 DATA 定位类型为WORD 组合类型为PUBLIC 类别标志符为 BSS 7 常数段格式 CONST隐含段名为 CONST 8 隐含的GROUP操作DGROUPGROUP DATA CONST DATA STACK9 隐含的ASSUME操作小模式 压缩模式 ASSUMECS CODE DS DGROUP SS DGROUP当不与高级语言连接时 可以不区分初始化的 未初始化的变量和常数数据 都可以在 DATA中使用 例如 DOSSEG MODELSMALL STACK DATAMSGDB HELLO WORLD CODESTART MOVAX DGROUPMOVDS AXLEADX MSGMOVAH 9INT21HMOVAX 4C00HINT21HENDSTART 八 注释和标记符1 注释1 COMMENT 注释 2 注释2 标记符1 续行 例如 DATADW12 34 562 语句间隔符 例如 MOVAX DATA MOVDS AX 九 运算符1 分析运算符1 取当前地址计数器的值 例如 VALDW12H 34HNUMEREQU VAL2 取段地址值 SEG例如 MOVAX SEGVAL3 取有效 偏移地址 OFFSET例如 MOVBX OFFSETVALLEABX VAL 4 取定义的变量个数 LENGTH5 取定义的字节个数 SIZE6 取定义的变量的类型的字节个数 TYPE类型BYTEWORDDWORDNEARFARTYPE124 1 2例如 VALDW5DUP MOVAX LENGTHVALMOVBX SIZEVALMOVCX TYPEVAL 2 综合运算符1 指定数据或地址类型 PTR2 重新指定变量类型 THIS LABEL例如 VAL BEQUTHISBYTEVALDW1234H VAL BLABELBYTEVALDW1234H十 程序结束END 标号 十一 短寄存器的装入ASSUME伪指令只建立了当前段与段寄存器之间的联系 并没把各段的段基值装入相应的段寄存器中 段寄存器的装入是用程序的方法 1 DS和ES的装入在程序中 引用段名就是以立即数形式获取该段的段基址 而立即数不能送给段寄存器 所以段基址要经过寄存器送给ES DS 例如 DATA1SEGMENT DATA1ENDSDATA2SEGMENT DATA2ENDSCODESEGMENTASSUMECS CODE DS DATA1 ES DATA2A1 MOVAX DATA1 段基址送寄存器MOVDS AX MOVAX DATA2 MOVES AX CODEENDSENDA1 2 堆栈段SS的装入 两种方法 1 在段定义伪指令的组合类型选择 STACK 参数 在段寻址伪指令 ASSUME 语句中把段名指派给段寄存器SS STACK1SEGMENTPARASTACKDW40HDUP STACK1ENDS COCESEGMENTASSUMECS CODE SS STACK1 CODEENDS用DEBUG演示TE13 EXE这样 目标程序装入存储器后 SS中自动装入段基址 堆栈指针SP也自动装入栈顶的值 2 若末在段定义伪指令中选用组合类型STACK项 则必须用程序的方法装入段寄存器SS和堆栈指针寄存器SP 例如 STACK1SEGMENTDW40HDUP TOPLABLEWORD 或TOPDW STACK1ENDS CODESEGMENTASSUMECS CODE SS STACK1A1 MOVAX STACK1MOVSS AX 在下一语句间不能插入其他语句MOVSP OFFSETTOP CODEENDSENDA1 DEBUG调试TE14 EXE 3 代码段CS的装入 CS是当前执行目标代码的段基址 而IP提供下一条指令的偏移量 为保证程序的正确装入 CS和IP的新值必须一起装入 通常用两种方法装入CS和IP的值 1 按程序结束伪指令指定的地址装入CS和IP任何一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论