Never Nop Tech

Never Nop Tech

創造意義,動手去做。

[ASM] 組合語言Trace 堆疊練習(DEMO)

將回答上面的31到37怎麼找到值的

影片實際操作如下(聲音開大一點&&記得開CC字幕)

[*]20151029修正ss:sp錯誤於下面講解部分


講解:

今天來練習第四題堆疊的trace題目
先開啟文字編輯器打入上面的程式碼
然後補上一些錯誤的部分(不補上在DOSBOX會當掉)
再來存成.ASM
開啟DOSBOX
編譯檔案(ml)
編譯成功再來進入debug
再來開始寫題目
(31)AX=3534
(32)AX=3435
(33)AX=3736
(34)AX=3839
再來就是堆疊了!
SS:SP

呈現39 38 37 36 35 34

[*]20151029修正錯誤

(35)SS:SP=38 39

(36)SS:SP+2=3637

(37)SS:SP+4=3435
就這樣 完畢!

完成!

完整程式碼:

.MODEL SMALL
.data
num1 db 34H, 35H,36H,37H,38H, 39H
.code
mov ax,@data ;把data段移入
mov ds,ax;一般暫存器才能放到區段暫存器
lea bx,num1
mov ax,[bx]
xchg ah,al
push ax
mov ax,[bx][2]
xchg ah,al
push ax
mov ax,[bx][4]
xchg ah,al
push ax
pop [bx][0]
pop [bx][2]
pop [bx][4]
mov ah,4ch
int 21h
end