5程序设计(精品·公开课件).ppt

  1. 1、本文档共91页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 3.主程序和过程之间的参数传递 主程序调用过程时,必须先将过程所需要的初始数据设置好,这些初始数据称为过程的入口参数。过程执行完毕返回主程序时也必须将过程运行所得的结果送给主程序,这些回送的结果称为过程的出口参数。过程入口参数的送入和出口参数的送出城为主程序和过程间的参数传递,也称过程通信。过程通信通常有四种方法。 ⑴ 通过寄存器传递参数 ⑵ 通过变量传递参数 ⑶ 通过地址表传递参数 ⑷ 通过堆栈传递参数 * 4.子程序的嵌套与递归调用 一个子程序调用另一个子程序叫子程序嵌套,如下图所示: CALL CALL CALL RET RET RET 主程序 子程序1 子程序2 子程序n * 由于调用子程序时,断点地址保存在堆栈中,因此只要有足够的堆栈空间,嵌套的层次(也称深度)是不受限制的。 若一个子程序调用该子程序自身,则称为递归调用。递归调用是子程序嵌套的特例。 5. 子程序调用和宏指令使用的例子 [例7] AX寄存器中存放着4位十六进制数,试编写程序将这4位十六进制数分别转换为相应的ASCII码,并依次存放到RESULT数组的4个字节中去,要求分别用子程序和宏指令的方法实现。 * ⑴ 用子程序方法编程: DATA SEGMENT HEXDATA DW 4D7EH RESULT DB 4 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV CX, 4 LEA SI, HEXDATA LEA DI, RESULT MOV BX, [SI] NEXT: MOV AX, BX AND AL, 0FH CALL HEXASC MOV [DI], AL INC DI PUSH CX MOV CX, 4 SHR BX, CL POP CX LOOP NEXT * LEA SI, RESULT+3 MOV CX, 4 STD LOOP1:LODSB MOV DL, AL MOV AH, 02H INT 21H LOOP LOOP1 MOV DL, H MOV AH, 02H INT 21H MOV AH, 4CH INT 21H ;十六进制转换成ASCII码子程序 HEXASC PROC CMP AL, 0AH JB PLUS30 ADD AL, 07H PLUS30: ADD AL, 30H RET HEXASC ENDP ? CODE ENDS END START * ⑵ 用宏指令方法编程: DATA SEGMENT HEXDATA DW 4D7EH RESULT DB 4 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX HEXASC MACRO CMP AL, 0AH JB PLUS30 ADD AL, 07H PLUS30: ADD AL, 30H ENDM MOV CX, 4 LEA SI, HEXDATA LEA DI, RESULT MOV BX, [SI] * NEXT: MOV AX, BX AND AL, 0FH HEXASC MOV [DI], AL INC DI PUSH CX MOV CX, 4 SHR BX, CL POP

文档评论(0)

花好月圆 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档