日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

汇编代码中使用栈

發(fā)布時(shí)間:2025/6/15 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汇编代码中使用栈 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ? ? ? ?先看一段代碼:

? ? ? ? ? ?

? ? ? ? ? 上面代碼的作用是將程序中的數(shù)據(jù)逆序存放,程序定義自己的數(shù)據(jù),還定義一段空值內(nèi)存來(lái)當(dāng)做棧來(lái)使用,在程序加載時(shí),操作系統(tǒng)會(huì)為它們分配內(nèi)存。start表示程序的入口處,start的上面只是程序定義的數(shù)據(jù)。

? ? ? ? ? ss:sp是用來(lái)指向棧頂?shù)?#xff0c;mov ax,cs是要ss指向程序的數(shù)據(jù)部分ss:48,棧底對(duì)應(yīng)的那段內(nèi)存地址是ss:16~ss:47。當(dāng)??諘r(shí),棧頂指針棧頂?shù)南乱粋€(gè)地址,即ss:48 。cs:[bx]這里的cs稱(chēng)為段前綴,通常'[]'都是取段寄存器ds中的值,但是如果有段前綴,則'[]'取段前綴的地址。

? ? ? ? ?上述代碼中,棧頂指針ss:sp指向cs:40,push操作時(shí):sp=sp-2;pop操作時(shí):sp=sp+2,因?yàn)闂J菑母叩刂吠偷刂吩鲩L(zhǎng)的。push cs:[bx]對(duì)應(yīng)的那個(gè)循環(huán)是將程序中的數(shù)據(jù)入棧。兩個(gè)循環(huán)bx來(lái)做偏移量,中間需要重置值。下面debug看一下。

?查看cd:0對(duì)應(yīng)的數(shù)據(jù),看到 23 01正是程序定義的數(shù)據(jù),01是高位,23是低位。

當(dāng)還沒(méi)有執(zhí)行pop cs:[bx]指令時(shí),1cd2:0020最后2個(gè)數(shù)據(jù)正好是0123h,這就是程序第一個(gè)push進(jìn)入棧的,之前為00的數(shù)據(jù)現(xiàn)在有的已經(jīng)有值了。下面再來(lái)看出棧。

現(xiàn)在第一個(gè)數(shù)據(jù)為0987h,這剛好是程序定義的第一個(gè)數(shù)據(jù)。

?

?

?

參考資料:<<匯編語(yǔ)言>>王爽

?

總結(jié)

以上是生活随笔為你收集整理的汇编代码中使用栈的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。