文档详情

汇编语言第5章王爽版(子程序调用指令).ppt

发布:2025-02-05约3.1千字共24页下载文档
文本预览下载声明

第5章结构化程序设计;5.1子程序的概念;1、子程序的定义:由子程序定义伪指令PROC和ENDP来完成。其格式如下:

子程序名PROC[NEAR/FAR]

┆;过程体

子程序名ENDP

解释:〔1〕子程序名是子程序入口地址的符号表示。同标号一样,具有三种属性,即段属性、偏移地址属性以及类型属性。

〔2〕PROC表示子程序定义开始,ENDP表示子程序定义结束。

(3)NEAR/FAR

2、子程序的调用和返回

过程定义后,可在主程序中用CALL指令,反复调用。

过程结束,由返回指令RET返回主程序。;主程序与子程序;子程序调用指令(CALL);子程序返回指令(RET);子程序返回指令(RET);例:NEAR类型子程序

codeSEGMENT;code段

CALLsubp;调用指令,xor指令的地址入栈

xorax,ax

movah,4ch

int21h

subpPROCNEAR;子程序定义

RET;返回

subpENDP

codeENDS

ENDSTART;1.多处调用完成同一功能的子程序:

codeSEGMENT

start:…

CALLsub

CALLsub

MOVAH,4CH

INT21H

subPROC

、、

、、

RET

subENDP

codeENDS

endstart;子程序的位置通常在主程序的所有可执行指令之前或之后,不能放在主程序的可执行指令序列内部,否那么会破坏主程序结构;5.3子程序的现场保护与参数传递;二、主程序与过程的参数传递方式;例5-1:分别用三种参数传递方法编写求1+2的和的程序。要求将结果送到内存单元,并显示。;DATASEGMENT

SUMDB0

DATAENDS

STACKSEGMENT

DB100DUP(?)

STACKENDS

CODESEGMENT

ASSUMEDS:DATA,SS:STACK,CS:CODE

START:MOVAX,DATA

MOVDS,AX

MOVAL,1

MOVBL,2

CALLsubprog

movah,4cH

int21h

CODEENDS

ENDSTART;通过变量传送;Spr PROC

PUSHBP

MOVBP,SP

MOVAX,[BP+6]

MOVBX,[BP+4]

ADDAL,BL

ORAL,30H

MOVDL,AL

MOVAH,2

INT21H

MOVSUM,AL

POPBP

RET

Spr ENDP;例5-2:多字节数相加的程序〔存放器传递过程参数〕;Start:

movax,data

movds,ax

leasi,num1

leadi,num2

movcx,len

callmpadd

movah,4ch

int21h;例5-3多字数相加的程序〔堆栈传递子程序参数〕

RET指令中参

显示全部
相似文档