目的:在屏幕中间显示八十个感叹号
安装程序:
assume cs:code
code segment
start:
mov ax,cs
mov ds,ax
mov si,offset L
mov ax,0
mov es,ax
mov di,200h
mov cx,offset Lend - offset L;计算L程序的大小
cld
rep movsb
;以下操作修改中断向量表7ch跳转地址为0:200
mov ax,0
mov es,ax
mov word ptr es:[7ch*4],200h
mov word ptr es:[7ch*4+2],0
mov ax,4c00h
int 21h
L:
lp:
push bp
mov bp,sp;将栈顶地址送到bp
dec cx
jcxz lpret
sub [bp+2],bx;在栈中,将bp下面的ip修改到执行程序的开头
lpret:
pop bp;恢复bp
iret;相当于pop IP
;pop CS
;popf
Lend:
nop
code ends
end start
assume cs:code
code segment
start:
;将显存区域地址传送到es
mov ax,0b800h
mov es,ax
mov di,160*12;将屏幕中间的位置地址付给di
mov bx,offset se - offset s;计算s程序段的大小
mov cx,80;要打印80个感叹号
s:
mov byte ptr es:[di],'!'
add di,2;跳到下一个数据区
int 7ch;引发7ch中断
;操作有:pushf
;push CS
;push IP
se:
nop
mov ax,4c00h
int 21h
code ends
end start