标签:style class blog code tar int
我们以一个程序来展开讨论:用7ch中断例程完成loop指令的功能,在屏幕中间显示80个"!"
1.程序框架如下
assume cs:code code segment start: mov ax,0b800h ;向8086CPU显存的地址 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 code ends end start
1)dec cx
2)如果(cx)!=0,转到标号s处执行,否则向下执行
那么如何实现到目的地址s的转移?
1)转移到s显然应设(CS)=s的段地址,(IP)=s的偏移地址
2)那么中断程序如何得到s的段地址和偏移地址?
3)现在知道,可以从栈中直接和间接获得s的段地址和偏移地址,那么如何用他们设置CS:IP?
7c的中断程序如下:
lp: push bp mov bp,sp dec cx jcxz lpret add [bp+2],bx lpret: pop bp iret
对int、iret和栈的深入理解,布布扣,bubuko.com
标签:style class blog code tar int
原文地址:http://blog.csdn.net/getnextwindow/article/details/24900945