




已阅读5页,还剩67页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 第4章汇编语言程序设计 2 主要内容 汇编语言源程序的结构汇编语言语句格式伪指令功能调用汇编语言程序设计 3 4 1汇编语言源程序 了解 汇编语言源程序的结构汇编语言语句类型及格式 4 一 汇编语言源程序结构 5 1 汇编语言源程序与汇编程序 汇编语言源程序汇编程序 用助记符编写 汇编程序 汇编语言源程序 机器语言目标程序 源程序的编译程序 6 2 汇编语言程序设计与执行过程 输入汇编语言源程序 EDIT 汇编 MASM 链接 LINK 调试 TD 源文件 ASM 目标文件 OBJ 可执行文件 EXE 最终程序 7 3 汇编语言源程序结构 数据段名SEGMENT 数据段名ENDS附加段名SEGMENT 附加段名ENDS 堆栈段名SEGMENT 堆栈段名ENDS代码段名SEGMENT 代码段名ENDSEND 8 二 汇编语言语句类型及格式 9 1 汇编语言语句类型 指令性语句指示性语句 CPU执行的语句 能够生成目标代码 CPU不执行 而由汇编程序执行的语句 不生成目标代码 10 2 汇编语言语句格式 指令性语句 标号 前缀 助记符 操作数 操作数 注释 指令的符号地址标号后要有冒号 操作码 注释前加分号 11 指示性语句格式 名字 伪指令助记符操作数 操作数 注释 变量的符号地址其后不加冒号 指示性语句中至少有一个操作数 12 3 标号 名字 标号后有冒号 在指令性语句前 名字后不加冒号 在指示性语句前 英文字母 数字及专用字符组成 最大长度不能超过31个 且不能由数字打头 不能用保留字 如寄存器名 指令助记符 伪指令 13 4 操作码 指令码伪指令助记符指示汇编程序要完成的操作 作用 定义变量分配存储单元指示程序开始和结束等 命令CPU要完成的操作 14 5 注释 用分号作为注释的开始 用于说明程序或语句的功能 以便于阅读和理解 15 6 操作数 寄存器存储器单元常量变量或标号表达式 16 常量 数字常量字符串常量例 A MOVAL A 例 ABCD 汇编时被译成对应的ASCII码41H 42H 43H 44H 用单引号引起的字符或字符串 17 变量 代表内存中的数据区 程序中视为存储器操作数变量的属性 变量所在段的段地址变量单元地址与段首地址之间的位移量 字节型 字型和双字型 段值 偏移量 类型 18 表达式 算术运算逻辑运算关系运算取值运算和属性运算其它运算 19 算术运算和逻辑运算符 算术运算符 MOD逻辑运算符AND OR NOT XOR例 MOVAL 8AND4MOVAL 8 4 1 20 关系运算符 表示关系是否成立的运算符参与关系运算的必须是两个数值关系成立 结果 FFFFH关系不成立 结果 0 运算符 EQ NE LT GT LE GE 例 MOVAL 3LT4 21 取值运算符 取得其后变量或标号的偏移地址取得其后变量或标号的段地址 TYPE取变量的类型LENGTH取所定义存储区的长度SIZE取所定义存储区的字节数 用于分析存储器操作数的属性 OFFSET SEG 22 取值运算符例 MOVAX SEGDATAMOVDS AXMOVBX OFFSETDATALEABX DATA 等价于 23 取值运算符例 若BUFFER存储区用如下伪指令定义 BUFFERDW200DUP 0 则 TYPEBUFFER等于2LENGTHBUFFER等于200SIZEBUFFER等于400 24 属性运算符 用于指定其后存储器操作数的类型运算符 PTR例 MOVBYTRPTR BX 12H 25 其它运算符 方括号 段重设符段寄存器名 方括号中内容为操作数的偏移地址 用于修改默认的段基地址 26 4 2伪指令 掌握 伪指令的格式及实现的操作伪指令的应用 27 伪指令 由汇编程序执行的 指令系统 作用 定义变量 分配存储区定义逻辑段 指示程序开始和结束 定义过程等 28 常用伪指令 数据定义伪指令符号定义伪指令段定义伪指令结束伪指令过程定义伪指令宏命令伪指令 29 一 数据定义伪指令 用于定义数据区中变量的类型及大小格式 变量名 伪指令助记符操作数 注释 表示符号地址 定义变量类型 定义变量值及区域大小 30 1 数据定义伪指令助记符 DB定义的变量为字节型DW定义的变量为字类型 双字节 DD定义的变量为双字型 4字节 DQ定义的变量为4字型 8字节 DT定义的变量为10字节型 31 数据定义伪指令例 DATA1DB11H 22H 33H 44HDATA2DW11H 22H 3344HDATA3DD11H 2 22H 33445566H 以上变量在内存中的存放形式 32 数据定义伪指令的几点说明 伪指令的性质决定所定义变量的属性 定义字符串必须用DB伪指令例 DATA1DB ABCD 66H A B C D 41H 42H 43H 44H 66H 33 2 重复操作符 作用 为一个数据区的各单元设置相同的初值目的 常用于声明一个数据区格式 变量名 伪指令助记符nDUP 初值 例 BW20DUP 0 34 3 的作用 表示随机值 用于预留存储空间MEM1DB34H A DW20DUP 预留40个字节单元 每单元为随机值 随机数占1个字节单元 35 数据定义伪指令例 M1DB Howareyou M2DW3DUP 11H 3344HDB4DUP M3DB3DUP 22H 11H 变量在内存中的分区 36 数据定义伪指令例 M1 H o w a M2 11H 11H 00H 44H 33H r e y o u 11H 00H 00H 随机数 M3 11H 22H 11H 22H 11H 22H XX XX XX XX XX XX XX 37 二 符号定义伪指令 格式 符号名EQU表达式操作 用符号名取代后边的表达式 不可重新定义例 CONSTANTEQU100VAREQU30H 99H EQU说明的表达式不占用内存空间 38 三 段定义伪指令 说明逻辑段的起始和结束 说明不同程序模块中同类逻辑段之间的联系形态 39 段定义伪指令格式 段名SEGMENT 定位类型 组合类型 类别 段名ENDS 说明逻辑段的起点 说明不同模块中同名段的组和连接方式 40 定位类型 PARA 段的起点从节边界开始 16个字节为1节 BYTE 段的起点从存储器任何地址开始WORD 段的起点从偶地址开始PAGE 段的起点从页边界开始 256个字节为1页 41 组合类型 与其它模块中的同名段在满足定位类型的前提下具有的组合方式 NONE 不组合PUBLIC 依次连接 顺序由LINK程序确定 COMMON 覆盖连接STACK 堆栈段的依次连接AT表达式 段定义在表达式值为段基的节边界MEMORY 相应段在同名段的最高地址处 42 类别 不同模块连接时将相同类别的段放在连续的内存区域中 43 段定义伪指令例 DATASEGMENTPUBLIC CODE MEM1DB11H 22HDATAENDS 44 四 设定段寄存器伪指令 说明所定义逻辑段的性质格式 ASSUME段寄存器名 段名 段寄存器名 段名 45 五 结束伪指令 表示源程序结束格式 END 标号 46 一个完整源程序结构例 DSEGSEGMENTDATA1DB1 2 DATA2DW1234HDSEGENDSESEGSEGMENTDB20DUP ESEGENDSSSEGSEGMENTSTACK STACK DB200DUP SSEGENDS 47 一个完整源程序结构例 CSEGSEGMENTASSUMECS CSEG DS DSEG ES ESEG SS SSEGSTART MOVAX DSEGMOVDS AXMOVAX ESEGMOVES AXMOVAX SSEGMOVSS AX CSEGENDSENDSTART 源程序代码 48 六 过程定义伪指令 用于定义一个过程体格式 过程名PROC NEAR FAR RET过程名ENDP P162例 过程入口的符号地址 49 七 宏命令伪指令 源程序中由汇编程序识别的具有独立功能的一段程序代码格式 宏命令名MACRO ENDM 宏体 P163例 宏 50 八 其它伪指令 段内程序代码或变量的起始偏移地址格式 ORG表达式例 ORG2000H 计算值为非负常数 ORG 51 其它伪指令 NAME 为目标程序设定一个名字格式 NAME模块名TITLE 为程序清单指定打印标题格式 TITLE标题名 可以缺省 52 4 3功能调用 DOS功能调用BIOS功能调用 53 DOS功能调用 包含多个子功能的功能包 用软中断指令调用 中断类型码固定为21H 各子功能采用功能号来区分 附录D 54 DOS功能调用 设备管理目录管理文件管理其它 55 DOS功能调用 调用格式 MOVAH 功能号INT21H 56 一 单字符输入 调用方法 MOVAH 01INT21H输入的字符在AL中 57 单字符输入例 GET KEY MOVAH 1INT21HCMPAL Y JZYESCMPAL N JZNOJNZGET KEYYES NO 交互式应答程序 58 二 字符串输入 注意问题 调用格式字符输入缓冲区的定义 59 1 调用格式 功能号OAH字符串在内存中的存放地址INT21H AH DS DX 60 2 定义字符缓冲区 用户自定义缓冲区格式 0DH N1 N2 整个缓冲区 最大可键入字符数 实际键入字符数 存放键入的字符 存放字符个数 65533 61 输入字符串程序段 DAT1DB20 20DUP LEADX DAT1MOVAH 0AHINT21H 在数据段中定义 62 输入缓冲区 14H 20个字节 定义后的输入缓冲区初始状态 63 三 单字符显示输出 功能号O2H待输出字符INT21H AH DL 64 单字符显示输出例 MOVAH 02MOVDL 41HINT21H 执行结果 屏幕显示A 65 四 字符串输出显示 功能号O9H待输出字符串的偏移地址INT21H AH DS DX 66 字符串输出显示 被显示的字符串必须以 结束 且所显示的内容不应出现非可见的ASCII码 67 字符串输出显示例 DATASEGMENTMESS1DB InputString 0DH 0AH DATAENDSCODESEGMENT MOVAH 09MOVDX OFFSETMESS1INT21H 68 4 4汇编语言程序设计 设计步骤 根据实际问题抽象出数学模型确定算法画程序流程图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论