DNF阿飛自定義CALL轉(zhuǎn)換器是一款制作DNF外掛必備的輔助工具,綠色免費(fèi),非常適合喜歡破解軟件和自己寫輔助的朋友使用。
什么是匯編語言
編語言(Assembly Language)是面向機(jī)器的程序設(shè)計(jì)語言。在匯編語言中,用助記符(Memoni)代替機(jī)器指令的操作碼,用地址符號(hào)(Symbol)或標(biāo)號(hào)(Label)代替指令或操作數(shù)的地址,如此就增強(qiáng)了程序的可讀性和編寫難度,象這樣符號(hào)化的程序設(shè)計(jì)語言就是匯編語言,因此亦稱為符號(hào)語言。使用匯編語言編寫的程序,機(jī)器不能直接識(shí)別,還要由匯編程序或者叫匯編語言編譯器轉(zhuǎn)換成機(jī)器指令。匯編程序?qū)⒎?hào)化的操作代碼組裝成處理器可以識(shí)別的機(jī)器指令,這個(gè)組裝的過程稱為組合或者匯編。因此,有時(shí)候人們也把匯編語言稱為組合語言。
匯編語言中的call是什么意思
CALL(LCALL)指令執(zhí)行時(shí),進(jìn)行兩步操作:
(1)將程序當(dāng)前執(zhí)行的位置IP壓入堆棧中;
(2)轉(zhuǎn)移到調(diào)用的子程序。(CALL近調(diào)用,LCALL遠(yuǎn)調(diào)用, CALL 尋址2K空間范圍 LCALL 尋址64K空間范圍) CALL與RET結(jié)合使用,當(dāng)CALL調(diào)用的子程序運(yùn)行到RET命令時(shí),壓入堆棧的IP彈出,跳出子程序,開始執(zhí)行CALL的下一條語句。
例:main: setb p1.0; lcall delay; clr p1.0; lcall delay; ajmp main; delay: mov r7,#250;d1: mov r6,#250;d2: djnz r6,d2; djnz r7,d1; ret ; end;
當(dāng)執(zhí)行LCALL時(shí),把該語句的IP(或者說PC)壓入堆棧,開始進(jìn)入子程序DELAY,當(dāng)執(zhí)行到RET時(shí),堆棧中的IP出棧,LCALL的繼續(xù)執(zhí)行下一條語句。
一般來說,執(zhí)行一條CALL指令相當(dāng)于執(zhí)行一條PUSH指令加一條JMP指令
匯編call 命令解析
不同的CPU可能有不同的規(guī)定。下面只說常見的簡單CPU的指令。
常見的CPU的CALL指令(“調(diào)用”指令)的功能,就是以下兩點(diǎn):
(1)將下一條指令的所在地址(即當(dāng)時(shí)程序計(jì)數(shù)器PC的內(nèi)容)入棧,
(2)并將子程序的起始地址送入PC(于是CPU的下一條指令就會(huì)轉(zhuǎn)去執(zhí)行子程序)。
而子程序結(jié)尾處通常都要編寫一條RET指令(“返回”指令),RET指令的功能就是一條:
從棧中取出一條數(shù)據(jù)送入PC。
從上面敘述可以看出,正常情況下,RET指令從棧中取出的一條數(shù)據(jù),也就是當(dāng)初被CALL指令所入棧的下一條指令的所在地址。
因此,RET指令后,CPU的下一條指令就回去執(zhí)行當(dāng)初的CALL指令的下一條了。
至于其他操作,如sweetsugar123兄所說的“保護(hù)寄存器現(xiàn)場”等等,一般并非CALL指令的功能,而是需要程序員自行在子程序內(nèi)編寫程序?qū)崿F(xiàn)的。這些操作通常也需要用到堆棧;诙褩5摹昂筮M(jìn)先出”性質(zhì),這些操作可以不干擾CALL和RET指令的“保存返回地址”的功能
親,因本軟件內(nèi)附注冊(cè)機(jī)或由易語言編寫,涉及內(nèi)存的讀寫所以被360,QQ管家等殺毒、安全防護(hù)軟件報(bào)毒,本站承諾保證絕對(duì)不會(huì)綁定任何木馬及破壞用戶電腦的程序,更不會(huì)收錄任何惡意綁定有損用戶電腦的軟件,本軟件經(jīng)本站編輯在虛擬機(jī)上測試沒有發(fā)現(xiàn)此軟件對(duì)電腦有任何影響,純屬誤報(bào),請(qǐng)親們自行斟酌下載,如需使用請(qǐng)將軟件加入信任列表,請(qǐng)參照本站的 360報(bào)毒處理文檔或是閱讀 下載幫助
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版