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


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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值