大学《汇编语言》(王爽) 实验 按照要求的属性来输出字体

《汇编语言》书p187-189页(王爽)实验9 按照要求的属性来输出字体

题目要求

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

解题代码

  写出一个颜色的代码后,另外两个只需要修改一下字体属性即可完成题目要求。 =_=

书中关于属性的参考

内存地址中,B8000H~BFFFFH共32kb的空间,是80×25彩色字符模式的显示缓冲区,所以在这个地址空间写入数据,数据的内容将立即出现在显示器上。

在一页的显示缓冲区中:

偏移000~09F对应显示器上的第一行(80个字符占160个字节)
偏移0A0~13F对应显示器上的第二行
偏移140~1DF对应显示器上的第三行

一行中:

00~01单元对应显示器上的第一列
02~03单元对应显示器上的第二列
04~05单元对应显示器上的第三列
以此类推
76543210
闪烁绿高亮绿

其中6,5,4是背景; 2,1,0是前景。

所以可以得到我们的代码

assume cs:code  ;定义段,代码段,数据
;数据段
data segment
    db 'welcome to masm!'
data ends

;代码段
;stack segment  ;可有可无
;    db 16 dup(0)
;stack ends

code segment
    start:

;手动设置ds
    mov ax,data
    mov ds,ax
;设置显示缓冲区,用es来设置,向es记录的内润的hi之中写入数据,即可显示在dos控制台中
    mov ax,0B800h
    mov es,ax
;初始化si和di,si只想要复制的字符,di指向目的空间
mov si,0
mov di,10*160+60 ;也可以写1660

;设置循环次数
mov cx,16

s1:mov al,ds:[si];设置字符
mov ah,00000010b;设置显示属性
mov es:[di],ax
inc si
inc di
inc di
loop s1

mov si,0
mov di,12*160+60
mov cx,16

s2:mov al,ds:[si];设置字符
mov ah,00100100b;设置显示属性
mov es:[di],ax
inc si
inc di
inc di
loop s2

mov si,0
mov di,14*160+60
mov cx,16

s3:mov al,ds:[si];设置字符
mov ah,01110001b;设置显示属性
mov es:[di],ax
inc si
inc di
inc di
loop s3

;正常结束
    mov ax,4c00h
    int 21h
code ends
end start

成功完成实验

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值