- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机汇编
例1(P176) 查表求X 的平方值,存入RESULT单元 一、顺序结构 TABLE 0 1 4 9 16 25 36 49 64 81 BX? RESULT DATA X 分析: 1,定义数据段 2 ,分配寄存器:BX ? 表首地址; AH ? 0,AL ? X; BX ? BX+AX (平方值地址) RESULT?[BX]平方值 3 , 返回操作系统, MOV AH,4CH INT 21H; 4-4 汇编语言程序设计方法 二、分支结构 P176 例 4-13 4-4 汇编语言程序设计方法 将数据区BUFFER开始的100个字节单元清零 BUFFER DB 100 DUP(?) COUNT DB 100 LEA BX,BUFFER AGAIN: MOV [BX],0 INC BX CMP BX,COUNT JB AGAIN 三、循环结构 入口 初始化 循环体 修改控制参数 循环控制 出口 入口 初始化 循环体 修改控制参数 循环控制 出口 直到型 当型循环 4-4 汇编语言程序设计方法 8 7 9 4 6 7 8 9 4 6 7 8 9 4 6 7 8 4 6 9 7 8 4 6 9 7 8 4 9 6 7 4 8 6 9 例3、将MEM单元开始的100个16位无符号数从小到大排序(冒泡法)P179 7 4 6 8 9 7 4 6 8 9 4 7 6 8 9 4 6 7 8 9 4 6 7 8 9 4 6 7 8 9 7 8 4 6 9 第一遍 第二遍 第三遍 第四遍 从表头开始,相邻两数比较,次序不对交换位置 4-4 汇编语言程序设计方法 第一遍比较N-1次后,最大数移至表尾; 第二遍比较N-2次后, 次较大数移至表尾相应位置;依次类推 共进行N-1遍,排序结束 采用减法计数 外循环 I= N-1 ~ 1 遍, 内循环 J= I ~ 1 7 9 4 6 8 MEM+0 MEM+2 MEM+4 MEM+6 MEM+8 字数组 4-4 汇编语言程序设计方法 SI ?DI 每轮首地址 CL ?BL 内循环次数 AX ? [SI];前一个数SI?SI+2;调整指针 判断是否交换:AX ? [SI] CL-1 ?0 BL ? BL-1,下一遍开始 BL?0 初始化: DI ? 数据首地址 BL ? 99 外循环次数 结束 Y AX - [SI] 4-4 汇编语言程序设计方法 四、子程序结构 过程名 PROC [ NEAR](或FAR) PUSH AX PUSH BX PUSH CX 具体处理程序 POP CX POP BX POP AX RET 过程名 ENDP 近属性,段内调用 远属性,段间调用 保护现场 恢复现场 为了保证主程序中的寄存器内容不被破坏,子程序中要保护现场和恢复现场 4-4 汇编语言程序设计方法 子程序: BCD2BIN PROC [ NEAR](或FAR) PUSH CX 具体处理程序 POP CX RET BCD2BIN ENDP 主程序: MOV AL,??H CALL BCD2BIN 子程序结果在AL中 主程序与子程序 4-4 汇编语言程序设计方法 每一个子程序包括在 PROC…….ENDP之间; 近调用:子程序与调用程序在同一代码段; 远调用:子程序与调用程序不在同一代码段; 主程序可看作DOS的子程序,主程序属性定义为FAR属性 子程序应编写子程序说明文件: 例: 子程序名称:BCD2BIN 功能:BCD转换为二进制数 子程序中使用的寄存器:CX 入口参数;AL存放两位BCD码 出口参数:AL存放二进制数 子程序中调用其它子程序的名称 4-4 汇编语言程序设计方法 主程序与子程序之间的参数传递方式: 通过寄存器传递、 通过存储区传递、 通过堆栈区传递 参数传递过程见教
原创力文档


文档评论(0)