![]() | 第11章 更高级的技术 | -293- | |||||||||||||||||||
关于环境信息的问题有必要在此解释一下。所谓环境信息,其实就是我们通过CONFIG.SYS和AUTOEXEC.BAT设置的"PROMPT=???"、"PATH=???"以及其它使用"SET"命令设置的内容。这些内容由DOS组织在一起形式DOS的环境信息。为了能够上用户编制的程序也能使用这些信息,DOS每次在调入一个可执行程序时都要额外分配一块内存空间将组织好的环境信息复制一份。这一块内存的段地址存放在程序段前缀(PSP)偏移002CH处,占两个字节。 环境信息都是由ASCII码组成的字符串,从环境内存段偏移0处开始,每个字符串都以00H结尾。环境信息总的结尾处还有一个00H。程序ENVIR.ASM可以在屏幕上显示DOS的环境信息: |
|||||||||||||||||||||
ENVIR.ASM code main msg start: disploop: |
segment assume org proc jmp db mov mov int mov mov mov xor call mov mov int mov int cmp jnz mov int |
cs:code,ds:code 100h near start 'Environment:',0dh,0ah,0 ah,9 dx,offset msg 21h bx,002ch ax,word ptr [bx] ds,ax si,si dispchr ah,02h dl,0dh 21h dl,0ah 21h byte ptr [si],0 disploop ah,4ch 21h |
;跳过数据区 ah,24h ;显示字符串MSG ;BX寄存器指向PSP偏移2CH处 ;从[BX]地址处取得一个字数据 ;这个数据就是环境块的段地址 ;SI寄存器指向环境块首 ;输出一个以0结尾字符串 ;输出回车、换行符 ;已经显示了所有的环境信息吗? ;未显示完所有信息,转DISPLOOP ;结束进程 |
||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |