王爽《汇编语言》第三版 第六章 包含多个段的程序

本文介绍了汇编语言的基础概念,包括如何在代码段中定义和使用数据、如何区分代码段、数据段和栈段,以及如何通过不同的汇编指令来操作这些段中的内容。

6.1 在代码段中使用数据

  

  “dw”的含义是定义字型数据。dw即define word。

  由于它们在代码段中,程序在运行的时候CS中存放代码段的段地址,所以我们可以从CS中得到它们的段地址。

  因为用dw定义的数据处于代码段的最开始,所以偏移地址为0,这8 个数据就在代码段的偏移0、2、4、6、8、A、C、E处。

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

  
6.2 在代码段中使用栈


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

  我们用和定义代码段一样的方法来定义多个段,然后在这些段里面定义需要的数据,或通过定义数据来取得栈空间。

  我们要将它送入bx中,就要用如下的代码:
    mov ax,data
    mov ds,ax
    mov bx,ds:[6]
  我们不能用下面的指令:
    mov ds,data
    mov ax,ds:[6]

  程序中对段名的引用,如指令“mov ds,data”中的“data”,将被编译器处理为一个表示段地址的数值。

  “代码段”、“数据段”、“栈段”完全是我们的安排。

  “assume cs:code,ds:data,ss:stack”将cs、ds和ss分别和code、data、stack段相连。

  CPU到底如何处理我们定义的段中的内容,是当作指令执行,当作数据访问,还是当作栈空间,完全是靠程序中具体的汇编指令,和汇编指令对CS:IP、SS:SP、DS等寄存器的设置来决定的。

 

参考资料:《小甲鱼汇编零基础入门》

 

     《汇编语言》第三版

转载于:https://www.cnblogs.com/mubu/p/6359904.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值