【学习笔记】汇编:关于80x86CPU显存的规则

80X86CPU显存存放在B800H:0000-B800H:(160D*25D×2D)即B800H:1F40H之间

遵循着偶数位为 ASCII码 奇数位为 颜色代码的规律 即每两个字节为一个像素

X轴按数学原则(0-159)Y轴与数学原则相反(0-24)

其中 颜色码又遵循 前四位为底色 后四位为字体色 且都是以ARGB的规律排列 (0000 0000B)

以下指令的作用是把welcome to masm!显示至DOS窗口的中间共25行

DATAS SEGMENT
	String db 'welcome to masm!'
	db	00000010B
	db	00100100B
	db	01110001B
	db	00000010B
	db	00100100B
	db	01110001B
	db	00000010B
	db	00100100B
	db	01110001B
	db	00000010B
	db	00100100B
	db	01110001B
	db	00000010B
	db	00100100B
	db	01110001B
	db	00000010B
	db	00100100B
	db	01110001B
	db	00000010B
	db	00100100B
	db	01110001B
	db	00000010B
	db	00100100B
	db	01110001B
DATAS ENDS

STACKS SEGMENT
    DB 128 DUP(0)
STACKS ENDS
;功能:把welcome to masm!用三种不同的颜色显示到二十四行中
;注:dos窗的分辨率为160*25
CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
	    	MOV AX,DATAS
	    	MOV DS,AX
	    	MOV SP,128
			MOV CX,24
			MOV DX,0
copyStringOut:
			MOV AX,CX
			MOV BX,24
			SUB BX,AX
			MOV SI,BX
			PUSH CX
			PUSH DX
			MOV CX,16
			MOV AX,0B800H
			MOV ES,AX
			MOV AX,0
			MOV BX,160*0+64
			ADD BX,DX
copyStringIn:
			MOV DI,AX
			MOV DL,DS:[DI]
			ADD DI,DI
			MOV ES:[BX+DI],DL
			MOV DL,DS:[16+SI]
			MOV ES:[BX+DI+1],DL
			INC AX
			loop copyStringIn
			POP DX
			POP CX
			ADD DX,160
			LOOP copyStringOut
    		MOV AH,4CH
    		INT 21H
CODES ENDS
    END START


你可能感兴趣的:(汇编)