[040][汇编语言]实验9 绿字、绿底红字、白底蓝字显示字符串'welcome to masm!'

实验9 绿字、绿底红字、白底蓝字显示字符串'welcome to masm!'

[040][汇编语言]实验9 绿字、绿底红字、白底蓝字显示字符串'welcome to masm!'_第1张图片
实验9 绿字、绿底红字、白底蓝字显示字符串'welcome to masm!'

完整源码

assume cs:code,ds:data
data segment
    db 'welcome to masm!'
data ends

code segment
    start:  mov ax,data
            mov ds,ax
            mov ax,0B800H
            mov es,ax
            
            mov di,0
            mov bx,38H
            mov cx,10H
                        
            s0: mov si,0AA0H    
            
                mov al,ds:[di]
                mov es:[si+bx+0],al
                
                mov al,02H
                mov es:[si+bx+1],al
                
                
                add si,160
                mov al,ds:[di]
                mov es:[si+bx+0],al
                
                mov al,24H
                mov es:[si+bx+1],al
                
                add si,160
                mov al,ds:[di]
                mov es:[si+bx+0],al
                
                mov al,71H
                mov es:[si+bx+1],al
                    
                add bx,2
                inc di  
            loop s0 
    
        mov ax,4c00H
        int 21H
    
    code ends
    end start

代码说明

  • 目前的代码:满足属性要求,但是不满足居中显示。
  • 代码执行过程:每次访问一个字符,写三行,设置不同的属性。
  • 访问与写入字符
访问单个字符
 mov al,ds:[di]
设置字符ASCII码 [行+列+低位放ASCII码]      
 mov es:[si+bx+0],al

设置属性
 mov al,02H
设置字符属性 [行+列+高位放属性]
 mov es:[si+bx+1],al
  • 属性计算规则
0 - 否定:不闪烁、没红、没绿、没蓝、不高亮
1 - 肯定:闪烁、有红、有绿、有蓝、高亮
[040][汇编语言]实验9 绿字、绿底红字、白底蓝字显示字符串'welcome to masm!'_第2张图片
属性格式.png

神奇的BUG

BBBBBBBBBBBBB

参考

  • 居中的计算可以参考 http://blog.chinaunix.net/uid-29004880-id-4084432.html

你可能感兴趣的:([040][汇编语言]实验9 绿字、绿底红字、白底蓝字显示字符串'welcome to masm!')