计算机应用基础4-2.ppt_第1页
计算机应用基础4-2.ppt_第2页
计算机应用基础4-2.ppt_第3页
计算机应用基础4-2.ppt_第4页
计算机应用基础4-2.ppt_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1 六 过程定义伪操作格式过程名PROC类型 过程名ENDP过程定义由伪操作PROC开始 ENDP结束 其中 PROC和ENDP必须成对出现 且语句前必须有过程名 过程名必须相同 PROC和ENDP语句之间为子程的指令序列 程序中可以定义多个过程 程序经汇编 连接及装入内存后 过程名为一具体的内存地址 指示子程入口 2 过程名常用作CALL调用指令的操作数 子程的最后安排RET返回指令 使执行完子程后能返回调用处 过程有两种类型 NEAR和FAR无类型项时 默认为NEAR类型 当过程与调用指令不在同一段时 应将过程定义为FAR类型 过程类型决定子程中RET的返回类型 3 4 汇编语言程序举例三 5 七 等值定义伪操作格式符号名EQU需等值的表达式作用是用符号名等值指定的表达式 但它不申请存储单元其中 表达式可以是任何有效的操作数汇编时用语句中的表达式代替程序中符号所在的地方 应用 1 定义符号常量 方便修改程序 2 某表达式多次出现时 用等值伪操作可以方便编程 例如 为常量定义符号名 THREEEQU3为地址表达式定义符号名 ADDREQUES BP 6 EQU与属性运算符PTR或THIS联合使用 可以给变量或标号定义新的类型属性并重新命名 但保持其段偏移地址属性不变 例如 与PTR连用定义新的名字和属性 TWOBDW ONEBEQUBYTEPTRTWOB与THIS连用定义新符号名 DATABEQUTHISBYTEDATAWDW20DUP 利用EQU可以用一个符号名替代一个复杂的地址表达式和其他一些符号 如指令助记符 变量名 标号 段名 寄存器名 宏定义名等 例如 为汇编语言的各种符号定义别名 CBDEQUADD 7 例 比较 THREEEQU3MOVAL THREEMOVBL THREE 1THREEDB8 10MOVAL THREEMOVBL THREE 1 MOVAL 3 MOVAL 4 MOVAL 08H MOVBL 0AH K1EQU2K1EQUK1 1 8 等号伪指令 格式 符号名 表达式功能 为常量 表达式及其他各种符号定义一个等价的符号名 并能对所定义的符号多次重复定义 且以最后一次定义的值为准 而EQU不可以重复定义一个符号名 例 定义等价符号名 LOST 20M MOVLOST LOST 10 30 LOSTM ADD M ADD 9 定义符号名伪指令 格式 变量名或标号LABEL类型功能 把变量按LABEL后面的类型处理 是改变变量类型的新方法 通常与数据定义伪指令连用 其功能类似语句 变量名或标号EQUTHIS类型 1 用于标号 类型为NEAR或FAR 例ENSUB FARLABLEFAR 定义ENSUB FAR为FAR标号 其地址为LABEL语句的下一条语句地址ENSUBENSUB MOVBX 2000H 定义ENSUB为NEAR标号 二者指向同一标号 但ENSUB只能用于段内转移 ENSUB FAR用于段间转移 2 用于变量 类型为BYTE WORD或DWORD DATABLABLEBYTE 两者为同一个存储单元DATAWDW100DUP 两个变量名字 10 实现用二进制显示中断向量表中数据D0H的个数 分析 中断向量表指内存0 0 0 3FFH大小400H 即1K 字节空间 查找关键字D0H 将关键字的个数 存放在BX中 采用二进制显示BX内容 16个字符 采用子程调用结构 11 12 利用汇编语言程序结构例二 子程结构 用二进制显示中断向量表中数据D0H的个数 keyEQUD0H 用符号表示常量 关键字 codeSEGMENT 代码段开始ASSUMECS codebegin MOVAX 0000HMOVDS AXMOVSI 0000HMOVCX 0400HMOVBX 0MOVAL keynext CMP SI ALJNZpointINCBXpoint INCSILOOPnextCALLdisplay 调用显示子程MOVAH 4CH 返回DOSINT21H 用二进制显示BX内容子程displayPROCMOVCX 16rotate ROLBX 1MOVDL BLANDDL 01HADDDL 30HMOVAH 2HINT21HLOOProtateRET 子程返回displayENDPcodeENDS 代码段结束ENDbegin 指示程序结束和 程序入口 13 14 请上机自己调试该程序 15 例 用CMP指令在中断向量表中查找从键盘输入的字符 并将其个数用二进制形式显示出来 scanskey asm 16 例 用LODSB在中断向量表中查找从键盘输入的字符 并将其个数用二进制形式显示出来 scanskey asm 用LODSB改写程序 17 八 数值回送操作符 TYPE LENGTH SIZE OFFSET SEG5种 把一些特征或存贮器地址的一部分作为数值回送 TYPE格式 TYPEvariable变量或label标号回送该变量的以字节数表示的类型 DB为1 DW为2 DD为4 DQ为8 DT为10 回送标号类型数值 NEAR为 FAR为 2 例 ARRAYDW1 2 3ADDSI TYPEARRAY汇编程序其形式 ADDSI 2 18 LENGTH格式 LENGTHvariable对于变量中使用DUP 汇编回送分配给变量单元数 其他情况回送1 例 FESSDW100DUP 0 MOVCX LENGTHFESS汇编程序将其形成 MOVCX 100ARRAYDW1 2 3MOVCX LENGTHARRAY汇编程序将其形成 MOVCX 1TABLEDB ABCD MOVCX LENGTHTABLE汇编程序使其形式 MOVCX 1 19 SIZE格式 SIZEvariable回送分配给该变量的字节数LENGTH TYPE例 FEESDW100DUP 0 MOVCX SIZEFEES将形成 MOVCX 200例 TABLEDB ABCD MOVCX SIZETABLE将形成 MOVCX 1例 ARRAYDW1 2 3MOVCX SIZEARRAY将形成 MOVCX 2 20 小小结 TYPE变量的返回值是类型的字节数 DB为1 DW为2 DD为4 DQ为8 DT为10 TYPE标号的返回值是 NEAR为 1 FAR为 2 LENGTH变量返回 DUP分配的单元数 对于其他情况则返回1 SIZE返回值是 LENGTH和TYPE值的乘积 即变量的字节数 21 字节分离运算符字节分离运算符包括 HIGH和LOW 格式 HIGH常量或地址表达式LOW常量或地址表达式功能 HIGH用来分离出其后16位常量或地址表达式的偏移量的高字节 LOW用来分离出其后16位常量或地址表达式偏移量的低字节 22 运算符的优先级 23 附加 宏指令 在汇编语言程序设计过程中 可以将具有一定功能 需多次重复使用 且比较短的程序段定义成一条宏指令 使用宏指令语句可以减少程序书写错误 缩短源程序长度 使源程序编写像高级语言一样清晰 简洁 特别是使用宏库后 可以提高编程效率 24 宏指令与过程的区别 1 宏调用语句由MASM识别并处理 调用过程的CALL语句由CPU执行 2 每次调用宏指令都要汇编成机器码插入其所在位置 占用内存空间 过程在存储器中只保留一份 3 宏调用执行速度快 过程由于要保存和恢复断点会降低速度 4 宏调用允许修改参数 灵活方便 过程在每次调用中只完成完全相同的功能 25 宏指令的使用步骤 1 宏定义 将语句序列定义成宏指令 2 宏调用 在程序需要的地方 通过宏指令来调用宏定义 3 宏扩展 由宏汇编程序用宏定义中的语句序列代替宏指令 26 1 宏定义 1 带参宏定义宏指令名MACRO形参1 形参2 宏体 指令序列 ENDM形式参数亦称为虚参数 哑元 程序设计时宏定义置于所有段之前 2 无参宏定义宏指令MACRO宏体 指令序列 ENDM 例如 PRINTMACROXLEADX XMOVAH 9INT21HENDM 27 2 宏调用 格式 宏指令名 实参1 实参2 注 若实参数比形参数多 多余的实参数被忽略 若少 多余的形式参数用 空白串 取代 调用一般置于代码段中 例如 对上面的宏定义的三种调用形式为 PRINTBUF1 PRINTBUF2 PRINTBUF3 28 3 宏扩展 LEADX BUF1 MOVAH 9 INT21H LEADX BUF2 MOVAH 9 INT21H LEADX BUF3 MOVAH 9 INT21H 上面三次宏调用 其展开的形式为 29 取消宏定义PURGE宏指令名 宏指令名 退出宏定义EXITM 终止以后的宏扩展 30 宏指令应用 1 宏指令参数可以是操作码 例宏定义 FUNMACROV1 V2 V3V3V1 V2ENDM宏调用 FUNAX DX ADD宏展开 完成AX与DX相加 可在列表文件中观察 ADDAX DX 31 2 特殊符号 用于把操作码的一部分作参数 例宏定义 LEAPMACRODATA CONCMPAX DATAJ CONLOOPENDM宏调用 LEAPDX NE宏展开 CMPAX DXJNELOOP 32 3 特殊符号 在宏展开时用实参的值代替形参 例 宏定义 DATAMACROA

温馨提示

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

评论

0/150

提交评论