- Assembly code
assume cs:code data segment db 'Welcome to masm!',0 data ends stack segment db 16 dup (0) stack ends code segment start: mov dh,8 mov dl,3 mov cl,2 sub ch,ch mov ax,data mov ds,ax mov ax,stack mov ss,ax mov sp,16 sub si,si sub di,di mov ax,0b800h mov es,ax call show_str mov ax,4c00h int 21h show_str: push cx mov cl,[si] jcxz ok pop cx mov al,[si] mov ah,cl mov es:[di+160*8+3],ax add di,2 inc si jmp short show_str ok: pop cx ret code ends end start
目的是在屏幕的8行3列,用绿色显示DATA段中的字符串。
------解决方案--------------------
子程序堆栈失衡。push/pop应成对才可保持堆栈平衡。