欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

王爽汇编13.3对int,iret跟栈的深入理解的疑惑

更新时间: 2014-01-05 03:17:25 责任编辑: Author_N1

 

王爽汇编13.3对int,iret和栈的深入理解的疑惑
就是用7ch中断例程完成loop指令那道例题

7ch中断例程如下。

    lp:push bp     ;bp入栈是什么意思,直接修改SP不就行了吗     
       mov bp,sp     
      dec cx      
      jcxz lpret  
      add [bp+2],bx ;怎么知道DS 和SS是在一个段,[bp+2]如果不写段的话默认就是ds吧
lpret:pop bp      
      iret


还有之前的求s的偏移地址

    mov bx,offset s-offset se ;设置从标号se到标号s的位移转移?
    mov cx,80
  s:mov byte prt es:[di],'!'
    add di,2
    int 7ch
 se:nop




还有之前的求s的偏移地址,         
mov bx,offset s-offset se 这是什么意思? s在前,se在后 这样减不成负值了吗? 直接offset s不就是 s的偏移地址了吗?


问题:1.bp入栈是什么意思,直接修改SP不就行了吗         
      2.怎么知道DS 和SS是在一个段,[bp+2]如果不写段的话默认就是ds吧         
      3.s标号在前,se标号在后 这样减不成负值了吗 ?直接offset s不就是 s的偏移地址了吗? 
--参考方法--
>> add [bp+2],bx ;怎么知道DS 和SS是在一个段,[bp+2]如果不写段的话默认就是ds吧
这是不对的,[bp+2] 这样的以 bp 间接寻址的,默认段址是 SS 而非 DS

那个 offset s-offset se 的问题,由于没有更多的内容,看不到对这个计算结果是怎么使用的,所以具体用途就不知道了。

>> bp入栈是什么意思,直接修改SP不就行了吗
bp 入栈是为了保存 bp 以便最后的出栈进行恢复,直接修改 sp 的话,能有这效果吗?
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:17:25
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/20441/
本文WWW.DOC100.NET DOC100.NET版权所有。