汇编-DOSbox-x居中显示“welcome to masm“

开始学习。
能运行就行。

一. 流程图

在这里插入图片描述

二. 代码

代码如下。
其中style为:

76543210
BLRGBIRGB
闪烁背景背景背景高亮字体字体字体
assume cs:code,ds:data,ss:stack
stack segment
stack ends

data segment  
    text db "welcome to masm!$"		;换成Hello World!更好
    style db 00101111B,00100100B,01110001B 
data ends

code segment
start:
    mov cx,16

handle:

    mov ax,data         ;获得数据段地址
    mov ds,ax           ;传递数据段地址
    lea bx,style        ;获得style数据的偏移地址

    mov dh,[si]         ;dh存储字符
    mov dl,[bx+0]       ;dl存储风格,+0,+1,+2选择不同的风格
    mov ax,0B800h       ;进入显示缓冲区

    ;mov ax,2000h       ;之前B800h一直报错
    ;add ax,9800h       ;想的bad idea
    
    mov ds,ax           ;传递数据段地址
    mov bx,1824         ;要求居中显示,因为是25*80大小,1字符需要2字节
                        ;得中心公式:(25/2-1)*160+((80/2-1)-(16/2-1))*2=1824
                        ;即偏移1824字节再开始赋值

    mov [bx+di+0],dh    ;赋字符
    mov [bx+di+1],dl    ;赋风格

    add si,1            ;源地址看作字节寻址,故+1
    add di,2            ;目标地址看作字寻址,故+2

    loop handle         ;一次循环处理一个字符的显示

    mov ax,4c00h        ;赋中断信息:程序返回
    int 21h             ;执行中断

code ends
 
end start 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值