汇编之loop指令使用栈实现二重循环,同时了解汇编函数(过程)的概念用法
生活随笔
收集整理的這篇文章主要介紹了
汇编之loop指令使用栈实现二重循环,同时了解汇编函数(过程)的概念用法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先我們知道loop指令用于實現一層循環,CX寄存器存儲其循環次數
按照我的步驟,我一定不會滿足單單一層循環,
于是我在loop指令里面 套了一個loop指令,
結果不言而喻,產生了一個無限死循環。這自然不是我要的結果。
經過我的debug與猜測,發現是
一層循環計數寄存器CX的值被二層的覆蓋了
自然不能簡單的套loop了,
而后在學習函數調用時閱讀到這樣兩個與棧有關的指令
push pop作用是保存一個值到棧,很通用的方法
于是·解決方法就出來了:
使用push將一層循環的CX保存起來再將二層循環的次數PUSH放到CX中,二層循環完后,再將棧中的CX pop還原到一層循環。OK
二層循環就是折磨簡單。
row,col為三角形的行與列
print_J是輸出#號的函數(過程)
過程的定義:
1.默認使用near近調用參數,若修改,必須使用方式2指定
2.一定要用RET,強制返回
方式1:
方式2:
NAME PROC [FAR/NEAR];二選一 ;DOSOMETHING RET NAME ENDP print_J:;輸出#LEA DX,jinhao;jinhao為自定義變量“#$”MOV AH,09hINT 21hRET循環:
MOV CX,rowst1:PUSH CXMOV CX,colst2:CALL print_JLOOP st2;換行MOV DL,0ah MOV AH,02hINT 21h;列加一ADD col,1POP CXLOOP st1編譯連接運行效果如下:
堅持就是勝利!奧利給!!
總結
以上是生活随笔為你收集整理的汇编之loop指令使用栈实现二重循环,同时了解汇编函数(过程)的概念用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 快速git本地项目到github的关键命
- 下一篇: 进程的并发与并行,三种状态