资源预览内容
第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
亲,该文档总共7页全部预览完了,如果喜欢就下载吧!
资源描述
第四章 汇编语言程序格式1教学目的:掌握微型汇编语言格式和程序设计方法2教学要求: 熟悉汇编语言程序的结构、语句类型和格式。 熟悉数据项及表达式,要求能明确区分标号和变量。 熟悉各类伪指令,要求掌握常用伪指令格式和应用。 熟悉汇编语言上机过程和 DEBUG 调试 3教学重点: 指令语句格式和伪指令语句格式 汇编语言程序格式。 4掌握难点: 伪指令 伪指令存储器分配技术 5教学进程安排:P102133 6教学方法: 课堂讲授 7教学内容摘要:4.14.1 汇编语言语句格式汇编语言语句格式4.1.14.1.1 语句种类语句种类【例例 4-1】先给出一个完整的汇编语言源程序,该程序的功能是完成两个字节数据相加。 DATASEGMENT;段定义开始(DATA 段) BUF1DB34H;第 1 个加数; BUF2DB2AH;第 2 个加数 SUMDB?;准备用来存放和数的单元 DATAENDS;段定义结束(DATA 段) CODESEGMENT;段定义开始(CODE 段) ASSUMECS:CODE,DS:DATA ;规定 DATA、CODE 分别为数据段和代码段 START:MOVAX,DATA MOVDS,AX;给数据段寄存器 DS 赋值 MOVAL,BUF1;取第 1 个加数 ADDAL,BUF2;和第 2 个加数相加 MOVSUM,AL ;存放结果 MOVAH,4CH ; INT21H;返回 DOS 状态 CODEENDS;段定义结束(CODE 段) ENDSTART;整个源程序结束 从上面这个例子可以看出,汇编语言源程序由若干个语句组成,语句分为如下 2 类。 1指令语句 2伪指令语句4.1.24.1.2 语句格式语句格式指令语句和伪指令语句的格式是类似的,格式如下:名字 操作码 操作数 ;注释 1名字 名字的标识符 名字的定义规则 名字的 2 种主要形式 标号 变量 2.操作码 3.操作数 常数 表达式 算术运算符 逻辑运算符 关系运算符 4.注释项4.24.2 伪指令与伪操作伪指令与伪操作4.2.14.2.1 定义符号的伪指令定义符号的伪指令1. 等值伪指令 EQU 格式: EQU 2. 等号伪指令 = EMP=7 EMP=EMP+1 3. 解除定义伪指令 PURGE 格式:PURGE 4.2.24.2.2 定义数据的伪指令定义数据的伪指令变量 助记符 操作数,操作数 ;注释 功能:为操作数分配存储单元,并用变量与存储单元建立联系。 DB、DW、DD、DQ、DT【例例 4-24-2】操作数可以是常数,或者是表达式 (根据该表达式可以求得一个常数) ,如 DATA_BYTEDB10,4,10H DATA_WORDDW100,100H,-5图图 4.14.1 例例 4-24-2 的汇编结果的汇编结果 DATA_DWDD3C,OFFFDH汇编程序可以在汇编期间在存储器中存入数据, 汇编后的内存分布如图 4.1 所示。 【例例 4-34-3】操作数也可以是字符串,如: MESSAGEDBHELLO 则存储器存储情况如图 4.2所示,而 DB AB 和 DW AB的存储情况则分别如图 4.2和 所示。 【例例 4-4】4-4】操作数?可以保留存储空间,但不存入数据。 如:ABCDB0,?,?,0DEFDW?,52,? 经汇编后的存储情况如图 4.3 所示。0A041064000001FBFF3C000000FDFF0000DATA_BYT EDATA_WOR DDATA_DW10d 410h 100d60d0FFFD h-5100h图图 4.24.2 例例 4-34-3 的汇编结果的汇编结果 【例例 4-5】4-5】 使用 DUP 实现重复定义 ARRAY1DB2DUP(0,1,2,?) ARRAY2DB100 DUP( ? ) 汇编后的存储情况如图 4.4 所示。 由图可见,例 4-5 中的第一个语句和语句 ARRAY1 DB 0,1,2,?,0,1,2,?是 等价的。图图 4.34.3 例例 4-44-4 的汇编结果的汇编结果 图图 4.44.4 例例 4-54-5 的汇编结果的汇编结果4.2.34.2.3 定义程序开始和结束的伪指令定义程序开始和结束的伪指令NAMEMODULE_NAME TITLETEXT END LABEL4.2.44.2.4 指令集选择伪指令指令集选择伪指令.8086 选择 8086 指令系统 .286 选择 80286 指令系统 .286P 选择保护方式下的 80286 指令系统 4.2.54.2.5 地址计数器与对准伪操作地址计数器与对准伪操作 1. 地址计数器$ JNE $+6 【例 4-6】$ 用法示例 ARRAYDW1,2,$+4,3,4,$+4 如汇编时 ARRAY 分配的偏移地址为 0074,则汇编后的存储 区将如图 4.5 所示。 注意:ARRAY 数组中的两个 $+4 得到的结果是不同的,这是 图 4.5 例 4-6 的汇编结果MESSAGE48 45 4C 4C 4F41 4242 41H E L L OA BB A字符串的存储 DB AB DW ABARRAY01 00 02 00 7C 00 03 00 04 00 82 000074100 个字节00 - - 00 - - 34 00 - -ABCDEF52d00 01 02 - 00 01 02 - - -ARRAY1ARRAY2由于$的值是在不断变化的缘故。当在指令中用到$ 时,它只代表该指令的首地址,而与$本身 所在的字节无关。 2. ORG 伪操作ORG 伪操作用来设置当前地址计数器的值,其格式为: ORG CONSTANTEXPRESSION 3. EVEN 伪操作 4. ALIGN 伪操作 ALIGN 伪操作为保证双字类型数组边界从 4 的倍数开始创造了条件,其格式为: ALIGNBOUNDARY 其中 BOUNDARY 必须是 2 的幂,例如: .DATA ALIGN4 ARRAYDB100 DUP(?) 就可保证 ARRAY 的值为 4 的倍数。当然,ALIGN2 和 EVEN 是等价的。4.2.64.2.6 基数控制伪指令基数控制伪指令.RADIXEXPRESSION4.2.74.2.7 过程定义伪指令过程定义伪指令可把具有独立功能的程序段定义为过程,供其它程序调用。 过程定义的语法格式为:PROCNEAR/FAR RET ENDP4.34.3 汇编语言源程序结构汇编语言源程序结构4.3.14.3.1完整段定义的程序结构SEGMENT_NAMESEGMENT SEGMENT_NAMEENDS ASSUME :段名,:段名, ASSUME :NOTHINGSEGMENT 定位类型组合类型 使用类型类别ENDS 1. 定位类型(ALIGN_TYPE) PARA指定段的起始地址必须从小段边界开始,即段起始地址最低位必须为 0。这 样,偏移地址可以从 0 开始。 BYTE该段可以从任何地址开始。这样,起始偏移地址可能不是 0。 WORD该段必须从字的边界开始,即段起始地址必须为偶数。 DWORD该段必须从双字边界开始,即段起始地址的最低位必须为 4 的倍数。 PAGE该段必须从负的边界开始,即段起始地址的最低两个十六进制数位必须为 0(该地址能被 256 整除) 。 定位类型的默认项是 PARA,即若未指定定位类型时,则汇编程序默认为 PARA。 2. 组合类型(COMBINE_TYPE) 组合类型的默认项是 PRIVATE。 3. 使用类型(USE_TYPE) USE16使用 16 位寻址方式。 USE32使用 32 位寻址方式。 使用类型的默认项是 USE16。 4. 类别名(CLASS) 在引号中给出连接时组成段组的类型名。类别说明并不能把相同类别的段合并起来,但在 连接后形成的装入模块中,可以把它们的位置靠在一起。4.3.24.3.2 简化段定义的程序结构简化段定义的程序结构较新版本的汇编程序(MASM5.0 与 MASM6.0)除支持“完整的段定义伪操作”中所讨论的 SEGMENT 伪操作外,还提供了一种新的较简单的段定义方法。 1MODEL 伪操作 MODEL 伪操作的格式如下: .MODEL MEMORY_MODEL , MODEL OPTIONS 2简化的段定义伪操作 3与简化段定义有关的预定义符号 4用 MODEL 定义存储模型时的段默认属性4.3.34.3.3 段组定义的程序结构段组定义的程序结构其格式如下: GRPNAMEGROUPSEGNAME,SEGNAME 其中 GRPNAME 为段组名,SEGNAME 则为段名。4.44.4 汇编语言程序的上机过程汇编语言程序的上机过程在计算机上运行汇编语言程序的步骤是: 1用编辑程序建立 ASM 源文件; 2用 MASM 程序把 ASM 文件转汇编成 OBJ 文件; 3用 LINK 程序把 OBJ 文件转连接成 EXE 文件; 4用 DOS 命令直接键入文件名就可执行该程序。编辑程序 连接程序 汇编程序 文件 EXMP.ASM LINK ASM MASM TASM EDLINE WPS WORD EDIT 文件 EXMP.OBJ (EXMP.LST) (EXMP.CRF) 文件 EXMP.EXE (EXMP.MAP) (EXMP.LIB) DEBUG 出错 出错 出错 出错 操作得到的文件 操作使用的工具 说明: 图图 4.74.7 汇编语言程序的建立及汇编过程汇编语言程序的建立及汇编过程4.4.14.4.1 建立汇编语言的工作环境建立汇编语言的工作环境为运行汇编语言程序至少要在磁盘上提供以下文件: 1编辑程序,如 EDIT.EXE2汇编程序,如 MASM.EXE 3连接程序,如 LINK.EXE 4调试程序,如 DEBUG.COM4.4.24.4.2 汇编语言源程序上机过程汇编语言源程序上机过程1.建立汇编源程序 ASM 文件 2.汇编产生 OBJ 文件 3. 链接产生 EXE 文件 4. 程序的调试和执行 5. 生成 COM 文件4.54.5 动态调试程序动态调试程序 DEBUGDEBUG4.5.14.5.1 DEBUGDEBUG 的启动与退出的启动与退出1.DEBUG 的启动 DEBUG 2.退出 DEBUG 格式 -Q4.5.24.5.2 汇编、执行、跟踪与反汇编汇编、执行、跟踪与反汇编1. A 命令(汇编) 格式:A 2. G 命令(执行) 格式:G= 3. T 命令(跟踪执行) 格式:T= 4. U 命令(反汇编) 格式:U4.5.34.5.3 显示、修改内存和寄存器命令显示、修改内存和寄存器命令1.D 命令(显示内存) 格式:D或 D 2. E 命令(将内容写入内存) 格式:E 3.R 命令(修改寄存器) 格式: R(显示所有寄存器和标志) R 寄存器(显示指定寄存器) RF(显示所有标志)4.5.44.5.4 磁盘文件操作磁盘文件操作1N 命令(命名) 格式:N 2W 命令(写盘) 格式:W 3L 命令(读盘) 格式:L4.5.54.5.5 查找、比较、填充和移动内存命令查找、比较、填充和移动内存命令1. M 命令(移动内存) 格式:M 2. C 命令(比较) 格式:C 3. S 命令(查找) 格式:
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号