直接将sp(栈定ip) 传入 bp
add [bp],bx
不存在寄存器冲突问题干嘛要入栈?
assume cs:code
code segment
start:
; 中断例程安装
mov ax,cs
mov ds,ax
mov si,offset lp ;
mov ax,0
mov es,ax
mov di,200h
mov cx,offset len - offset lp
cld ; 设置传送方向 DF 0
rep movsb ; ds:[si] 送至 es:[di]
; 设置中断向量表
mov ax,0
mov es,ax
mov word ptr es:[7ch*4],200h
mov word ptr es:[7ch*4+2],0
; 显示
mov ax,0b800h
mov es,ax
mov di,160*12
mov bx,offset s - offset se
mov cx,80 ; 计数器
s:mov byte ptr es:[di],'!'
add di,2
int 7ch
se:nop
mov ax,4c00h
int 21h
;中断例程,实现loop的功能
lp:;push bp
mov bp,sp ; bp 目前为栈顶
dec cx ; --(cx)
jcxz lpret ;if((cx)==0) go to se
add [bp],bx
;add [bp+2],bx
lpret:;pop bp
iret
len:nop
code ends
end start |