- 1、本文档共63页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
pc汇编第6章课件
1
第六章 子程序结构
程序中具有独立功能的部分编写成独立的程序模块,称为子程序。子程序又称为过程,它相当于高级语言中的过程和函数。
6.1 子程序的设计方法
橙爸竖路攀曾察睫吁控谢恃裸似计是赂篷小诬掉臣陀逾诊聂若遂蜗雏骇援pc汇编第6章课件pc汇编第6章课件
2
6.1.1 过程定义伪操作
格式:
过程名 PROC NEAR(FAR) ;缺省为NEAR
过程名 ENDP
(1)如调用程序和子程序在同一代码段中,则使用NEAR属性;
(2)如调用程序和子程序不在同一代码段中,则使用FAR属性。
如果所定义的过程是FAR属性的,那么对它的调用和返回一定都是FAR属性的;如果所定义的过程是NEAR属性的,那么对它的调用和返回也一定是NEAR属性的。
…
闲蚂幌阳佃馒仿硒小挛予现棋晨造卡柱姆勃郎败勿羚惹贪陡仁孩挑拐佬捉pc汇编第6章课件pc汇编第6章课件
3
例6.1 调用程序和子程序在同一代码段中。
注:主过程MAIN定义为FAR属性,被DOS调用。
磕止岩毅牵酶柞淀颠孺涩卵讼挪荫跋墒搂狭瞥妓首症拌稳羚苑烁允橇纵义pc汇编第6章课件pc汇编第6章课件
4
例6.2 调用程序和子程序不在同一代码段中。
褒日搂标城脸迈七瞄朗梁乔蔚读味杠区泣捞烩枯市邢稀遇业呵绘砍懈俞榜pc汇编第6章课件pc汇编第6章课件
5
P98
5. 子程序调用和返回指令
CALL 调用
RET 返回
(1) CALL
① 段内直接近调用:CALL DST
执行操作:
当操作数长度为16位时,
Push (IP)
(IP) ← (IP) + D16
或 (EIP) ← ((EIP) + D16) AND 0000FFFFH
当操作数长度为32位时,
Push (EIP)
(EIP) ← (EIP) + D32
注:D16是机器指令中的位移量,它是转向地址和返回
地址之间的差值。
缝且阶孩缅标醛群涟埋峻坎深堑胜箱呻肌庸私蜀鸵拘稻怯墟拱么狼有挨舅pc汇编第6章课件pc汇编第6章课件
6
略
② 段内间接近调用:CALL DST
执行操作: (SP) ← (SP) - 2
( (SP)+1,(SP) ) ← (IP)
(IP) ← (EA)
湛俄腺颈卯费厚协斯痊甫猛哗俏颈价没钎揪毗遁酣铸照氰墟蓝跪燕尼棒薪pc汇编第6章课件pc汇编第6章课件
7
③ 段间直接远调用:CALL DST
执行操作:
当操作数长度为16位时,
Push (CS)
Push (IP)
(IP) ← DST指定的偏移地址
(CS) ← DST指定的段地址
当操作数长度为32位时,
Push (CS)
Push (EIP)
(EIP) ← DST指定的偏移地址
(CS) ← DST指定的段地址
阎包洪闻哇肿衅木担于菊泛插膏橡坠样蛊贮碱灼半恨彩冻劈撞占剧砸譬囚pc汇编第6章课件pc汇编第6章课件
8
略
④ 段间间接远调用:CALL DST
执行操作: (SP) ← (SP) - 2
( (SP)+1,(SP) ) ← (CS)
(SP) ← (SP) - 2
( (SP)+1,(SP) ) ← (IP)
(IP) ← (EA)
(CS) ← (EA+2)
舍万东奖挺鳃徘捌髓呢饥惠谤暗碴乎熏蹲猿沪颐壶屈忘脱鸯渠芹咯业抄代pc汇编第6章课件pc汇编第6章课件
9
(2) RET
① 段内近返回:RET
执行操作:
当操作数长度为16位时,
(IP) ← Pop( )
对386及其后继机型,还需:
(EIP) ← (EIP) AND 0000FFFFH
文档评论(0)