目录 上一页 下一页 附录A

第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

目录 上一页 下一页 附录A