• 程序分区


    计算机科学家,为了能够更好的管理,设计程序。
    为我们提供了一种抽象思维,把程序分成几个不同的区域。
    当然,这仅仅是我们用汇编语言的时候,并且没有操作系统的情况下,才需要这种抽象思维。
    现在我们是在没有操作系统上的计算机进行模拟程序运行。


    当然下面的这幅图仅仅是参考,并非绝对的。






    程序的概念:


    section data1 align=16 vstart=0;ds:0x07c0
    mydata1:db 0x11


    section data2 align=16 vstart=0;ds:0x07c1
    mydata2:db 0x22

    section data3 align=16 vstart=0;ds:0x07c2
    mydata3:db 0x33

    mov ax,[mydata1]
    mov ax,[mydata2]
    mov ax,[mydata3]


    ;按照正常套路,如果我们写进引导区的话.
    ;0 ds:07c0 bx:0
    ;1 ds:07c0 bx:1
    ;2 ds:07c0 bx:2


    ;0x07c00  ds:07c0 :bx:0
    ;0x07c00  ds:07c1 :bx:0
    ;0x07c00  ds:07c2 :bx:0



    mycode:
    mov ax,0x07c0
    mov ds,ax ;初始化数据段寄存器

    mov ax,0xb800
    mov es,ax ;初始化显存段寄存器

    mydata1:
    db 0x11

    mydata2:
    db 0x22

    mydata3:
    db 0x33

    stop:
    jmp near stop

    times 510-($-$$) db 0
    dw 0xAA55


    Intel处理器要求段在内存中的起始物理地址起码是16字节对齐的。这句话的意思是,必须是16的倍数,或者说该物理地址必须能被16整除。

    这叫做内存对齐,包括硬盘里面有扇区对齐。

    对齐是为了能够快速定位,包括我们未来将要接触的内存分页,保护模式等概念,都是为了让计算机变的运算能力更加快速。
    为了让大家理解这个概念,我举个例子。


    NASM编译器提供了以下的表达式,可以用在你的程序中: section.段名称.start

  • 相关阅读:
    Team Queue(队列)
    括号匹配(栈+贪心)
    string操作
    树状数组优化+dp
    最短路径变形(最大值的最小值)
    D. Ehab the Xorcist(异或和关系)
    2019 计蒜之道 第五场 A(set的应用)
    2019 计蒜之道 第三场 D(找规律+欧拉降幂)
    hdu 3507 Print Article(斜率优化dp入门题)
    oj 26319 最大子序和
  • 原文地址:https://www.cnblogs.com/xiaodaxiaonao/p/7341455.html
Copyright © 2020-2023  润新知