汇编中用在图形模式下显示汉字
2008-05-06 21:49
381 查看
HZ MACRO X,Y,CHAR,COLOR
LOCAL DATASEGMENT,HZK,START,HZKHD,HZBUF,ASCTOQW,STRING
LOCAL CODESEGMENT,XPOINTER,YPOINTER,INIT,EXIT
LOCAL INIT1,INIT2,NEXT,NEXT1,NEXT2,INIT3
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH SI
PUSH DI
PUSH BP
PUSH DS
PUSH ES
JMP START
DATASEGMENT:
XPOINTER DW X
YPOINTER DW Y
HZK: DB 'HZK16',0
HZKHD: DW ?
HZBUF: DB 32 DUP (0)
STRING: DB CHAR,0,255
CODESEGMENT:
START:
MOV AX,CS
MOV DS,AX
MOV ES,AX
MOV AH,3DH ;
LEA DX,HZK ;OPEN HZK
MOV AL,0 ;
INT 21H ;
LEA SI,HZKHD ;SAVE FILE HZK16 HELDER
MOV [SI],AX ;
LEA SI,STRING
ASCTOQW:
MOV AL,[SI]
CMP AL,0
JZ INIT
SUB AL,161
MOV [SI],AL
INC SI
JMP ASCTOQW
INIT:
LEA SI,STRING
init1:
push si
MOV AL,[SI]
CMP AL,0
JNZ INIT2
LEA BX,EXIT
JMP BX
INIT2:
MOV AH,0
MOV BH,0
MOV BL,94
MUL BL
INC SI
MOV BL,[SI]
MOV BH,0
ADD AX,BX
MOV BX,32
MUL BX
MOV CX,DX
MOV DX,AX
LEA SI,HZKHD
MOV BX,[SI]
MOV AH,42H
MOV AL,0
INT 21H
LEA SI,HZKHD
MOV BX,[SI]
LEA DX,HZBUF
MOV CX,32
MOV AH,3FH
INT 21H
PUSH AX ;PSET ONE HANZI
PUSH BX ;
PUSH CX ;
PUSH DX ;
PUSH SI ;
PUSH DI ;
PUSH BP ;
LEA SI,XPOINTER ;
MOV CX,[SI] ;
LEA SI,YPOINTER ;
MOV DX,[SI] ;
MOV DI,CX ;
ADD DI,16 ;
MOV BP,DX ;
ADD BP,16 ;
MOV AH,0CH ;
MOV AL,COLOR ;
MOV BH,0 ;
LEA SI,HZBUF ;
NEXT2:
MOV BX,[SI] ;
XCHG BH,BL
NEXT1:
ROL BX,1 ;
PUSH BX ;
AND BX,1 ;
CMP BX,0 ;
JZ NEXT ;
INT 10H ;
NEXT:
INC CX ;
POP BX ;
CMP CX,DI ;
JB NEXT1 ;
SUB CX,16 ;
INC DX ;
INC SI ;
INC SI ;
CMP DX,BP ;
JB NEXT2 ;
LEA SI,XPOINTER ;
MOV AX,[SI] ;
ADD AX,16 ;
MOV [SI],AX ;
POP BP ;
POP DI ;
POP SI ;
POP DX ;
POP CX ;
POP BX ;
POP AX ;
POP SI
INC SI
INC SI
INIT3:
LEA BX,INIT1
JMP BX
EXIT:
pop si
LEA SI,HZKHD
MOV BX,[SI]
MOV AH,3EH
INT 21H
POP ES
POP DS
POP BP
POP DI
POP SI
POP DX
POP CX
POP BX
POP AX
ENDM
LOCAL DATASEGMENT,HZK,START,HZKHD,HZBUF,ASCTOQW,STRING
LOCAL CODESEGMENT,XPOINTER,YPOINTER,INIT,EXIT
LOCAL INIT1,INIT2,NEXT,NEXT1,NEXT2,INIT3
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH SI
PUSH DI
PUSH BP
PUSH DS
PUSH ES
JMP START
DATASEGMENT:
XPOINTER DW X
YPOINTER DW Y
HZK: DB 'HZK16',0
HZKHD: DW ?
HZBUF: DB 32 DUP (0)
STRING: DB CHAR,0,255
CODESEGMENT:
START:
MOV AX,CS
MOV DS,AX
MOV ES,AX
MOV AH,3DH ;
LEA DX,HZK ;OPEN HZK
MOV AL,0 ;
INT 21H ;
LEA SI,HZKHD ;SAVE FILE HZK16 HELDER
MOV [SI],AX ;
LEA SI,STRING
ASCTOQW:
MOV AL,[SI]
CMP AL,0
JZ INIT
SUB AL,161
MOV [SI],AL
INC SI
JMP ASCTOQW
INIT:
LEA SI,STRING
init1:
push si
MOV AL,[SI]
CMP AL,0
JNZ INIT2
LEA BX,EXIT
JMP BX
INIT2:
MOV AH,0
MOV BH,0
MOV BL,94
MUL BL
INC SI
MOV BL,[SI]
MOV BH,0
ADD AX,BX
MOV BX,32
MUL BX
MOV CX,DX
MOV DX,AX
LEA SI,HZKHD
MOV BX,[SI]
MOV AH,42H
MOV AL,0
INT 21H
LEA SI,HZKHD
MOV BX,[SI]
LEA DX,HZBUF
MOV CX,32
MOV AH,3FH
INT 21H
PUSH AX ;PSET ONE HANZI
PUSH BX ;
PUSH CX ;
PUSH DX ;
PUSH SI ;
PUSH DI ;
PUSH BP ;
LEA SI,XPOINTER ;
MOV CX,[SI] ;
LEA SI,YPOINTER ;
MOV DX,[SI] ;
MOV DI,CX ;
ADD DI,16 ;
MOV BP,DX ;
ADD BP,16 ;
MOV AH,0CH ;
MOV AL,COLOR ;
MOV BH,0 ;
LEA SI,HZBUF ;
NEXT2:
MOV BX,[SI] ;
XCHG BH,BL
NEXT1:
ROL BX,1 ;
PUSH BX ;
AND BX,1 ;
CMP BX,0 ;
JZ NEXT ;
INT 10H ;
NEXT:
INC CX ;
POP BX ;
CMP CX,DI ;
JB NEXT1 ;
SUB CX,16 ;
INC DX ;
INC SI ;
INC SI ;
CMP DX,BP ;
JB NEXT2 ;
LEA SI,XPOINTER ;
MOV AX,[SI] ;
ADD AX,16 ;
MOV [SI],AX ;
POP BP ;
POP DI ;
POP SI ;
POP DX ;
POP CX ;
POP BX ;
POP AX ;
POP SI
INC SI
INC SI
INIT3:
LEA BX,INIT1
JMP BX
EXIT:
pop si
LEA SI,HZKHD
MOV BX,[SI]
MOV AH,3EH
INT 21H
POP ES
POP DS
POP BP
POP DI
POP SI
POP DX
POP CX
POP BX
POP AX
ENDM
相关文章推荐
- 有关用C实现汉字的显示3:图形模式下的中英文显示
- 图形模式下的汉字显示
- 图形显示[ExpOS]开发经验(2)保护模式中不依赖bios
- 汇编语言:在屏幕上随机显示矩形色块,分手动和自动模式。
- nokia5110液晶屏显示汉字,图形,…
- 纯汇编NASM源码/显示相关函数/10H中断/纯汇编显示汉字/显示中文
- 有关汉字系统的关键技术/纯汇编显示中文/汉字显示/Nasm源码
- 【原创】演示文本方式下显示汉字的汇编源程序
- VGA显示卡图形模式访问(提示版) (1)
- VGA显示卡图形模式访问(提示版) (1)
- 汇编语言实现在80*25彩色字符模式下显示字符串
- zabbix里图形中的汉字显示乱码
- 关于汇编的图形显示
- word中visio图形中的汉字显示或打印为小方块的解决办法
- Turbo C使用的汇编函数 -- VGA 12H模式图形函数(一)
- 在PHP的图形函数中显示汉字
- 有关汉字系统的关键技术/纯汇编显示中文/汉字显示/Nasm源码
- ubuntu环境字符模式下汉字正常显示
- Turbo C使用的汇编函数 -- VGA 12H模式图形函数(二)
- NASM 纯汇编打造简单中文操作系统(3 kernel.asm 内核(实现汉字的显示,鼠标的支持等))