|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 雪球丶 于 2020-3-17 15:49 编辑
- assume cs:code
- data segment
- db 'welcome to masm!',0
- data ends
- code segment
- start:
- mov dh,8 ;行号
- mov dl,3 ;列号
- mov cl,2 ;颜色
- mov ax,data
- mov ds,ax
- mov si,0 ;ds:[si]字符串首地址
- call show_str
-
- mov ax,4c00h
- int 21h
-
- show_str:
- mov ax,0b800H ;显存地址
- mov es,ax
- ;计算像素点索引 8行3列 像素点索引=8*160+3*2
- add dl,dl
- mov al,dh
- mov bl,160
- mul bl ;计算出来的行号存储在ax中
-
- mov dh,0
- add ax,dx
- mov di,ax ;像素写索引
- mov dh,cl ;先用dl记录下颜色值,后面直接用dx寄存器写显存;CX寄存器在循环中会被用到,释放cl
- ws: ;写显存
- mov dl,ds:[si]
- mov es:[di],dx
- inc si
- add di,2
- ;查看下一位是否为0
- mov cx,0
- mov cl,ds:[si]
- jcxz wd ;若下一位为0,则跳转到wd处
- mov cx,2 ;给CX赋值,如果程序走到这里说明下一位不为0就让其不断循环继续往下写
- loop ws
- wd: ret
-
- code ends
- end start
复制代码
|
|