当前位置: 首页 > 汇编 > 正文

汇编语言基础4

                                                                                                   汇编语言基础4

一个包含多个段的程序:

ds寄存器一般存放数据段的段地址,cs:ip这两个寄存器一般存放的是代段的具体地址,es 段一个可以使用的临时存放变量的寄存器,SS:SP一般存放的就是栈的具体地址,前者位栈的段地址后者为栈的偏移地址。一般程序都有代码段,数据段,文本段,我们希望CPU 从代码段读取指令,通过使用栈来对数据段的数据进行修改,那么程序的本质就能够体现了。


这个程序是将0123H 0456H 这两个数据进行交换

       assume cs:code ,ds:data,ss:stack   伪指令定义三个段地址

data segment

dw 0123h,0456h                      定义数据段

data ends

stack segment                                  定义栈段

dw 0,0

stack ends

start:  mov ax,stack

  mov ss,ax                                 

                  mov sp,16                             给栈段赋上具体的地址

  mov ax,data

                  mov ds,ax

                  push ds:[0]

                  push ds:[2]

                  pop   ds:[2]

    pop   ds:[0]

                                                               使用栈来进行交换

       mov  ax,4c00h

       int 21h

code ends

end start

     

版权声明:本文为博主原创文章,未经博主允许不得转载。

]]>

本文固定链接: http://zmrlinux.com/2015/06/15/%e6%b1%87%e7%bc%96%e8%af%ad%e8%a8%80%e5%9f%ba%e7%a1%804/ | Kernel & Me

该日志由 root 于2015年06月15日发表在 汇编 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 汇编语言基础4 | Kernel & Me