汇编源码学习8-FAR-子程序远调用

来源:互联网 发布:淘宝马甲工服 编辑:程序博客网 时间:2024/05/21 09:06
;将AX中的值以十进制形式输出ASSUMEDS:data1,SS:stack1data1SEGMENTdecimalDB6 DUP(?),'$(编译时去掉此处括号)'tempDB6 DUP(?)data1ENDS;stack1SEGMENT STACKDB256 DUP(?)stack1ENDS;不同段的子程序——output in decimal;好像只能放在主程序的前面code2SEGMENToutDecPROCFARASSUMECS:code2;BEGIN:寄存器保护,将子程序中用到的寄存器保存PUSHDIPUSHBXPUSHCXPUSHDXPUSHSI;ENDLEADI,tempMOVBX,10MOVCX,0;记录十进制数的位数again:XORDX,DXDIVBXMOV[DI],DL;保存余数INCDIINCCXCMPAX,0JNEagainMOVSI,OFFSET decimalADDSI,CXMOV[SI],'$(编译时去掉此处括号)';字符串结束符DECSILEADI,tempnext:MOVAL,[DI]MOV[SI],ALADD[SI],30H;转为ASCII码DECSIINCDIDECCXCMPCX,0JNEnextLEADX,decimalMOVAH,9INT21H;BEGIN:寄存器恢复POPSIPOPDXPOPCXPOPBXPOPDI;ENDREToutDecENDPcode2ENDS;主程序code1SEGMENTASSUMECS:code1start:MOVAX,data1MOVDS,AX;MOVAX,0FFFFH;设置AX的值;不能写成FFFFHCALLFAR PTR outDecMOVAH,4CHINT 21Hcode1ENDSENDstart