一、程序状态寄存器
PSW(Program Status Word)为程序状态寄存器,这是一个16位寄存器,由条件码标志(flag)和控制标志构成:
bit0:CF
bit2:PF
bit4:AF
bit6:ZF
bit7:SF
bit8:TF
bit9:IF
bit10:DF
bit11:OF
其中,条件码标志用来记录程序中运行结果状态信息.由于这些状态信息往往作为后继条件转移指令的转移控制条件,所以称为条件码.这包括以下6位:
OF(Overflow Flag)溢出标志,在运行过程中,如操作数超出了机器能表示的范围则称为溢出,此时OF位置1,否则置0.
SF(Sign Flag)符号标志,记录运算结果的符号,结果为负时置1,否则置0.
ZF(Zero Flag)零标志,运算结果为0时ZF位置1,否则置0.
CF(Carry Flag)进位标志,记录运算时从最高有效位产生的进位值.例如,执行加法指令时,最高有效位有进位时置1,否则置0.
AF(Auxiliary carry Flag)辅助进位标志,记录运算时第3位(半个字节)产生的进位值.例如,执行加法指令时第3位有进位时置1,否则置0.
PF(Parity Flag)奇偶标志,用来为机器中传送信息时可能产生的代码出错情况提供检验条件.当结果操作数中1的个数为偶数时置1,否则置0
控制标志位有三个:
DF(Direction Flag)方向标志,在串处理指令中控制处理信息的方向用。当DF位为1时,每次操作后使变址寄存器SI和DI减量,这样就使串处理从高地址向低地址方向处理。当DF为0时,则使SI和DI增量,使串处理从低地址向高地址处理。
IF(Interrupt Flag)中断标志,当IF为1时,允许中断,否则关闭中断
TF(Trap Flaga)陷井标志,用于单步方式操作。当TF位为1时,每条指令执行完后产生陷阱,由系统控制计算机;当TF位为0时,CPU正常工作不产生陷阱。
二、中断屏蔽寄存器
中断屏蔽寄存器的I/O端口地址是21H,它的8位对应8个外设。
bit0:定时器(IR0)
bit1:键盘(IR1)
bit2:保留(IR2)
bit3:串行通讯口(2)(IR3)
bit4:串行通讯口(1)(IR4)
bit5:硬盘(IR5)
bit6:软盘(IR6)
bit7:打印机(IR7)
通过设置这个寄存器的某位为1或为1允许或禁止某种外设的中断.某位为0表示允许某种外设中断请求,某位为1表示某种外设的中断请求被屏蔽(禁止).
例如,只允许键盘中断,可设置如下中断屏幕字:
MOV AL,11111101B
OUT 21H,AL
如果系统中要新增设键盘中断,则可用下列指令实现:
IN AL,21H
AND AL,11111101B
OUT 21H,AL
三、中断命令寄存器
bit0:L0
bit1:L1
bit2:L2
bit3,bit4:0
bit5:EOI
bit6:SL
bit7:R
中断命令寄存器的I/O端口地址为20H,它的各个控制位可动态地控制中断处理过程,其中L2-L0三位指定IR0-IR7中具有最低优先级的中断请求.位6(Set Level)和位7(Rotate)控制IR0-IR7的中断优先级的顺序.位5(EOI)是中断结束位.当EOI为1时,当前正在处理的中断请求就被清除,所以在中断处理完成后,必须中断结束位置于1,否则以后将屏蔽掉对同级中断或低级中断的处理.当然在必要的时候,在中断处理程序中也可以用EOI命令清除当前的中断请求,使得在中断处理的过程中又能响应同级或低级的中断.
结束外中断用下面的指令:
MOV AL,20H
OUT 20H,AL
在发出一个EOI命令时,位7和位6有四种组合,其含义如下:
R SL
0 0 正常优先级方式
0 1 清除由L2-L1指定的中断请求
1 0 各中断优先级依次左循环一个位置
1 1 各中断优先级依次循环到由L2-L0指定的中断请求达到最低优先级位置上.
四、键盘状态字节
bit0=1:按下右移键Right Shift
bit1=1:按下左移键Left Shift
bit2=1:按下控制键Ctrl
bit3=1:按下交替键Alt
bit4=1:Scroll Lock状态已变换
bit5=1:Num Lock状态已变换
bit6=1:Caps Lock状态已变换
bit7=1:Insert状态已变换
五、键盘缓冲区结构
0040:001A BUFF_HEAD DW ? ;键盘缓冲区的首地址
0040:001C BUFF_TAIL DW ? ;键盘缓冲区的末地址
0040:001E KB_BUFFER DW 16 DUP(?) ;16个输入量的空间
0040:003E KB_BUFFER_END LABEL WORD
这个缓冲区是一个先进先出的循环队列,BUFF_HEAD和BUFF_TAIL是缓冲区的两个地址指针.当HEAD指和TAIL指针相等时,说明缓冲区为空.
六、彩色属性字节
bit0-bit3:前景(bit0:B,bit1:G,bit2:R,bit3:I)
bit4-bit6:背景(bit4:B,bit5:G,bit6:R)
bit7:闪烁(BL)
RGB分别表示红,绿,兰,BL表示闪烁,I为亮度,闪烁和亮度只应用于前景.
七、DOS预定义文件代号
0=标准输入设备
1=标准输出设备
2=标准错误输出设备
3=标准辅助设备
4=标准打印设备
八、文件代号式文件操作错误返回代码
01 非法功能号
02 文件未找到
03 路径未找到
04 同时打开的文件太多
05 拒绝存取
06 非法文件代号
07 内存控制块被破坏
08 内存不够
09 非法存储块地址
10 非法环境
11 非法格式
12 非法存取代码
13 非法数据
14 (未用)
15 非法指定设备
16 试图删除当前的目录
17 设备不一致
18 已没有文件
九、文件属性字节
bit0:只读
bit1:隐文件
bit2:系统文件
bit3:卷文件
bit4:子目录
bit5:归档位(该位为1表示:已写入并关闭了的文件(硬盘用))
十、存取代码
0--为读而打开文件
1--为写而打开文件
2--为读和写而打开文件
十一、磁道地址区
用BIOS功能对磁道进行格式化操作要求ES:BX寄存器指定一组磁道地址区,对磁道上的每一个扇区,必须有一个格式为T/H/S/B的四个字节的数据项,这里
T=磁道号
H=磁头号
S=扇区号
B=每扇区的字节数(00=128,01=256,02=512,03=1024)
十二、磁盘状态字节
用BIOS磁盘操作(AH=02,03,04,05)如果操作成功,则CF和AH置为0;如果操作失败,CF置为1,AH中返回表示出错原因的状态代码。
01 给磁盘I/O传送了非法命令
02 磁盘上没有发现地址标记
03 试图往写保护盘上写
04 没有找到指定的扇区
08 DMA超载运行
09 DMA超过64K的限制
10 读盘数据错(CRC)
20 软盘控制器出错
40 随机移动失败
80 回答失败