汇编中的嵌套循环
先貼代碼:
assume cs:code,ds:datadata segmentdb 'ibm ' ;定義一個(gè)16個(gè)字節(jié)的字符串db 'dec 'db 'dos 'db 'vax 'dw 0 ;定義一個(gè)內(nèi)存區(qū)域用于保存cx data endscode segmentstart: mov ax,datamov ds,axmov bx,0mov cx,4s0: mov ds:[40H],cxmov si,0mov cx,3s: mov al,[bx+si]and al,11011111bmov [bx+si],alint siloop s ;loop s的執(zhí)行過(guò)程是先執(zhí)行cx = cx - 1;在判斷cx是否為0若cx為0則進(jìn)行 跳轉(zhuǎn)到 s處進(jìn)行程序的運(yùn)行add bx,16mov cx,ds:[40H]loop s0mov ax, 4c00Hint 21H code ends end start代碼中使用 內(nèi)存區(qū)域?yàn)閇40+ds]的地方作為 保存cx的值 以此來(lái)達(dá)到上層循環(huán)的計(jì)數(shù)器cx不會(huì)因?yàn)橄聦拥腸x值的改變而受到影響
當(dāng)然也可以使用 dx等通用寄存器來(lái)保存cx的值但是這樣做在內(nèi)部循環(huán)中就無(wú)法使用dx通用寄存器 相比之下?tīng)奚粋€(gè)內(nèi)存跟家的劃算
上面的程序中,使用內(nèi)存單元來(lái)保存數(shù)據(jù),可是上面的做法卻有寫(xiě)麻煩,因?yàn)槿绻枰4娴亩鄠€(gè)數(shù)據(jù)的時(shí)候,你就需要記住數(shù)據(jù)存放在哪個(gè)內(nèi)存單元之中,這樣的程序容易引起混亂。
因此一般來(lái)說(shuō)需要暫存數(shù)據(jù)的時(shí)候我們都應(yīng)該使用棧,來(lái)進(jìn)行數(shù)據(jù)的暫存。再次的個(gè)那個(gè)該以上的成需:
總結(jié)
- 上一篇: 适用于特殊类型自然语言分类的自适应特征谱
- 下一篇: 作者:徐明泉(1988-),男,百度外卖