显示字符串
写完后结果出错,检查了几遍也没发现逻辑错误,用debug逐步调试后才发现有些寄存器中的值没有初始化就拿来直接用了,影响了后面的计算,造成结果的错误。
assume cs:code,ds:data,ss:stacksg
data segment
db 'welcome to masm',0
data ends
stacksg segment
db 16 dup(0)
stacksg ends
code segment
start : mov ax,stacksg
mov ss,ax
mov sp,16
mov dh ,8
mov dl,3
mov cl ,2h
mov ax,data
mov ds,ax
mov si,0
call show_str
mov ax,4c00h
int 21h
show_str:
push ax
push bx
push cx
push dx
push si
push di
push ds
push es
mov ax,0b800h
mov es,ax
mov ah,0
mov al,0b4h
mul dh
mov bx,ax
mov ax,0
mov al,2
mul dl
mov di,ax
mov ah,cl
s0:
mov al,ds:[si]
mov es:[bx+di],al
mov es:[bx+di+1],ah
mov ch,0
mov cl,ds:[si]
jcxz s
inc si
add di,2
jmp short s0
s:
push es
push ds
push di
push si
push dx
push cx
push bx
push ax
ret
code ends
end start