等一个_在乎你的 发表于 2012-3-10 15:44:35

自己写出来的汇编实验10 可以自由改变行列颜色

assume cs:code,ds:data,ss:stack

data segment
db 'Welcome To Masm!'
dw 0,0
data ends

stack segment
db 16 dup(0)
stack ends

code segment
        start:mov ax,data        ;这一大段都是初始化
                                mov ds,ax
                                mov ax,stack
                                mov ss,ax
                                mov sp,16
                                mov ax,0b800h
                                mov es,ax
                                mov si,0
                                mov di,0
                                mov dh,15;行所在位置可以改变
                                mov dl,20;列所在位置可以改变
                                mov bl,2;颜色控制字
                               
                               
                                mov ds:,dh
                                mov cx,ds:        ;通过内存把DH赋给CX用于控制循环
                                mov ax,0
                                call hang                ;计算行
                                mov ds:,dl; push ip
                                mov cx,ds:;通过内存把DH赋给CX用于控制循
                                mov ax,0       
                                call lie                ;计算列
                                                                                ;push mov cx,16的ip值
                                mov cx,16 ;用于控制16个字符循环否则在最后只显示!
                                call show_str
                               
                                mov ax,4c00h ;push ip
                                int 21h
                               
                                       
                                       
                                       
show_str:         push cx   ;push cx
                                        mov al,
                                        mov        es:,al
                                        mov es:,bl
                                        inc si
                                        add di,2 ;这个指令非常重要
                                        pop cx ;出栈执行(cx)=(cx)-1
                       
                                        loopshow_str
                                        ret   ;pop ip
                                       
               
                hang:        add ax,0a0h;用加法表示乘法
                                        loop hang
                                        mov bp,ax
                                        ret;pop ip
                                       
               
                lie:        add ax,2                ;用加法表示乘法
                                loop lie
                                mov di,ax;mov si,ax
                                ret ;pop ip
                               
code ends
end start                               

等一个_在乎你的 发表于 2012-3-10 17:36:34

assume cs:code,ds:data,ss:stack
data segment
db 'Welcome To Masm!'
dw 0,0
data ends

stack segment
db 16 dup(0)
stack ends

code segment
start:mov ax,data ;这一大段都是初始化
    mov ds,ax
    mov ax,stack
    mov ss,ax
    mov sp,16
    mov ax,0b800h
    mov es,ax
    mov si,0
    mov di,0
    mov dh,10;行所在位置可以改变
    mov dl,2;列所在位置可以改变
    mov bl,9;颜色控制字
   
   
    mov ds:,dh
    mov cx,ds: ;通过内存把DH赋给CX用于控制循环
    mov ax,0
    call hang;计算行
    mov ds:,dl; push ip
    mov cx,ds:;通过内存把DH赋给CX用于控制循
    mov ax,0
    call lie;计算列
          ;push mov cx,16的ip值
    mov cx,16 ;用于控制16个字符循环否则在最后只显示!
    call show_str
   
    mov ax,4c00h ;push ip
    int 21h
   
   
   
   
show_str:push cx   ;push cx
   mov al,
   mov es:,al
   mov es:,bl
   inc si
   add di,2 ;这个指令非常重要
   pop cx ;出栈执行(cx)=(cx)-1
   
   loopshow_str
   ret   ;pop ip
   
   
hang: add ax,0a0h;用加法表示乘法
   loop hang
   mov bp,ax
   ret;pop ip
   

lie: add ax,2;用加法表示乘法
    loop lie
    sub ax,2
    mov di,ax
    ret ;pop ip
   
code ends
end start
页: [1]
查看完整版本: 自己写出来的汇编实验10 可以自由改变行列颜色