-
一、实验内容
在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串‘welcome to masm!’。
-
二、实验目的
理解底层程序设计,学会按位设置属性字节,从而配置出不同的前景色和背景色。
-
三、程序流程图
注:cx1和cx2都是cx寄存器,记录循环次数,为了便于区分才设置的不同表示方法
-
四、内存状况截图
内存第一行(0700:0000~0700:000f)存储的是16个字节,即‘welcome to masm!’。
内存第二行前三个字节(0700:0010~0700:0012)存储的是02h、24h、71h,分别代表绿色、绿底红色、白底蓝色。
-
五、运行结果截图
-
六、代码
-
DATAS SEGMENT ;初始化数据 ;0123456789ABCDEF 共16位 db 'welcome to masm!' db 00000010B ;低地址存放ASCII码,高地址存放字符的属性 db 00100100B ;0000 0000 db 01110001B ; rgb rgb DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 DB 128 DUP (0) STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: ; MOV AX,STACKS MOV SS,AX MOV SP,128 MOV BX,DATAS MOV DS,BX MOV BX,0B800h MOV ES,BX MOV SI,0 ;从0开始访问 MOV DI,160*10+30*2 ;随便设置一个位置,偶数地址 MOV BX,10H MOV DX,0 MOV CX,3 ;循环次数 col: ;打印三行 PUSH BX PUSH CX PUSH SI PUSH DI MOV CX,16 MOV DH,DS:[BX] ;dh存放字符颜色,dl存放字符ascii row: MOV DL,DS:[SI] ;si是0,可以反复从字符串开头读取 MOV ES:[DI],DX ADD DI,2 INC SI loop row POP DI POP SI POP CX POP BX ADD DI,160 INC BX ;bx改变一个字节 loop col MOV AH,4CH INT 21H CODES ENDS END START