|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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
复制代码 与书本不的题目要求略有不同。预先把一些颜色的二进制值存储在段中。
|
|