博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
程序分区
阅读量:7217 次
发布时间:2019-06-29

本文共 957 字,大约阅读时间需要 3 分钟。

计算机科学家,为了能够更好的管理,设计程序。

为我们提供了一种抽象思维,把程序分成几个不同的区域。
当然,这仅仅是我们用汇编语言的时候,并且没有操作系统的情况下,才需要这种抽象思维。
现在我们是在没有操作系统上的计算机进行模拟程序运行。
当然下面的这幅图仅仅是参考,并非绝对的。
程序的概念:

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

转载于:https://www.cnblogs.com/xiaodaxiaonao/p/7341455.html

你可能感兴趣的文章
云虚机选购指南之二云虚拟主机试用帮助文档
查看>>
女友眼中的IT男
查看>>
Excel连接
查看>>
java基础-多线程学习
查看>>
WPF打印原理,自定义打印
查看>>
HTML5 5
查看>>
箭头css
查看>>
Python入门,以及简单爬取网页文本内容
查看>>
顺丰科技笔试回忆
查看>>
excel技巧
查看>>
通用防SQL注入漏洞程序(Global.asax方式)
查看>>
服务器进程为何通常fork()两次
查看>>
python中的logger模块
查看>>
9.3、理解作用域与全局变量
查看>>
ios序列化最终方案
查看>>
HttpMessageConverter 专题
查看>>
oracle系统包——dbms_random用法及order by 小结(转)
查看>>
android布局基础及范例:人人android九宫格布局
查看>>
Entity Framework数据库初始化四种策略
查看>>
hdu5033 Building (单调栈+)
查看>>