




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
汇编语言 第5章 5 18086汇编语言基础5 1 1汇编语言基本语法5 1 2汇编语言语句5 1 3伪指令语句5 1 4宏指令语句 5 2汇编语言程序设计5 2 1顺序程序设计5 2 2分支程序设计5 2 3循环程序设计5 2 4子程序设计5 2 5DOS功能调用 汇编语言的处理过程 1 编写汇编语言源程序 生成扩展名为ASM的汇编源源文件 2 对汇编源程序进行编译 3 对目标文件进行连接 教学进程 5 1 8086汇编语言基础 1 效率低 与人们描述计算过程的需要差距大 2 机器硬件的具体结构联系过于紧密 在一种结构的机器上开发的程序极难移植到另一种不同结构的机器上去 教学进程 5 1 8086汇编语言基础 汇编语言进行程序设计的优点 1 充分利用机器的硬件功能和结构特点 加快程序的执行速度 减少目标程序所占用的存储空间 2 用来编写实时控制程序 实时通信程序 有时也用来编制某些系统软件程序 汇编语言进行程序设计缺点 教学进程 宏指令语句是由编程者按照一定的规则来定义的一种较 宏大 的指令 可包括多条指令或伪指令 汇编语言基本语法 在8086汇编中使用的语句可以分成3种类型 这类指令能够产生目标代码 是CPU可以执行的能够完成特定功能的语句 主要由机器指令组成 在汇编时一条指令语句被翻译成对应的机器码 对应着特定的操作 伪指令语句是为汇编程序和连接程序提供一些必要控制的管理性语句 它不产生目标代码 仅仅在汇编过程中告诉汇编程序应如何汇编 并完成相应的伪操作 5 1 1 教学进程 汇编语言源程序中的语句可以由四项组成 格式如下 名字 操作符 操作数 注释 汇编语言语句 5 1 2 2 操作符可以是指令 伪指令或宏指令的助记符 3 操作数字段是操作符的操作对象 4 注释字段是以 开头的说明部分 可以用英文或者中文书写 1 名字项是程序设计人员自己定义的符号 用于代表内存单元的地址 表示本条语句的符号地址 一般来说 名字可以是标号和变量 统称为标识符 1 汇编语言格式 5 1 2汇编语言语句 教学进程 1 汇编语言格式 标号 标号在代码段中定义 后面跟着冒号标号 变量 变量在数据段或附加数据段中定义 后面不跟冒号 标识符 算术操作符有 和MOD以及SHL 左移 SHR 右移 其中MOD运算是取模运算 即除法之后所得的余数 5 1 2汇编语言语句 2 教学进程 算术操作符 逻辑操作符包括AND OR XOR NOT 逻辑操作符是按位操作的 只能用于数字表达式 5 1 2汇编语言语句 教学进程 3 逻辑操作符 求变量或标号类型值格式 TYPE变量或标号功能 若为变量 则程序将回送该变量以字节数表示的类型 DB为1 DW为2 DD为4 DQ为8 DT为10 若为标号 则程序将回送代表该标号类型的数值 NEAR为 1 FRA为 2 5 1 2汇编语言语句 教学进程 4 数值回送操作符 格式 OFFSET变量或标号功能 返回变量或标号所在段的段内偏移地 5 1 2汇编语言语句 取段基地址格式 SEG变量或标号功能 返回变量或标号所在段的段地址 教学进程 4 数值回送操作符 取地址的偏移量 格式 LENGTH变量功能 如果变量是用DUP说明 则返回DUP定义变量的重复次数 否则 返回值为1 取变量字节数格式 SIZEBIANL1功能 返回变量的字节数 等于LENGTH与TYPE的乘积 教学进程 5 1 2汇编语言语句 4 数值回送操作符 取变量单元数 5 1 2 汇编语言语句 PTR操作符格式 类型PTR符号名功能 该操作符用于指定操作数的类型 属性操作符 教学进程 5 THIS操作符格式 THIS类型功能 把它后面指定的类型或距离属性赋给当前的变量 标号或定制表达式 段操作符格式 段寄存器名 地址表达式功能 用来表示变量或地址表达式的段属性 格式 SHORT标号功能 用来修饰转移指令的目标地址的属性 偏移量为8位 分类运算符格式 HIGH表达式LOW表达式功能 从表达式种分离出高字节 低字节 运算符 EQ 相等 NE 不等于 LT 小于 GT 大于 LE 小于或等于 GE 大于或等于 当关系成立时 运算结果为1 FFH或FFFFH 否则为0 格式 表达式1关系运算符表达式2 SHORT操作符 教学进程 5 1 2汇编语言语句 属性操作符 5 5 1 2 汇编语言语句 运算的优先级别 教学进程 7 EQU等价伪指令格式 符号名EQU表达式功能 用来定义一个符号 用该符号代表机器指令助记符 伪指令助记符 寄存器名字 各种运算符号 常数等 伪指令语句 1 符号定义伪指令 教学进程 5 1 3 等号伪指令格式 符号名 表达式功能 等号伪指令用来定义一个符号 用该符号代表表达式 常数等 5 1 3 教学进程 伪指令语句 续 1 符号定义伪指令 解除符号定义伪指令格式 PURGE符号1 符号2 功能 用来解除之前引用符号的定义 数据定义伪指令有五种 DB DW DD DQ DT和DUP 格式 变量名DB表达式 定义字节变量名DW表达式 定义字变量名DD表达式 定义双字变量名DQ表达式 定义8个字节变量名DT表达式 定义10个字节复制次数DUP表达式功能 其中 DT伪操作指令用来定义10个字节 其后的每个操作数占有10个字节 形成压缩的BCD码 DUP指令可以为若干重复数据分配内存单元 5 1 3伪指令语句 数据定义伪指令 教学进程 2 格式 5 1 3伪指令语句 段定义伪指令 教学进程 3 例 data seg1segment 定义数据段 data seg1ends code segsegment 定义代码段assumeds data seg1 es data seg1assumecs code segstart 程序执行的起始地址movax data seg1 数据段地址movds ax 存入DS寄存器movax data seg1 附加段地址moves ax 存入ES寄存器 code segends 代码段结束 endstart 5 1 3伪指令语句 教学进程 段定义伪指令举例 格式 功能 完成过程定义 在过程体中实现过程的操作功能 5 1 3伪指令语句 过程定义伪指令 教学进程 4 条件汇编有多种伪操作指令 1 IF表达式功能 表达式为1 汇编程序段1 否则跳过 2 IFE表达式功能 表达式为0 汇编程序段1 否则跳过 3 IFB参数功能 参数为空格 汇编程序段1 否则跳过 5 1 3伪指令语句 格式 IF 表达式 程序段1ELSE 程序段2ENDIF 5 教学进程 条件汇编伪指令 4 IFNB参数功能 参数不为空格 汇编程序段1 否则跳过 5 IFIDN参数1 参数2功能 字符串参数1与字符串参数2相同 汇编程序1 否则跳过 5 1 3伪指令语句 教学进程 条件汇编有多种伪操作指令 续 5 条件汇编伪指令 格式 宏指令名MACRO 形式参数1 形式参数2 ENDM其中 MACRO和ENDM是一对伪操作 宏指令语句 1 宏指令的定义 教学进程 5 1 4 5 1 4 宏指令语句 MINCL SI DI 把由SI和DI间接寻址的两个内存单元中 不带符号数中小的送入CL 汇编后展开 PUSHAX MOVAL SI 实参 SI 替换形参SR1 CMPAL DI 实参 DI 替换形参SR2 JNB 00 符合地址ADDR被 00替换 MOVAL DI 00 MOVCL AL 实参CL替换形参DES POPAX 号代表宏展开的语句 教学进程 宏调用举例 5 1 4 宏指令语句 格式 LOCAL符号地址1 符号地址2 这些符号地址在宏展开时 由汇编程序重新命名 局域符号定义 例 宏定义可以无参数宏定义 SAVEREGMACROPUSHAXPUSHBXPUSHCXPUSHDXENDM宏调用 SAVEREG 教学进程 2 例 宏定义参数可以时操作码宏定义 REGINCMOCROP1 P2 P3MOVAX P1P2P3ENDM宏调用 REGINCIVAR1 INC AX宏展开 MOVAX IVAR1 INCAX 5 1 4 宏指令语句 伪操作PURGE可以取消宏定义宏定义 ADD2MACROOPTR1 OPTR2 RESULTMOVAX OPTR1ADDAX OPTR2MOVRESULT AXENDM宏调用 ADD2XX YY ZZPURGEADD2 教学进程 伪操作PURGE 汇编语言程序设计 5 2 1 顺序程序设计 例 计算 Y 5X 8 设X为无符号字节数据 且在ARGX单元存放 计算结果 存入RLTY单元 教学进程 5 2 SSEGSEGMENTSTACK 堆栈段开始STKDB20DUP 0 SSEGENDS 堆栈段结束DSEGSEGMENT 数据段开始ARGXDB15RLTYDW0DSEGENDS 数据段结束CSEGSEGMENT 代码段开始ASSUMECS CSEG DS DSEGASSUMESS SSEG CALC MOVAX DSEGMOVDS AXMOVAX SSEGMOVSS AXMOVSP LENGTHSTKMOVAL ARGX 取原始数MOVBL 05MULBL 计算5x MOVBX 08ADDAX BX 再加上8MOVRLTY AX 保存结果MOVAX 4C00HINT21HCSEGENDSENDCALC 教学进程 顺序程序设计举例 续 分支程序设计举例 设内存中有三个互不相等的无符号字数据 分别存放在ARG开始的字单元 编制程序将其中最大值存入MAX单元 分支程序设计 教学进程 5 2 2 SSEGSEGMENTSTACKSTKDB20DUP 0 SSEGENDSDSEGSEGMENTARGDW7138H 84A6H 29EHMAXDW DSEGENDSCSEGSEGMENTASSUMECS CSEG DS DSEGASSUMESS SSEG START MOVAX DSEGMOVDS AXMOVAX SSEGMOVSS AXMOVSP SIZESTKLEASI ARG 取数据首址MOVAX SI 取第1个数MOVBX SI 2 取第2个数CMPAX BX 两数比较JAEFMAX1 AX中的数大MOVAX BX 大数送AXFMAX1 CMPAX SI 4 大数与第3个数比较JAEFMAX2 AX中的数大MOVAX SI 4 第3个数大FMAX2 MOVMAX AX 保存最大值MOVAX 4C00HINT21HCSEGENDSENDFSTART 教学进程 分支程序设计举例 续 循环程序设计 1 循环的结构形式 教学进程 5 2 3 5 2 3 循环程序设计 例 内存DATA开始存放100个单字节数据 编写程序统计这些数据内所有为 1 的位的个数 将结果存入NUMB单元 完成此例需要统计每一个字节数据中 1 的个数 可以用右移指令把该数据的各位逐个移到进位标志位CF中 当CF 1 计数器值加1 直到100个数据检查完毕 2 教学进程 循环程序的设计方法 5 2 3 循环程序设计 源代码清单 SSEGSEGMENTSTACK开始STACKDW100DUP 0 SSEGENDSDSEGSEGMENTASSUMECS CSEG DS DSEGASSUMESS SSEGSTART MOVAX DSEGMOVDS AXMOVAX SSEGMOVSS AXMOVSP SIZESTACKMOVSI OFFSETDATAMOVCL 100XORAL AL 教学进程 5 2 3 循环程序设计 LOOP2 MOVCH 08HXORBH BHMOVAH SI LOOP1 RORAH 1JNCCHT1INCBHCHT1 DECCHJNZLOOP1INCSIDECCHJNZLOOP2MOVDNUMB BHMOVAH 4CHINT21HCSEGENDSENDSTART 教学进程 格式 过程名PROC属性 过程名ENDP 过程名为标识符 它又是子程序入口的符号地址 与标号的作用相同 属性 Attribute 是指类型属性 可以是NEAR或FAR 用户对过程属性的确定原则很简单 即 1 如果调用程序和过程在同一个代码段中 则使用NEAR属性 2 如果调用程序和过程不在同一个代码段中 则使用FAR属性 一般子程序有五部分组成 子程序设计 1 过程定义 教学进程 5 2 4 5 2 4 子程序设计 现场 主程序在调用子程序前可能在CPU寄存器和内存中存有一些有用的数据 这些数据就是调用前的现场 现场保护 在子程序的执行过程中很可能会改表这些单元的内容 因此在子程序开始执行前 把主程序中有用的数据先保存到堆栈中 这向工作称为现场保护 恢复 为使子程序返回到主程序后 主程序能够在原有环境下继续执行 必须将现场保护时保存在堆栈中的现场数据重新恢复 2 教学进程 现场的保存与恢复 5 2 4 子程序设计 子程序调用除一般的简单调用外 还可以嵌套调用 递归调用 在子程序执行完毕后 必须回到调用它的主程序 因此 在每个子程序结束时必须有返回指令 返回指令为RET 3 教学进程 子程序的调用和返回 5 2 4 子程序设计 4 例 十进制到十六进制数转换程序 程序要求从键盘取得一个十进制数 然后把该数以十六进制形式在屏幕上显示出来 CSEGsegmentssumeCSCSEGmainprocfar 程序的主要部分START calldecibin 调用子程序decibincallcrlf 调用子程序crlfcallbinihex 调用子程序binihex 教学进程 程序举例 callcrlfjmprepeatmainendpdecibinprocnear 子程序decibinmovbx 0newchar movah 1int21h 从键盘接收单个字符 非0 9之间的数退出subal 30hjlexitcmpal 9djgexitcbw al扩展到ax BX中的数乘以10 xchgax bxmovcx 10dmulcxxchgax bx 5 2 4子程序设计 教学
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中培训燃气知识课件
- 高一物理课件教学
- 离婚抚养权纠纷调解及子女成长环境协议
- 离婚协议书房产转让及子女抚养协议书
- 生态酒店精装修设计施工及环保设施采购合同
- 环保企业环境数据安全保密及污染防控协议
- 工业园区租赁厂房安全监管与维护协议
- 学校物业服务合同履行校园安全担保协议
- 乌鲁木齐市住宅小区租赁及社区文化活动组织合同
- 私房房屋买卖合同范本附带房屋产权清晰确认协议
- 2025-2026学年人教版(2024)初中生物八年级上册教学计划及进度表
- 2025广西公需科目培训考试答案(90分)一区两地一园一通道建设人工智能时代的机遇与挑战
- 《峨日朵雪峰之侧》教案
- 无机化学电子教案配习题和答案下载地址
- 日语N3听力词汇
- 火灾自动报警系统PPT课件
- 高压氧质控标准
- 储粮熏蒸杀虫技术
- 1000以内的竖式加减法(共21页)
- 钢桁梁监理实施细则1
- SF_T 0114-2021 生物检材中吗啡、O6-单乙酰吗啡和可待因的检验方法_(高清版)
评论
0/150
提交评论