马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 linha0 于 2011-7-4 21:52 编辑 assume cs:code,ds:data
data segment
db 'welcome to masm!',0 ;共16个ASCII码字符,16个字节
data ends
rgb segment
db 00000010b;0、黑底绿字
db 01000010b;1、红底绿字
db 01110001b;2、白底蓝字
db 00100100b;3、绿底红字
db 11000010b;4、红底闪烁绿字
db 01001010b;5、红底高亮绿字
db 00000111b;6、黑底白字
db 32 dup (0) ;存放CX,用于多重循环
rgb ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,rgb
mov ss,ax
mov sp,30h
mov ax,0b800h ;显示缓冲区的段地址
mov es,ax
;以上初始化各段
;测试1
mov bp,4 ;设置字体颜色编号
mov dh,0 ;设置行号(共25行)
mov dl,0 ;设置列号(共80列)
call show_str
;测试2
mov bp,6 ;设置字体颜色编号
mov dh,6 ;设置行号(共25行)
mov dl,30 ;设置列号(共80列)
call show_str
mov ax,4c00h
int 21h
show_str:
mov al,0a0h
mul dh ;计算行数的实际地址
mov di,ax
mov al,2h
mul dl ;计算列数的实际偏移地址
add di,ax
mov ah,[bp] ;取色
mov bx,0
mov si,0
mov ch,0
s: mov cl,[si]
jcxz ok
mov al,cl ;取字
mov es:[di][bx],ax ;显示字符.
inc si
add bx,2
jmp short s
ok: ret
code ends
end start
与书本不的题目要求略有不同。预先把一些颜色的二进制值存储在段中。
|