您的位置:首页 > 移动开发 > 微信开发

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

2014-11-09 13:09 344 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐