ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

使用汇编在屏幕上打印字符

2021-06-20 21:32:03  阅读:173  来源: 互联网

标签:汇编 T17 字符 MOV SI CX BP AX 屏幕


80*25彩色字符模式显示缓冲区结构:

1.B8000H~BFFFFH共32KB空间,分8页,每页(4KB),一般情况下显示第0页内容

2.每行80字符,占160B空间,共25行。(共计4000B)

3.每个字单元的高位放字符属性,低位放ASCII 码值,共一字(2B)

字的属性的格式:

     7    6   5   4    3     2   1   0  (bit)
含义 BL   R   G   B    I     R   G   B
    闪烁     背景     高亮    字体颜色
R:红色
G:绿色
B:蓝色

 在屏幕每行前12字符位置打印hello world

ASSUME CS:T17,DS:DATA
DATA SEGMENT
  DB 'HELLO WORLD!'
DATA ENDS

T17 SEGMENT
START:
  MOV AX,DATA
  MOV DS,AX             ;字符放入ds
  MOV CX,25
  MOV AX,0B800H
  MOV ES,AX             ;显示缓冲区段地址放入es
  MOV BP,0H
S:
  MOV DX,CX
  MOV CX,12
  MOV SI,0
  MOV BX,0
S0:                     ;打印hellow world
  MOV AL,DS:[BX]
  MOV AH,02H
  MOV ES:[SI+00H+BP],AX
  ADD SI,2
  INC BX
LOOP S0
  MOV CX,68
  MOV SI,0
S1:                      ;其余部分黑色清屏
  MOV AX,0
  MOV ES:[SI+17H+BP],AX
  ADD SI,2
LOOP S1
  ADD BP,0A0H
  MOV CX,DX
LOOP S

  MOV AX,4C00H           ;退出   
  INT 21H
T17 ENDS
END START

 略微更改,实现清屏效果

ASSUME CS:T17

T17 SEGMENT
START:
  MOV CX,25
  MOV AX,0B800H
  MOV ES,AX
  MOV BP,0H
S:
  MOV DX,CX
  MOV CX,80
  MOV SI,0
S1:
  MOV AX,0
  MOV ES:[SI+00H+BP],AX
  ADD SI,2
LOOP S1
  ADD BP,0A0H
  MOV CX,DX
LOOP S
  MOV AX,4C00H
  INT 21H
T17 ENDS
END START

 

标签:汇编,T17,字符,MOV,SI,CX,BP,AX,屏幕
来源: https://blog.csdn.net/wu58430/article/details/118074975

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有