|
发表于 2011-10-23 14:43:44
|
显示全部楼层
本帖最后由 tsembrace 于 2011-10-23 14:44 编辑
- assume cs:code,ds:data,ss:stack
- data segment
- db 'welcome to masm!'
- db 02h,24h,71h
- data ends
- stack segment
- dw 8 dup(0)
- stack ends
- code segment
- start : mov ax,data
- mov ds,ax
- mov ax,stack
- mov ss,ax
- mov sp,10h
- mov ax,0b872h
- mov bx,0
- mov cx,3
- s:push cx
- push ax
- push bx
- mov es,ax
- mov si,0
- mov di,0
- mov cx,10h
- s1:
- mov al,ds:[di]
- mov es:[si],al
- add si,2
- inc di
- loop s1 ;第一次循环将字符值赋给指定区域
- pop bx
- mov al,ds:[bx+16] ;调出预设的第一行字符属性值,传给al
- ;mov di,1 ;di=1啥意思?这句无意义,删除--------------------------
- inc bx ;bx=2,使下次循环指向第二行的字符属性值;但这句放在s2循环结束的后面更合适一些
- mov cx,10h
- mov si,1
- s2:
- mov es:[si],al ;注意此时si通过s1循环已经不是在起始位置了,所以要加上面这句-------------------
- add si,2
- loop s2
-
-
- pop ax
- add ax,0ah
- pop cx
- loop s
-
-
- mov ax,4c00h
- int 21h
- code ends
- end start
复制代码 |
|