一段彙編小程序及說明——將數據,代碼,棧放入不同的段


assume cd:code,ds:data,ss:stack



data segment

    dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h

data ends



stack segment

    dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

stack ends



code segment

    start:mov ax,stack                        ;將棧地址送入ax

            mov ss,ax

            mov sp,20h                        ;設置棧頂SS:SP指向stack:20



            mov ax,data

            mov ds,ax                            ;ds指向data段



            mov bx,0                                ;as:bx指向data段中的第一個單元

            mov cx,8                                ;設置循環次數



        s: push [bx]

            add bx,2

            loop s                                    ;將以上data段中的0-15單元中的8個字型數據依次入棧

            mov bx,0

            mov cx,8



        s0:pop [bx]

            add bx,2

            loop s0                                    ;以上依次出棧的8個字型數據到data段的0-15單元中



彙編 debug

-r    查看寄存器中的內容

-u   加載內存中的程序,將內存中的機器指令翻譯成彙編

-d   查看內存中的內容

-e   改寫內存中的內容

-t   執行一條機器指令

-a   以彙編指令格式在內存中寫入一條機器指令



常用無符號數比較結果條件轉移


指令                含義                        檢測的相關標誌位

je                    等於則轉移                zf=1

jne                  不等於則轉移            zf=0

jb                    低於則轉移                cf=1

jnb                  不低於則轉移            cf=0

ja                     高於則轉移               cf=0 且 zf=0

jna                   不高於則轉移           cf=1 或 zf=1


assume cd:code,ds:data,ss:stack


data segment

    dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h

data ends


stack segment

    dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

stack ends


code segment

    start:mov ax,stack                        ;將棧地址送入ax

            mov ss,ax

            mov sp,20h                        ;設置棧頂SS:SP指向stack:20


            mov ax,data

            mov ds,ax                            ;ds指向data段


            mov bx,0                                ;as:bx指向data段中的第一個單元

            mov cx,8                                ;設置循環次數


        s: push [bx]

            add bx,2

            loop s                                    ;將以上data段中的0-15單元中的8個字型數據依次入棧

            mov bx,0

            mov cx,8


        s0:pop [bx]

            add bx,2

            loop s0                                    ;以上依次出棧的8個字型數據到data段的0-15單元中



彙編 debug

-r    查看寄存器中的內容

-u   加載內存中的程序,將內存中的機器指令翻譯成彙編

-d   查看內存中的內容

-e   改寫內存中的內容

-t   執行一條機器指令

-a   以彙編指令格式在內存中寫入一條機器指令



常用無符號數比較結果條件轉移


指令                含義                        檢測的相關標誌位

je                    等於則轉移                zf=1

jne                  不等於則轉移            zf=0

jb                    低於則轉移                cf=1

jnb                  不低於則轉移            cf=0

ja                     高於則轉移               cf=0 且 zf=0

jna                   不高於則轉移           cf=1 或 zf=1


發佈了79 篇原創文章 · 獲贊 22 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章