小马过河 发表于 2012-1-9 14:37:29

实验 10 终于完成与大家分享,欢迎高手指正

assume cs:dmd
sjd segment
db 'Welcome to masm!',0
sjd ends

dmd segment
cxks :   

          mov dh,8
          mov dl,3
              mov cl,2
              mov ax,sjd
              mov ds,ax
              mov si,0
             call show
       
             mov ax,4c00h
             int 21h
show:    mov ax,0       ;将AX值0
         mov al,160    ;将AL值160,每行160字节
         mul dh           ;AL 乘以8,AX=第8行的起始偏移
         
               mov dh,0   ;将DH值0
               add dx,dx;DX=第三列的起始位置,一列2字节
               push dx;压栈DX
               
               
               mov dl,16   ;将DL值16
               div dl               ;将AX中的数据除以16,段地址要乘16,这里先除
                               
       
               add ax,0b800h ;将显存地址与ax内容相加送入AX
               mov es,ax;将段地址送入附加段
               mov di,0;
               mov bx,0
               
               mov dl,cl ;将处cl字符属性绿色字符送给Di
               
               pop bp;将列偏移量出栈送给bp
               
siii:    mov cl,ds: ;取数据
         mov ch,0
               jcxz sccc;CX=0则跳转
               
               mov es:,cl
               mov es:,dl;内容加入显存地址
               inc bx
               add di,2
               jmp siii ;继续执行
sccc:    ret
               
   dmd ends
      end cxks       

小马过河 发表于 2012-1-9 14:39:44

第37行备注写错了
               mov dl,cl ;将处cl字符属性绿色字符送给Di       (是DL不是   DI)

页: [1]
查看完整版本: 实验 10 终于完成与大家分享,欢迎高手指正