- 1、本文档共179页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * 提问:寻址方式 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 格式:CALL FAR PTR DST ; mem32 功能: SP←(SP)-2 ;SP-2 ((SP)+1,(SP))←(CS) ;CS入栈 SP←(SP)-2 ;SP-2 ((SP)+1,(SP))←(IP) ;IP入栈 IP←(EA) ;EA取代IP中原地址 CS←(EA+2) ;EA+2取代CS中原段基址 段间返回返回指令RET : 格式:RET IP←((SP)+1,(SP)) SP←(SP)+2 CS←((SP)+1,(SP)) SP←(SP)+2 RET i16 ; 有参数返回RET指令可以带有一个立即数i16, 则堆栈指针SP将增加,即 SP←SP+i16 这个特点使得程序可以方便地废除若干执行CALL指令以前入栈的参数 例:子程序地址在DDCCH:BBAAH CALL DWORD PTR[DI] 断点:CS:IP IPL IPH CSL CSH SP=1200 SP=11FC 执行CALL 指令后 1.保护断点 堆栈 执行CALL 指令前 SP=11FE CALL 代码段 数据段 IPH IPL CSH CSL [DI] [DI]+1 [DI]+2 [DI]+3 段间间接调用示意图 CALL DWORD PTR[DI] AAH BBH CCH DDH 例:子程序地址在DDCCH:BBAAH 2.给子程序地址 MOV WORD PTR [DI],BBAAH MOV WORD PTR [DI+2],DDCCH CALL DWORD PTR[DI] DDCCH:BBAAH 子程序 RET 代码段 例:子程序地址在DDCCH:BBAAH CALL DWORD PTR[DI] 断点:CS:IP IPL IPH CSL CSH SP=1200 SP=11FC 执行CALL ;RET指令后 3.返回断点 堆栈 执行CALL ;RET指令前 SP=11FEH 例: MAIN … … CALL FAR PTRPRO_A (CS)=0500H:(IP)=1000H … … RET PRO_A: … … … CALL NEAR PTR PRO_B (IP)=2500 … … CALL NEAR PTR PRO_C (IP)=3700 … RET PRO_B: … … CALL NEAR PTR PRO_C (IP)=4000 … … RET PRO_C: … … … … RET 0100 SP TOS (9) 0500 1000 3700 4000 00FC SP TOS (8) 0500 1000 3700 4000 00FA SP TOS (7) 0500 1000 3700 4000 00FC SP TOS (6) 0500 1000 2500 4000 00FA SP TOS (5) 0500 1000 2500 4000 00F8 SP TOS (4) 0500 1000 2500 4000 00FA SP TOS (3) 0500 1000 2500 00FC SP TOS (2) 0500 1000 0100 SP 栈顶TOS (1) ;主程序 MOV AL,0CH ;提供参数AL CALL htoasc ;调用子程序 ...;子程序:将AL低4位的一位16进制数转换成ASCII码htoasc: AND AL,0FH ;只取al的低4位 OR AL,30H ;al高4位变成3 CMP AL,39H ;是0~9,还是0Ah~0Fh
文档评论(0)