开始学习。
能运行就行。
一. 流程图
二. 代码
代码如下。
其中style为:
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
BL | R | G | B | I | R | G | B |
闪烁 | 背景 | 背景 | 背景 | 高亮 | 字体 | 字体 | 字体 |
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