8086汇编-包含多个段的程序

来源:互联网 发布:手机键盘映射软件 编辑:程序博客网 时间:2024/05/22 10:41

代码如下:

     assume cs: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     stack ends     code segment     start:mov ax,stack           mov ss,ax           mov sp,16           mov ax,data           mov ds,ax           mov bx,0           mov cx,8       s:  push [bx]           add bx,2           loop s           mov bx,0           mov cx,8       s0: pop [bx]           add bx,2           loop s0           mov ax,4c00h           int 21h  code  endsend  start

     我们如何让cpu来按我们设置的“代码段”,“数据段”,“堆栈段”来执行呢?是cpu能识别
例如“code”,“data”,“stack”吗?还是cs:code ,ds:data相关联呢?都不是!
     所有这些字母cpu都不会认识,在程序的最后用end start 说明了程序的入口,
关联后,stack会被编译成栈段地址,data也会编译成数据段地址。
在执行mov ss,ax的时候才把ss定为堆栈段。
总之cpu如何去何处理我们定义的段中的内容,是当指令执行,当数据访问,还是当堆栈空间,
完全是靠程序中具体的汇编指令,和汇编指令对cs:ip,ss:sp .ds等寄存器的设置来完成的

0 0
原创粉丝点击