鱼C论坛

 找回密码
 立即注册
查看: 2092|回复: 0

[汇编作业] 实验9 根据材料编程

[复制链接]
发表于 2018-8-8 11:06:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 奥普瓯江 于 2018-8-8 11:06 编辑

在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串'welcome to masm!'。
  1. assume cs:code, ds:data

  2. data segment
  3.         db 'welcome to masm!'                        ;数据段把welcome to masm!先填充到内存中
  4. data ends

  5. code segment
  6. start:  mov ax, data                                      ;为了把data段的地址传给段寄存器ds所以先传给ax再由ax传给ds        
  7.           mov ds, ax                                         ;把ax寄存器中储存的地址传给ds段寄存器
  8.           mov ax, 0b800h                                 
  9.           mov es, ax                                         ;把0b800地址传给补充段寄存器es   
  10.          
  11.           mov di, 0                                            ;掉用寄存器di付初值0
  12.           mov si, 0                                            ;掉用寄存器si付初值0
  13.           mov cx, 10h                                        ;设定循环次数10次

  14. y:       mov bx, 72                                           ;第一行像后挫72个字节然后写入
  15.           mov al, ds:[di]                                      ;data段中储存的ascll码16进制形式储存到al中
  16.           mov ah, 2h                                           ;赋予ascll码字符属性
  17.           mov es:[bx + si + 1760], ax                   ;把ax赋值给彩色内存缓冲区,这里面的1760是控制使得字符显示在横向80*25中间哪行bx是竖向中间si是控制每一个字节

  18.           mov bx, 232                                          ;以下同上
  19.           mov ah, 24h
  20.           mov es:[bx + si + 1760], ax

  21.           mov bx, 392
  22.           mov ah, 71h
  23.           mov es:[bx + si + 1760], ax
  24.       
  25.           inc di                                                    ;控制数据段data的循环
  26.           add si, 2h                                               ;控制录入内存中的循环
  27.           loop y

  28.           mov ax, 4c00h
  29.           int 21h
  30. code ends
  31. end start
复制代码


第一、需要知道缓存的格式及显示方式
1、内存地址是B8000h~BFFFFH这个范围,也就是说B8000H内存地址是第一页第一行第一个字节
2、每一行可以储存160个字节每一页一共可以储存4000个字节,也就是说第一页是B8000~B8F9F 这里是第一页,一共分为8页,在这里我设置成了向下横向移动8页(1760)纵向移动的用bx控制
3、属性控制一共有8个选项,并且他们都是以2进制0 1 控制的,这其中分为四个大的选项 闪烁、背景颜色、高亮、前景颜色,闪烁为一个单独的选项要不他是0要不是1,背景颜色,为三个基本色控制红、绿、蓝色,用这三个基本色可以配置出很多颜色具体如何使用《百度》, 高亮也是单独的一个不是0或者1,前景颜色也就是字体或者ASCLL码的颜色。
4、每一个字符有两个字节,低位字节控制的是属性比如或颜色,低位字节录入的是数据,高位字节录入的是属性,比如说颜色高亮等。
第二、就是用适当的方法吧这些字节复制到彩色显示的缓存字符段。(如上面程序)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 01:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表