子程序设计和系统功能调用例题.docx
《子程序设计和系统功能调用例题.docx》由会员分享,可在线阅读,更多相关《子程序设计和系统功能调用例题.docx(4页珍藏版)》请在三一办公上搜索。
1、子程序设计和系统功能调用例题例821 试设计一程序,完成两个长补码的加法,其中两个长补码的长度是相同的,并且采用低地址存放低位,高地址存放高位的方式存储。加法功能使用子程序实现,两个长补码的起始地址、长补码的长度、运算结果的起始地址均由主程序以入口参数的形式传递给子程序;运算是否溢出使用一个字节标志来表示,00H表示运算无溢出,0FFH表示运算溢出,子程序将此溢出标志以出口参数的形式传递给主程序。本例中参数传递方式采用寄存器传递方式。 1)设计参数传递约定 题目已指明参数传递为寄存器传递方式,这里只需要具体约定寄存器与参数间的对应关系。在本例中,我们约定主程序通过SI、DI寄存器传递两个长补码
2、的起始偏移量,通过CX寄存器传递补码的长度,通过BX寄存器传递运算结果的起始偏移量;并且,我们约定子程序通过DL寄存器传递溢出标志。 2)源程序设计 参数传递约定设计完成后,我们开始源程序设计,主程序与子程序的相应代码如下所示。 DATA SEGMENT VAR1 DW 5482H, 669EH, 02C7H, 14B2H, 0C254H VAR2 DW 8C2BH, 0C24CH, 0AB12H, 357AH, 41A5H LEN EQU $-VAR2 SUM DW LEN DUP(0) OVR DB ? DATA ENDS STACK1 SEGMENT STACK DW 40H DUP(0
3、) STACK1 ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA, SS: STACK1 ; 子程序设计必须使用堆栈段 ; 用于保存运算结果 ; 用于保存溢出标志 BEGIN: MOV AX, DATA MOV DS, AX LEA SI, VAR1 LEA DI, VAR2 MOV CX, LEN LEA BX, SUM CALL LONGADD MOV OVR, DL MOV AH, 4CH INT 21H LONGADD PROC PUSHF PUSH AX CLC L1: MOV AX, SI ADC AX, DI PUSHF MOV BX, A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 子程序 设计 系统 功能 调用 例题
链接地址:https://www.31ppt.com/p-3416230.html