. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->INT指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  13.3 对int ,iret和栈深入理解....这是在介绍什么是“递归程序”及如何操作的  [待解决] 回复[ 1次 ]   点击[ 241次 ]  
online6883
[帖 主]   [ 发表时间:2017-03-12 23:05 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-04-07 22:11
13.3 对int ,iret和栈深入理解...
  .这是在介绍什么是“递归子程序”及栈如何操作的问题
  书中提了一个汇编代码例子,即“在屏幕中间显示80个‘!’。
 仿照上述例子写一个C语言
 #include <stdio.h>
void display(int );
  
int main(void)
{   int x=80;
    display(x);
    printf("程序结束");
    return 0;
}

void display(int a)
  {    
       if (a != 0)
       {   printf("!");
           a=a-1;
           display(a);
       }
  }

对比一下,“在屏幕中间显示80个‘!’。明显就是有一个递归子过程。
...
     s:    mov byte ptr es:[di],'!'
           add di,2
           int 7ch
     se: nop
  ...


...7ch中断例程...
    lp:  push bp
          mov bp,sp
          dec cx
          jcxz lpret
         add [bp+2],bx
lpret:  pop bp
         iret

....bp....用来获取和访问子程序在堆栈里面的临时变量
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved