匯編語(yǔ)言入門教程 順序執(zhí)行push eax和pop ebx兩條指令,其功能等同于?
順序執(zhí)行push eax和pop ebx兩條指令,其功能等同于?單片機(jī)中PUSH和POPG指今常用來?push和pop in MCU分別是棧壓指令和棧出指令,用于臨時(shí)保存數(shù)據(jù)。pushad和popad
順序執(zhí)行push eax和pop ebx兩條指令,其功能等同于?
單片機(jī)中PUSH和POPG指今常用來?
push和pop in MCU分別是棧壓指令和棧出指令,用于臨時(shí)保存數(shù)據(jù)。
pushad和popad,這兩個(gè)壓棧和出棧兩個(gè)命令在什么時(shí)候需要加,什么時(shí)候不用加?
沒什么好糾結(jié)的。PUSHAD和POPAD只能用于386及其后續(xù)版本。執(zhí)行PUSHAD時(shí),eax、ECX、EDX、ebx、ESI、EDI依次執(zhí)行,執(zhí)行后用esp-32保護(hù)中斷點(diǎn);執(zhí)行POPAD時(shí),結(jié)果相反,恢復(fù)中斷點(diǎn)。如果您需要在程序中使用一些寄存器,但是它們的內(nèi)容在將來會(huì)很有用,那么您可以使用這組stack-in和stack-out指令。例如,經(jīng)常使用子程序調(diào)用和中斷處理程序調(diào)用。它在形式上類似于push和pop,但是PUSHAD和POPAD比簡(jiǎn)單的push和pop更方便和高效,因?yàn)樗鼈兛梢砸淮瓮瓿啥鄠€(gè)寄存器進(jìn)出堆棧。
堆棧操作指令push psw的源和目的操作數(shù)是什么?
2. 有時(shí),您需要臨時(shí)使用一些寄存器,也可以根據(jù)您的個(gè)人喜好使用它們;
stack是first-in和last-out的主存區(qū)域,位于stack段中,使用SS段寄存器記錄段地址。堆棧只有一個(gè)出口,即當(dāng)前堆棧的頂部。堆棧頂部是地址的下端,地址由堆棧指針寄存器sp指定。堆棧的兩個(gè)基本操作,對(duì)應(yīng)兩條基本指令:
堆棧項(xiàng)指令首先使堆棧指令sp減2,然后在堆棧頂部存儲(chǔ)一個(gè)字操作數(shù)。堆棧操作的對(duì)象只能是字操作數(shù)。當(dāng)堆棧放入時(shí),底部字節(jié)存儲(chǔ)在低位地址,高位字節(jié)存儲(chǔ)在高位地址,SP相應(yīng)地將兩個(gè)字節(jié)單元移動(dòng)到低位地址。
堆棧指令將堆棧頂部的一個(gè)字傳輸?shù)街付ǖ哪繕?biāo)操作數(shù),然后將2添加到堆棧指針sp。目標(biāo)操作數(shù)應(yīng)為字操作數(shù)。當(dāng)一個(gè)字從棧頂彈出時(shí),低地址字節(jié)發(fā)送低地址字節(jié),高地址字節(jié)發(fā)送高地址字節(jié)。
Pop SS堆棧可用于臨時(shí)存儲(chǔ)數(shù)據(jù),以便隨時(shí)恢復(fù)數(shù)據(jù)。它也常用于子程序中,請(qǐng)參見傳遞參數(shù)。
(2)推送CS合法,但pop CS不合法。
(5),按下和彈出指令不影響標(biāo)志。
PUSH指令有什么用?
推入堆棧指令和彈出堆棧指令:堆棧操作是以“后進(jìn)先出”的方式進(jìn)行數(shù)據(jù)操作。
Push Src//word
除了不允許使用立即數(shù)外,堆棧的操作數(shù)可以是通用寄存器,段寄存器(all)和內(nèi)存
堆棧放入時(shí),高字節(jié)先放入堆棧,低字節(jié)后放入堆棧
Pop DST//[word
除立即數(shù)和CS段寄存器不允許使用外,它們可以是通用寄存器、段寄存器和內(nèi)存
Pop SS指令發(fā)出后執(zhí)行時(shí),堆棧區(qū)域在內(nèi)存區(qū)域中的位置應(yīng)更改
執(zhí)行pop SP指令后,堆棧頂部的位置應(yīng)更改