zoukankan      html  css  js  c++  java
  • 王爽 汇编 实验9 根据材料编程

    一、实验要求:  在屏幕中间分别显示绿色、红底绿色、白底蓝色的welcome to masm!

    属性字节格式:

          7    6    5  4  3  2  1  0

    含义:   BL  R  G  B  I  R  G  B  

          闪烁   背景色     高亮  背景色

    R:红色

    G:绿色

    B:蓝色

    绿色:0x03

    红底绿色:0x24

    白底蓝色:0x71  

    分析:屏幕中间的位置(第一行文字显示的位置):段地址:偏移地址=B800:0760

    二、代码实现

    assume cs:code,ds:data,ss:stack
    
    data segment
        db 'welcome to masm!'
        db 2,24h,71h    ;三个颜色对应的16进制代码
    data ends
    
    stack segment
        dw 8 dup(0)
    stack ends
    
    code segment
            ;初始化栈段
    start:  mov ax,stack
            mov ss,ax
            mov sp,10h
            
            ;初始化数据段
            mov ax,data
            mov ds,ax
            
            ;初始化显存段
            mov ax,0b800h
            mov es,ax
            
            
            mov bx,780h        ;要显示第一行的起始地址(25行的中间一行的开始位置即第12行的开始位置,12*160=1920=780h)
            mov si,10h         ;定义颜色属性的偏移地址
            
            
            mov cx,3
            ;外层循环处理显示三行数据
    s1:     mov ah,ds:[si]
            push cx            ;保存循环次数
            push si            ;保存颜色属性的偏移地址      
            
            mov cx,16          ;循环处理要显示的16个字符串
            mov si,64          ;要显示的数据相对于这一行的偏移地址(字符串居中的位置)
            mov di,0           ;数据段数据列的偏移量
    
            ;处理每一行要显示的数据
    s2:     mov al,ds:[di]       ;数据段中的数据存储到ax低位寄存器
            mov es:[bx+si],al     ;ax低位寄存器数据赋值到es段的偏移地址的单元中
            mov es:[bx+si+1],ah    ;传递颜色属性
    
            inc di               ;data段字符的偏移量,每次加 1 
            add si,2            ;显示缓存区字符ASCII码偏移量为2    
            
            loop s2
            
            pop si
            pop cx
            
            ;准备下一行要显示的数据地址
            inc si            ;指向下一个颜色
            add bx,0a0h          ;指向下一行(长度160=a0)
            
            
            loop s1        
    
            mov ax,4c00h
            int 21h
    code ends
    end start

    三、上机调试

    待续

    参考链接:https://www.cnblogs.com/nojacky/p/9497704.html        

  • 相关阅读:
    甲方提供核心jar包,添加到本地maven仓库
    Flexigrid详解
    在idea中使用CheckStyle来规范代码
    对List集合中的对象进行按某个属性排序
    Layui数据表格总结篇
    jQuery入门看这一篇就够了
    JAVA常量类的实现方式
    HTML5和CSS3提高
    CSS高级技巧总结
    CSS入门总结
  • 原文地址:https://www.cnblogs.com/TonyJia/p/12587267.html
Copyright © 2011-2022 走看看