jjw

写给自己的博客。 记录学习的点滴以备查。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

实验十编写子程序1

Posted on 2021-02-05 17:19  jjw  阅读(91)  评论(0编辑  收藏  举报
assume cs:code,ds:data
data  segment
    db 'Welcome to masm!', 0
data  ends

code segment
start:         
        comment*    *comment
                         
        mov dh, 8
        mov dl, 3
        mov cl, 2
        mov ax, data
        mov ds, ax
        mov si, 0
        call show_str    
        mov ax, 4c00h
        int 21h        
    show_str:
            ; 段地址
            mov ax, 0b800h
            mov es, ax
            
            ; 计算偏移 8行 3 列的字节数, 暂存在bx中
            mov ah, 0
            mov al, 160
            mul dh
            mov bx, ax            
            
            mov ah, 0
            mov al, 2        
            mul dl
            add bx, ax
            
            ; dx可用了
            mov dl, cl        ;用 dl 缓存 cl=2, cx 可用了
        calc_len:
            mov cx, [si]
            inc ax
            inc si
            inc cx                ;!!! 减一
            loop calc_len
            
            dec ax                ;需要减一, 此处省去减判断 ax >= 0
            mov cx, ax
            mov di, 0
            mov si, 0
            mov ah, dl    ;颜色
    move_str:
            mov al, [si]
            mov word ptr es:[di+bx], ax
            inc si
            add di, 2
            loop move_str
            ret
code ends

end start