|
|

楼主 |
发表于 2016-8-1 17:07:23
|
显示全部楼层
分享一下我练习实验10,8行3列显示绿色字符串,遇到0结束的代码
‘welcome to masm!’,0
- assume cs:code
- data segment
- db 'welcome to masm!',0 ;32B
- data ends
- stack segment
- dw 16 dup(0) ;32B
- stack ends
- code segment
- start:
- mov ax,stack
- mov ss,ax
- mov sp,31
-
- 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:
- push ds
- push es
- push si
- push di
- push ax
- push bx
- push cx
- push dx
-
- ;求目标地址
- mov ax,0b800h
- mov es,ax
- mov di,0
-
- mov ax,0
- mov al,160
- dec dh ;从0行开始计数
- add dh,2 ;显存从第3行开始显示
- mul dh
- add di,ax
- mov ax,0
- mov al,2
- dec dl
- mul dl
- add di,ax
- mov ah,cl
- mov cx,0
- ;向目标地址写入数据
- s: mov cl,ds:[si]
- jcxz show_str_ok
- mov al,ds:[si]
- mov es:[di],al
- mov es:[di+1],ah
- inc si
- add di,2
- jmp s
- show_str_ok:
- pop dx
- pop cx
- pop bx
- pop ax
- pop di
- pop si
- pop es
- pop ds
- ret
- code ends
- end start
复制代码 |
|