linux0.11中为什么es要位于64k边界

linux0.11中为什么es要位于64k边界,第1张

read_it:

! 测试输入的段值。必须位于内存地址64kb边界处,否则进入死循环。清bx寄存器,用于表示当前段内

! 存放数据的开始位置。

!

! es = 0x1000

mov ax,es

!//////////////////////////////////////////////

! test指令,实现将原 *** 作数用于和目的 *** 作数按位"与"运算,但是结果并不放在目的地址。

! test指令会影响到ZF的标志位。如果"与"的结果为0,那么zf=1。

test ax,#0x0fff

!/////////////////////////////////////////////

die: jne die ! es must be at 64kB boundary

! es的值必须是位于64k地址的边界,否则进入死循环。

xor bx,bx ! bx is starting address within segment

! bx是段内偏移地址。

rp_read:

! 判断是否已经全部读入数据。比较当前所读段是否就是系统数据的末端所处的段(endseg),

!如果不是,跳转到下面的ok1_read标号处继续读取数据。否则退出子程序返回。

!

!

mov ax,es

cmp ax,#ENDSEG ! have we loaded all yet?

jb ok1_read

ret

附加段寄存器ES:存放当前执行程序中一个辅助数据段的段地址。

段寄存器            

CS                  IP

SS                SP或BP

DS                BX、DI、SI

ES               DI(用于串指令)

汇编大多是指汇编语言汇编程序。把汇编语言翻译成机器语言的过程称为汇编。在汇编语言中,用助记符(Memoni)代替 *** 作码,用地址符号(Symbol)或标号(Label)代替地址码。

这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。

用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理的系统软件。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8729240.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-20
下一篇2023-04-20

发表评论

登录后才能评论

评论列表(0条)

    保存