实验五子程序设计【实验目的】掌握一般子程序的调用和返回方法,掌握定义过程的伪指令的用法。【实验性质】设计性实验(学时数:3H)【实验内容】1、完成两个四位十进制数相加的程序设计,形式为:2345+7869=10214(1)要求所有中断调用全部采用子程序的形式完成。(2)要求考虑进位位。完善程序并调试通过。流程图程序源代码:. DD0ARRAY DD16DUP(0)ERR DB0DH,0AH,'Inputerror!',0DH,0AH,'$'STRING DB0AH,0DH,0AH,0DH,'PleaseInput(*B=)$'STRIN DB0AH,0DH,0AH,0DH,'("q"quit):',0DH,0AH,'$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXAGAIN:LEADX,STRING MOVAH,9INT21HLEADX,STRINMOVAH,9INT21HMOVEBX,OFFSETARRAYMOVFLAG_SIGN,0 MOVFLAG_NUM1,0 MOVFLAG_NUM2,0 L_Input0:XOREDX,EDXXORECX,ECXXOREAX,EAXMOVAH,1 INT21HCMPAL,'+'JZ L_Input1CMPAL,'-'JNZL_NumberNOTFLAG_SIGN L_Input1:MOVAH,1INT21HL_Number:CMPAL,'0'JB L_OperatorCMPAL,'9'JA L_OperatorSUBAL,30H ADDEDX,EDXMOVECX,EDXADDECX,ECXADDECX,ECXADDEDX,ECXMOVAH,0ADDEDX,EAXMOVFLAG_NUM1,1 JMPL_Input1 L_Operator:CMPAL,'*'JNZL_EqualCMPFLAG_NUM1,0 JZ ERMOV[BX],EDX ADDBX,4 MOVFLAG_NUM1,0 MOVFLAG_NUM2,1 JMPL_Input0 L_Equal:MOV[BX],EDX CMPAL,'='JNZL_Quit1MOVBL,FLAG_NUM1 MOVCL,FLAG_NUM2CMPBL,CLJNZERCMPFLAG_SIGN,0 JZ L_Cal MOVDL,'-' MOVAH,2INT21HL_Cal:MOVCX,0MOVSI,CXMOVEAX,ARRAY[SI+4] MOVEBX,ARRAY[SI] MULEBX MOVEBX,1000000000 DIVEBX MOVTEMP,EAX CALLBINTOASCII MOVTEMP,EDX CMPTEMP,0 JZ Show_0CALL BINTOASCII JMPAGAIN Show_0:MOVCX,9 Display:MOVDL,'0'MOVAH,XCMPCX,0JNZDisplayJMPAGAIN L_Quit1:CMPAL,'Q' JNZL_Quit2JMPL_QuitL_Quit2:CMPAL,'q'JNZERJMPL_QuitER: MOVDX,OFFSETERR MOVAH,9INT21HJMPAGAINL_Quit:MOVAH,4CHINT21HBINTOASCIIPROCPUSHEAX PUSHEBXPUSHECXPUSHEDXMOVEAX,TEMP MOVEBX,10PUSHBX B3:CMPEAX,0 JZB4SUBEDX,EDX DIVEBX ADDDL,30H PUSHDX JMPB3B4:POPDX
汇编子程序设计 来自淘豆网m.daumloan.com转载请标明出处.