一段汇编小程序及说明——将数据,代码,栈放入不同的段


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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章