博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
王爽《汇编语言》实验9
阅读量:6803 次
发布时间:2019-06-26

本文共 1548 字,大约阅读时间需要 5 分钟。

hot3.png

题目:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串’welcome to masm!’.

分析:根据所给材料可知,DOS全屏模式下,一屏最多可显示内容为80*25个字符,即显示25行,每行80个字符;显存的内存地址空间在B8000H~BFFFFH共32KB的空间处;显示缓冲区分为8页,每页4KB(约4000B),一般显示第0页,即对应的地址为B8000~B8F9F中的4000个字节,显示屏中的字符占两个字节,高字节存放属性,低字节存放要显示的ASCII码,则可推:

偏移000~09F在显示器的第1行
偏移0A0~13F在显示器的第2行
如果要居中显示,则分别占屏幕的12,13,14行,且从每行的第32个字符开始。由于每行占160(A0H)个字符,则可推12行的偏移位置从11*160=6E0H处开始。由于是从每行32个字符开始,则显示的偏移位置还要加上32*2=40H(每个显示字符占两个字节),这样如果要跳到下一行只需偏移位置加160(A0H);
同时由材料中的属性字节格式:BL RGB I RGB : BL 2bit控制闪烁,后面的RGB 3bit控制背景,I 1bit控制高亮,最后的3bit RGB控制前景色可知:
绿色:0 000 0 010B=2H,绿底红色:00 010 0 100=24H,白底蓝色:00 111 0 001=71H.

下面说明编写本程序的思路:

(1)设置从12行处开始
(2)读取一种颜色,循环16次依次将每个字符写入当前行数所对应的显存单元中
(3)设置偏移地址加A0H进入一行,重复第2步
这里涉及到了两层循环,外层控制行和颜色,内层控制列显示字符,对应代码如下:

assume cs:codesg,ss:datadata segment  db 'welcome to masm!'  ; 需要显示的字符数据  db 2H,24H,71H             ; 显示的颜色属性值:绿色,绿底红色,白底蓝色data endscodesg segmentstart: mov ax,data       mov ss,ax       mov bp,0       ; 得到date数据段地址              mov ax,0B800H       mov ds,ax       mov bx,6E0H    ; 得到显存居中的内存地址,从第12开始       mov di,0       mov cx,3   s0: mov ah,ss:[10H+di]   ; 得到数据段中颜色属性值       mov dx,cx       mov si,0       mov cx,16   s1: mov al,[bp]       mov [bx+si+40H],al   ; 设置数据段中显示字符,从第32个字符开始       mov [bx+si+41H],ah   ; 设置显示颜色属性       add si,2       inc bp       loop s1       add bx,0A0H          ; 跳转到显存中的下一行       inc di               ; 改变di,定位到date段中下一个颜色位置       mov bp,0       mov cx,dx       loop s0              mov ax,4C00H       int 21H	       codesg endsend start

则在MS-DOS7.10下运行结果如下:

转载于:https://my.oschina.net/websoft/blog/76952

你可能感兴趣的文章
在PPT中插入FLASH遇到的系列问题
查看>>
XSS研究4-来自外部的XSS攻击的防范
查看>>
Spring知识点总结-1
查看>>
微软私有云分享(R2)21 BMC提升B格
查看>>
MDSF:如何使用GMF来做TOGAF建模工具
查看>>
Spring Security简介
查看>>
打造一流的研发中心
查看>>
MCollective架构篇3-Puppet插件的部署及测试
查看>>
配置GNS使用CRT连接
查看>>
Java:集合类性能分析
查看>>
cms无法登陆
查看>>
JavaScript中事件处理
查看>>
VSTO 向office文档中插入内容
查看>>
【百度地图API】关于如何进行城市切换的三种方式
查看>>
How to provide highlighting with Spring data elasticsearch
查看>>
MongoDB 游标
查看>>
即将搭载人工智能芯片的华为Mate10,究竟会为业界带来什么?
查看>>
Android实现登录小demo
查看>>
AgentWeb是基于Android WebView一个功能完善小型浏览器库
查看>>
开放数据中心联盟推8个云计算应用模型
查看>>