首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

王爽 编译语言第二版 实验9 根据材料编程 代码及分析

2012-10-23 
王爽 汇编语言第二版实验9 根据材料编程 代码及分析题目要求:在屏幕中间分别显示绿色,绿底红色,白底蓝色的

王爽 汇编语言第二版 实验9 根据材料编程 代码及分析

          题目要求:在屏幕中间分别显示绿色,绿底红色,白底蓝色的字符串 'welcome to masm!'


          通过阅读教材资料我们能获取的信息如下:
   1、显示器默认显示的缓冲区是:B8000~B8F9F,低字节放字符,高字节放属性
     2、存放字符的地址:第一行:B8000~B809F,第二行:B80A0~B813F 第三行:B8140 ~ B81DF
   3、即偶数字节放字符,奇数字节放属性
           4、如何显示:只要把字符依次放入缓冲区即可
           5、颜色属性怎么表示:绿色:0000 0010 (02h),绿底红字:0010 0100(24h),白底蓝字(71h)

          我只写了在显示器起始处显示三行,至于在屏幕中间显示,只要加一个偏移量就好了,运行结果如下:

 王爽 编译语言第二版  实验9 根据材料编程 代码及分析



自己写的代码如下,请参考,不知道还能不能再优化一下:

assume cs:codesg,ds:data,ss:stackdata segmentdb 'welcome to masm!'db 2,24h,71hdata endsstack segmentdb 16 dup(0)stack endscodesg segmentstart:mov ax,stack  ;定义栈,多重循环需用到栈mov ss,axmov sp,0mov ax,data;定义数据区mov ds,axmov cx,3     mov ax,0B800H  ;缓冲区的第一页首地址mov es,axmov si,10h     ;si偏移至存储颜色的地址mov ax,0 s:    mov ah,ds:[si]       ;用ah保存字符颜色      push cx      ;将cx,si入栈保存      push si      mov cx,16      mov si,0      mov bx,0      mov di,1       inputCh:              ;输出一行welcome to masm!mov al,[bx]mov es :[bx + si],al   ;写字符mov es:[bx + di],ah    ;写字符属性inc bx          ;遍历字符串inc siinc diloop inputChpop si;si出栈inc si     ;指向下一个颜色pop cxmov dx,es   ;接下来三条指令将es指向下一行add dx,0ahmov es,dxloop ss1:                 ;最初程序执行太快,看不到现象,加一个死循环,用于看结果    jmp short s1codesg endsend start
希望对跟我一样的初学者有帮助 .

 



















热点排行