吃货YA鸭 发表于 2017-6-20 10:53:34

实验10(1)纯粹是共享一下我写的代码

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

data segment
db 'Welcome to masm!',0
data ends
stack segment
dw 8 dup(0)
stack ends

code segment
               
start:mov dh,8        ;显示行
                mov dl,3        ;显示列
                mov cl,2        ;显示颜色
               
                mov ax,data
                mov ds,ax
                mov ax,stack
                mov ss,ax
                mov sp,10h
               
                mov si,0
                call show_str
               
                mov ax,4c00h
                int 21h
        show_str:        push cx                        ;保存颜色数据备用
                                mov al,0ah                ;160就是A0h,因为是偏移地址,所以取十位为0Ah
                                mul dh                        ;8位乘法 al * dh = ax
                                add ax,0b800h        ;算出段地址
                                mov es,ax               
                               
                                mov al,2               
                                mul dl                        ;8位乘法 al * dl = ax
                                mov di,ax                ;算出偏移地址,赋值给显示初始位置di
                               
                        s:        mov cl,byte ptr
                                mov ch,0               
                                jcxz ok                        ;判断内存中是否遇到0
                               
                                mov al,ds:               
                                mov es:,al                ;将data段中的数据copy到显存es中
                               
                                pop ax                                ;取出保存的颜色值
                                mov es:,al        ;将颜色值数据copy到显存es中
                                push ax                                ;再次保存颜色值,备用
                                inc si                               
                                add di,2                       
                                jmp short s
                        ok: ret                                        ;退出
code ends

end start
页: [1]
查看完整版本: 实验10(1)纯粹是共享一下我写的代码