第 6 章 包含多个段的程序

《汇编语言第三版》王爽著  ------读书笔记 

6.1 在代码段中使用数据

       在规范的角度来讲,应该由系统来为我们分配内存空间.

 

伪汇编指令(编译器识别)

db: 定义字节类型变量

dw: 定义字类型变量

dd: 定义双字类型变量

程序

assume cs:code

code segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h'

start: mov bx,0
       mov ax,0
  
       mov cx,8
     s:add ax,cs:[bx]
       add bx,2
       loop s

       mov 4c00h
       int 21h

code ends

end start

可执行程序

     由  描述信息 和 程序 组成,

    描述信息: 主要是编译,连接程序对源程序中相关伪指令进行处理得到的信息

     程序:       来自于 源程序中的汇编指令 和定义的数据;

 

伪指令 end 的作用

      end 除了通知编译器程序结束外,还可以通知编译器程序的入口在什么地方

      例:end start  指明了程序的入口在标号 start处,标号 start 是一个地址

      在编译、连接后,由 " end start " 指明的程序入口,被转化为一个入口地址,

       存储在可执行文件的描述信息中

    当程序被加载进内存后,加载者从程序的可执行文件的描述信息读到程序的入口地址,

    设置CS:IP

归根结底:可安排 程序的框架

assume cs:code

code segment

      ...数据...

start:

      ...代码...

code ends

end start

 

6.2 在代码段中 使用 栈

          回顾第三章 栈的知识点

 

6.3 将数据,代码,栈放入不同的段

原因:

     1)放到同一个段中使程序显得混乱

     2)在8086模式中,一个段的容量 不能大于 64KB程序框架:


assume cs:code

data segment
   dw 0123h,0456h
data ends

stack segment
   dw 0,0,0,0
stack ends

code segment

start: 第一条命令

code ends

end start

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值