用汇编将数组输出到屏幕上语言完成在屏幕中间分别显示黑底绿色,绿底红色,白底蓝色的字符串:“welcome to masm!”

问题1:在屏幕中间分别显示绿底绿底红色,白底蓝色的字符串“Welcome to masm!”

1 如何确定字符要显示的位置

  • 在80*25的彩色字符模式显示缓冲区在内存地址的B8000H~BFFFFH共32KB的空间中
  • 在该模式下显示器可以显示25行,80列
  • 所以在一行中就有80个字符共占据160个字节,每个字符低位字节存储字符的ASCII码高位字节存储字符的颜色属性
  • 偏移F对应的僦是显示器上的第一行;
  • 偏移0A00~13F0对应的就是显示器上的第二行;......依次类推

确定3行字符在每一行的起始位置

  • 因为显示的在屏幕的中间,共需要32個字节屏幕中一行共160个字节,所以开始字节为(160 - 32)/ 2 = 64

确定3行字符在屏幕中的哪一行

  • 因为屏幕中一共25行要显示3行字符串,一行有160个字符串则第一行的开始位置是(25 - 3)/ 2 * 160 = 6E0H

2 如何确定字符要显示的颜色属性

  • 每个字符的颜色属性占据一个字节,每一位表示的不同的颜色属性则共有256種颜色属性
 mov es,ax ;设置显示内存空间的起始位置
 mov si,64 ;设置字符串在一行中的中间位置
 
 mov cx,16 ;设置循环的次数为字符串的长度
 
 mov ah,20H ;设置第一行的开始位置和颜色
 
 mov ah,42h ;设置第二行的开始位置和颜色
 
 mov ah,71h ;设置第三行的开始位置和颜色
 add si,2 ;设置下一次循环的写入位置
 

问题2:设计一个子程序,使调用者决定显示的位置內容和颜色

 
 
  • 要实现的功能:在指定的位置,用指定的颜色显示一个用0结束的字符串
  • 指定的参数:行号-dh(取值范围0~24),列号-dl(取值范围0~79)取值范围主要是根据显示器屏幕的大小
  • 颜色-cl,ds:si指向字符串的首地址
 
 mov di,ax ;设置di指向字符串要显示的偏移地址
 jcxz ok ;设置在遇到字符0的时候退出

编程:在屏幕中间分别显示绿色、綠底红色、白底蓝色的字符串'welcome to masm!'

编程:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串'welcome to masm!'

编程序在屏幕的中间分别显示綠色、绿底红色、白底蓝色的字符串 ‘YantaiUniversity’
提示:要计算出“屏幕的中间”对应的内存单元,然后将字符以及对应的属性字节写入到内存中
下面是程序,以及运行结果

我要回帖

更多关于 汇编将数组输出到屏幕上 的文章

 

随机推荐