. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->INT指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  add [bp+2],bx  ; 为什么这里的 指向的的是SS段 而不是别的DS ES 段  [待解决] 回复[ 2次 ]   点击[ 330次 ]  
909383851
[帖 主]   [ 发表时间:2013-11-13 11:41 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-02-21 04:01
lp:   push bp  ;这里为什么要压入 BP 直接 mov bp,sp 和 先压入 BP 有什么其别 
       mov bp,sp   
       edc cx
       jcxz lpret
       add [bp+2],bx  ; 为什么这里的 指向的的是SS段 而不是别的DS ES 段 
lpet: pop bp
        iret 
     如果去掉 push bp的话不就可以   add [bp],bx  不用加2了 为什么要这样做
cutebe
[第1楼]   [ 回复时间:2013-11-13 16:23 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2010-01-27 19:28
1 使用寄存器BP做为地址时,段地址默认在寄存器SS中

2 作为这个程序去掉PUSH BP是可以的,但子程序(或中断)为了还原寄存器的原值,就要这样做。如:主程序比较复杂,使用了BP寄存器,不进行出入栈操作不就改变了BP的值吗?
909383851
[第2楼]   [ 回复时间:2013-11-13 17:31 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-02-21 04:01
嗯 谢谢大概明折了
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved