日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

汇编中的嵌套循环

發布時間:2025/3/15 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汇编中的嵌套循环 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先貼代碼:

assume cs:code,ds:datadata segmentdb 'ibm ' ;定義一個16個字節的字符串db 'dec 'db 'dos 'db 'vax 'dw 0 ;定義一個內存區域用于保存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的執行過程是先執行cx = cx - 1;在判斷cx是否為0若cx為0則進行 跳轉到 s處進行程序的運行add bx,16mov cx,ds:[40H]loop s0mov ax, 4c00Hint 21H code ends end start

代碼中使用 內存區域為[40+ds]的地方作為 保存cx的值 以此來達到上層循環的計數器cx不會因為下層的cx值的改變而受到影響

當然也可以使用 dx等通用寄存器來保存cx的值但是這樣做在內部循環中就無法使用dx通用寄存器 相比之下犧牲一個內存跟家的劃算
上面的程序中,使用內存單元來保存數據,可是上面的做法卻有寫麻煩,因為如果需要保存的多個數據的時候,你就需要記住數據存放在哪個內存單元之中,這樣的程序容易引起混亂。
因此一般來說需要暫存數據的時候我們都應該使用棧,來進行數據的暫存。再次的個那個該以上的成需:

assume cs:code,ds:data,ss:stackdata segmentdb 'ibm ' db 'dec 'db 'dos 'db 'vax 'data endsstack segmentdw 0,0,0,0,0,0,0,0,0 ;定義一個段,用來做棧段,容量為16個字節 stack endscode segmentstart: mov ax,stackmov ss,axmov sp,16 ;設置棧頂ss:sp指向stack:16 堆棧使用的時候要指向棧頂mov ax,data mov ds,ax ;數據的ds數據段指向上面定義的數據段mov bx,0mov cx,4s0: push cx ;將外層循環的cx壓棧mov si,0mov cx,3 ;將cx設置成內層循環的次數s: mov al,[bx+si]and al,11011111bmov [bx+si],alinc siloop sadd bx,16pop cx ;從棧頂將cx的值進行恢復loop s0 ;外層循環的loop指令將cx中的計數值cx中的計數值減1;執行過程 loop是先將 cx減1 再判斷 cx是否為0 若不為0則進行循環直到cx為零的時候為止mov ax, 4c00Hint 21H code ends end start

總結

以上是生活随笔為你收集整理的汇编中的嵌套循环的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。