棧是一種具有特殊的訪問(wèn)方式的存儲(chǔ)空間(后進(jìn)先出)
棧的結(jié)構(gòu)示意圖,在匯編中,要明確沒有棧底的概念!!!
段地址,入棧和出棧,操作的是2個(gè)字節(jié)(8086系統(tǒng)),不存在1個(gè)或者3個(gè)字節(jié)!!!
PUSH ax
POP ax
空棧
段總結(jié)
小練習(xí),右側(cè)是棧段
左側(cè)是棧段指明
通過(guò)這個(gè)軟件,我們可以去看到內(nèi)存的東西
內(nèi)存順序
PUSH的時(shí)候,往內(nèi)存地址小的地方寫東西
大端模式數(shù)據(jù)存儲(chǔ)方向
小模式數(shù)據(jù)存儲(chǔ)方向
loop指令
loop指令
注意,次方只能放到cx里,其他的不行
使用cx,計(jì)算平方數(shù)
如果替換成0,那么就是死循環(huán)
原因是:先判斷是不是0,如果不是零,-1,所以一直往下減
去掉了loop
標(biāo)號(hào)(s):只是表示這段函數(shù)給他起了一個(gè)名字,沒有任何意義。這些代碼還是要接著執(zhí)行的。
上面的demo就是do-while循環(huán),至少執(zhí)行一次
計(jì)算ffff0-ffff2寄存器的數(shù)據(jù)
計(jì)算ffff0-ffff2寄存器的數(shù)據(jù),3個(gè)字節(jié),ax是2個(gè)字節(jié)呦
loop循環(huán),inc bx = add bx,1h
等價(jià)
段前綴
練習(xí),后者比前者的loop代碼少,因?yàn)槭褂昧藘蓚€(gè)寄存器
練習(xí)題