摘要: 本章在用int 7ch实现loop指令功能时候,所用的参数为cx:循环次数,bx:loop指令的转移位移值。cx的值可以在调用程序里给出,而bx的值却需要用表达式表示,同时为了可以表达,也需要在中断调用指令后加一个无实际含义的"s1:nop"之类的指令,以使得可以将bx表达为"offset s-offset s1"。其实,通过int 7ch实现loop的要点在于在循环未结束(即cx!=0)时将ip指向跳转目的偏移地址,即s处。因此,设置入口参数为bx=offset s.;中断例程安装程序二assume cs:code code segment start 阅读全文
posted @ 2013-09-08 20:26 tsembrace 阅读(618) 评论(0) 推荐(0) 编辑
摘要: 第十三章 int指令*int n引发n号中断过程,执行过程如下:(1)取得中断类型码n(2)pushf,TF=0,IF=0(3)push cs,push ip(4)(cs)=(0000:(4n+2)),(ip)=(0000:(4n))*用int 7ch实现loop指令功能的分析(1)loop实现的是指令跳转,属于短转移,即位移量在-128~127之间;同时,需要获得cx以确定循环次数;通过判断cx是否为0来决定是否执行跳转。(2)cx值可从调用程序中获得;7ch中断例程依据判断cx=0?来确定跳转,可以想到用jmp指令实现(?未深入细想)或者按书上用iret,修改栈顶元素的值,使其指向跳转目的 阅读全文
posted @ 2013-09-08 19:34 tsembrace 阅读(343) 评论(0) 推荐(0) 编辑