基础-5

多个代码段的程序

这种思想即: 将程序分为代码段,数据段,栈段

为规范内存的使用,程序员是不能随便决定内存空间的使用,应该让系统进行分配例如 数据段的并且连接的程序段.

数据段指令dw(define word):

       dw 1020h,2123h,0f212h  //定义字数据 若是在程序开头定义,则其偏移地址分别为0 2 4.  按照字符编址的.

//传输数据的宽度,则是能找到字符数据的地址位数.即可寻址范围

要注意:  定义的字数据段的数据长度和偏移地址的关系. 偏移地址以字符为单位编址,就先把定义的数据段计算出占多少字符.再加上当前偏移地址,并用16进制进行表示.

同时,定义了这些数据,也等价于申请了一定的内存空间.

通过end 标记//来指明代码段执行的入口


多段框架

将栈段,数据段,代码段分别处理

assume cs:code,ds:data,ss:stack  //这一句只是提醒编译器,而无任何实质性作用

data segment

dw 0123h , 0223h , 0323h , 0254h ,0fff2h

data ends

stack segment

dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

stack ends

code segment

start:    mov ax,stack   //stack段 地址    

            mov ss,ax        //设置栈段寄存器

            mov sp,1Ch     //设置栈偏移地址(最大地址,栈底)

            mov ax,data     //data段  地址  

            mov ds,ax       //设置数据段的段寄存器

            mov bx,0

            mov  cx,8

           s:  push  [bx]

                add bx,2

           loop  s


             mov  ax,4c00h

             int 21h

code ends

end start

这段程序中,stack ,data , code ,start均为可变的名称。assume 只是关联了寄存器和段名并未让寄存器真正的赋值。cpu会根据end start 中start的标志来明确cs:ip的执行接口。分开段写目前有两个优点:1,有标志代表stack,data的入口地址。 2,容易区分

但是在过程中,其在内存中的分布依然是连续的。内存的分配和段的位置是相关的。

汇编中不能使用//进行注释

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 8086汇编 本笔记是笔者观看小甲鱼老师(鱼C论坛)《零基础入门学习汇编语言》系列视频的笔记,在此感谢他和像他一样...
    Gibbs基阅读 37,591评论 8 114
  • 王爽汇编全书知识点大纲 第一章 基础知识 机器语言 汇编语言的产生 汇编语言的组成 存储器 cpu对存储器的读写 ...
    2c3ba901516f阅读 7,063评论 0 1
  • 汇编总结 汇编的发展史 机械语言 由0和1组成的机器指令(如:0101 0001 1101 0110) 汇编语言(...
    iChuck阅读 5,098评论 1 8
  • 越底层越单纯!真正的程序员都需要了解的一门非常重要的语言,汇编! 机器语言 我们所写的语言最终安装在机器上的是什么...
    瑞阳gg阅读 3,808评论 0 0
  • 计算机通过执行指令序列来使机器得以工作,所以对于每一系列的计算机都有指定的一组指令集供计算机使用,这组指令...
    未来科技工作室阅读 12,505评论 1 10