【學習筆記】彙編:關於80x86CPU視訊記憶體的規則
阿新 • • 發佈:2019-02-07
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