
! 测试输入的段值。必须位于内存地址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)代替地址码。
这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。
用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理的系统软件。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)