assume cs:code
data segment
db 'Welcome to masm!',0
data ends
code segment
start:
mov dh,24
mov dl,0
mov cl,2
mov ax,data
mov ds,ax
mov si,0
call show_str
mov ax,4c00H
int 21H
; 名称:show_str
; 功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串
; 参数: (DH)=行号(取值范围为0-24);
; (DL)=列号(取值范围为0-79);
; (Cl)=颜色;ds:si指向字符串的首地址
show_str:
; 保存现场
push ax
push es
push dx
push cx
push ds
push bx ; 偏移量指针
mov ax,0b800H
mov es,ax
; 显示位置的偏移量计算公式为:(行号 - 1) * 160 + 列号
;sub dh,1
mov al,dh
mov ah,0
mov dh,0
mov bl,160
mul bl
add dl,dl
add ax,dx
mov bx,ax ; 显示字符串的偏移量存放到(bX)中
s: mov dl,[si]
mov dh,cl
mov es:[bx],dx
mov ch,0
mov cl,dl
jcxz ok
inc si
add bx,2
jmp short s
ok: pop bx
pop ds
pop cx
pop dx
pop es
pop ax
ret
code ends
end start
- [assumechen] 呵呵,我把程序搞复杂了。谢谢! 07/12 23:58
- [fpamc] MOV BX,AX MOV AX,DX MOV DX,0 07/11 23:26
- [assumechen] 这个公式原来一直想不明白,总是觉得会溢出,直到看到这个贴子才转过来。 http://www.asm 07/11 21:19
- [assumechen] 谢谢! 07/11 21:16
- [fpamc] 对的。 07/09 23:04
- [assumechen] 谢谢 06/30 22:34
- [assumechen] 谢谢 06/30 22:33
- [fpamc] 对的。 06/30 10:26
- [fpamc] 恩对的, 06/30 10:24
- [assumechen] 是程序错了,把这一句: mov word ptr es:[0dH],ax ; 雇员的平 06/29 14:45