在屏幕上显示一段带颜色的文字(汇编)

复制代码
;object: show string with color
;writer: mike
;time: 2020.10.26

assume cs:code,ds:data,ss:stack


data segment
        db    'welcome to masm',0


data ends

stack segment stack
        db 128 dup(0)



stack ends

code segment

start:    

        mov ax,stack
        mov ss,ax
        mov sp,128         ;设置栈地址



        mov bx,data
        mov ds,bx
        mov si,0              ;数据从哪里来

        mov bx,0B800H
        mov es,bx
        mov di,160*8
        add di,3*2            ;数据到哪里去,不要问为什么

        call showString

        mov ax,4C00H
        int 21H


;=====================================


showString:
        push cx           ;为防止子程序改变主程序的值,因此将寄存器的值保存到内存中
        push ds
        push es
        push si
        push di
        mov cx,0           ;这里相当于一个loop,这里执行一次循环
showString1:
        mov cl,ds:[si]      ;判断是否到了字符串结尾
        jcxz showStringReg   ;只针对cx 寄存器
        mov es:[di+0],cl
        mov byte ptr es:[di+1],00000010B ; 在字符后面加上了颜色

        add di,2
        inc si
        jmp showString    

showStringReg:
        pop di        ;取出内存中的值
        pop si
        pop es
        pop ds
        pop cx
        ret

code ends
end
复制代码

 

 

 

posted @   看星星的派大星  阅读(178)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2019-10-30 简单实现KNN(处理连续型数据)
点击右上角即可分享
微信分享提示