第四章汇编程序的设计.ppt

  1. 1、本文档共83页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章汇编程序的设计

4、编写一段程序,把BUFFER开始的200个字节的内存初始化66H、0FAH、66H、0FAH、…、66H、0FAH。 …… BUFFER DB 200 DUP(?) …… LEA BX,BUFFER MOV CX,100 MOV AX,0FA66H LP: MOV [BX],AX ADD BX,02H LOOP LP …… 【例2】统计数字符串并显示。 DATA SEGMENT STR DB ‘ABCDJKLLHH┅$’ LEN DB 0;长度 DATA ENDS STACK SEGMENT PARA STACK ‘STACK’ STT DB 100 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA,SS:STACK START:MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV SP,SIZE STT LEA DI,STR MOV AL,‘$’ LP: CMP AL,[DI] JZ STOP INC LEN INC DI JMP LP STOP:MOV AH,4CH INT 21H CODE ENDS END START 本程序段是否用了堆栈? 4. 子程序设计 子程序相对主程序而言,是一个子的程序段,确切地说,它是被主程序调用的程序。 图 子程序调用示意图 子 主 b 子 主 a 子1 子2 主 c 子1 子2 主 d 一般来说有公用性、重复性或有相对独立性的程序段应设计成子程序。这种结构给程序设计带来了许多方便。 (1)子程序调用和返回 用CALL和RET指令来实现子程序的调用和返回,CALL指令在主程序中,RET指令通常在子程序末尾。 (2) 子程序设计应注意的问题 1) 现场保护和恢复。 2) 参数传递。 3) 子程序说明。 · 子程序名 · 功能、技术指标(如执行时间等) · 入口参数、出口参数 · 嵌套哪些子程序 统计一个数据块中的大于0的值(按字节)。数据块的长度在2001H中,数据从2002H开始存放,统计的结果放在2000H中。 MOV SI,2001H MOV CL,[SI]; 计数值 INC SI ;指向数据 MOV AX,0 MOV CH,0 ;清除 LP:CLC CMP AH,[SI] JC BB ;大于0转移 JMP AA BB:INC AL ;存放计数结果 AA:INC SI LOOP LP ;CX←CX-1 MOV [2000H],AL HLT 分别统计两个数据块中的正数。第一个数据块的长度在2001H中,数据从2002H开始存放,将统计结果放在2000H中;第二个数据块的长度在3001H中,数据从3002H开始存放,将统计结果放在3000H中。 MOV SI,2001H;(3001H) MOV CL,[SI] INC SI MOV AX,0 MOV CH,0 LP:CLC CMP AH,[SI] JC BB JMP AA BB:INC AL AA:INC SI LOOP LP MOV [2000H],AL;([3000H]) MAX: PUSH AX PUSH CX PUSH SI POP SI POP CX POP AX RET MOV SI,2001H CALL MAX MOV [2000H],AL MOV SI,3001H CA

文档评论(0)

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

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

1亿VIP精品文档

相关文档