ITEEDU

附录C HGC单显仿真CGA程序

DATA

CRTC_ARG

DATA

CODE

MAIN

























SEGMENT
ASSUME
DB
DB
ENDP

SEGMENT
ASSUME
PROC
MOV
MOV

MOV
MOV
MOV

MOV
AND
OR
MOV

MOV
INT

MOV
MOV
OUT

MOV
MOV
OUT

MOV
MOV
MOV
XOR


DS:DATA
38H,28H,2DH,0AH,7FH,06H,64H,70H
02H,01H,06H,07H,00H,00H,00H,00H



CS:CODE
FAR
AX,DATA
DS,AX

AX,40H
ES,AX
BX,10H

AX,WORD PTR ES:[BX]
AX,0CFH
AX,20H
WORD PTR ES:[BX],AX

AX,0004H
10H

AL,3
DX,3BFH
DX,AL

AL,2
DX,3B8H
DX,AL

DX,3B4H
SI,OFFSET CRTC_ARG
CX,16
AH,AH










;初始化DS寄存器


;ES寄存器指向BIOS数据区

;BX指向显示卡标志字

;取得显示卡标志字
;设成CGA标志



;设置CGA显示模式4


;允许第二显示页



;允许图形模式



;DX指向HGC卡CRTC索引寄存器
;SI指向CRTC初始化数据表
;设置16个CRTC寄存器
;索引值清0

INITCRTC:























MAIN
CODE


MOV
OUT
INC
LODSB
OUT
INC
DEC
LOOP

CLD
MOV
MOV
MOV
XOR
MOV
REP

MOV
MOV
OUT

MOV
INT
ENDP
ENDS
END


AL,AH
DX,AL
DX

DX,AL
AH
DX
INITCRTC


CX,2000H
AX,0B800H
ES,AX
DI,DI
AX,0
STOSW

AL,8AH
DX,3B8H
DX,AL

AH,4CH
21H


MAIN


;输出CRTC寄存器索引

;DX指向数据端口
;取得一个CRTC初始化值
;并输出
;索引下一个CRTC寄存器
;DX指向索引端口
;设置全部16个CRTC寄存器

;清除显示缓冲区







;允许显示及APA格式



;结束程序