• 程序分区


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


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






    程序的概念:


    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

  • 相关阅读:
    multiprocessing.Pool报pickling error
    Python 数据库的Connection、Cursor两大对象
    python中的tcp示例详解
    Python网络编程篇之select和epoll
    python select epoll poll的解析
    python网络编程——IO多路复用之epoll
    python实现并发服务器实现方式(多线程/多进程/select/epoll)
    python select模块
    CRM客户关系管理系统(七)
    CRM客户关系管理系统(六)
  • 原文地址:https://www.cnblogs.com/xiaodaxiaonao/p/7341455.html
Copyright © 2020-2023  润新知