CH4(2) 汇编语言程序设计.ppt

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编语言程序设计 4.0 概述 4.1 汇编语言程序格式 4.2 MASM中的表达式 4.3 伪指令语句 4.4 程序设计方法 4.5 DOS系统功能调用 4.4 程序设计方法 一、汇编语言源程序设计基本步骤 1、明确任务,确定算法。 2、画流程图。 3、分配存储空间及工作单元 分析需要定义的段、变量、变量类型、长度;规划各寄存器的使用等 4、编写源程序(.ASM)、汇编(.OBJ)、连接(.EXE)。 5、程序调试。主要采用DEBUG来调试。 二、基本程序结构 顺序结构 分支结构 循环结构 子程序结构 顺序结构 分支结构 循环结构 子程序结构 顺序结构 分支结构 循环结构 子程序结构 顺序结构 分支结构 循环结构 子程序结构 顺序结构 分支结构 循环结构 子程序结构 1、顺序结构 例1:已知当前数据段中有一个十进制数字0~9的七段代码表,其数值依次为40H、79H、24H、30H、19H、12H、02H、78H、00H、18H。要求用XLAT指令将十进制数57转换成相应的七段代码值,存到BX寄存器中,编写完整的汇编源程序。 分析:先求5的七段代码值,再求数字7的; 需定义数据段、七段代码表:TAB,字节变量; 关键指令XLAT,表偏移地址放BX,原数字放入AL; 2、分支结构 程序根据不同条件选择不同处理方法 3、循环结构 两种形式: 1)“先执行,后判断” :进入循环后至少要执行一次循环体,再判断循环是否结束。 ---用于循环次数固定的程序(掌握) 2)“先判断,后执行”:进入循环后,先判断循环结束条件,再决定是否执行循环体,可能循环体一次也不执行。 ---用于循环次数不确定的程序 两种循环结构都包括四部分: 1)初始化---设置计数值、地址指针 2)循环体 ---循环部分的核心:循环的全部执行指令 3)修改参数---改地址指针,为下次循环做准备 4)循环控制---修改计数值,进行判断(LOOP) 思考: 1、若为无符号数? 2、若要求原数据不变? 3、优化算法? 4、将排好序的数送到附加段的COPY单元? 4、子程序结构 子程序:将多次使用的程序语句写成一个相对独立的程序段,称为子程序或过程。 子程序结构的定义: 使用过程定义语句PROC…ENDP。 子程序属性: 调用程序和过程在同一代码段中,则用NEAR属性; 调用程序和过程不在同一代码段,使用FAR属性。 过程调用和返回 调用指令:CALL 过程名 返回指令:RET 子程序说明: ⑴功能描述:名称,功能 ⑵子程序中用到的寄存器和存储单元 ⑶子程序的入口参数,出口参数 ⑷调用其它子程序的名称 子程序结构 段内调用格式 子程序结构 段间调用格式 过程设计注意以下三点: ⑴保护调用程序的断点:由CALL指令本身完成。 ⑵保护某些寄存器内容: 在子程序开头,用一组PUSH指令,保护寄存器原来的内容;在子程序结尾,用一组POP指令,将寄存器原来的内容恢复。 ⑶主程序和过程(子程序)间的参数传递。 入口参数:过程所需的初始数据。 (调用时) 出口参数:过程运行所得结果。 (返回时) 参数传递常用的方法: ①用寄存器传递参数:参数较少,速度较快。 ②用存储器传递参数:参数较多; 调用前,将参数存入内存,将参数首地址送入某一寄存器(BX、SI、DI、BP)。进入过程后可采用寄存器间接寻址方式从内存中取出。 ③用堆栈传递参数:参数较多,多用在子程序嵌套与递归调用中。 例6:数据段定义两个字型数组,编程序实现数组分别求和(不计溢出),要求用子程序实现求和。 解:通过存储器来传递参数。子程序说明如下: 子程序名:SUB_SUM 功 能:求一组数之和 所用 REG:AX 入口参数:数组地址指针SI、 数组长度存于CX 出口参数:结果直接存入各数组之后的字单元 DATA SEGMENT ARY1 DW 100 DUP(?) ;定义数组1 SUM1 DW ? ARY2 DW 100 DUP(?) ;定义数组2 SUM2 DW ? DATA ENDS STACK SEGMENT STACK ‘STACK’ SA DW 100 DUP (?) TOP EQU LENGTH SA STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX, DATA MOV DS, AX LEA SI, ARY1 ;数组1首地址,入口参数 MOV CX, LENGTH ARY1 ;数组1长度,入口参数 CALL SUB_SUM

文档评论(0)

bm5044 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档