• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
仓式茜
博客园    首页    新随笔    联系   管理    订阅  订阅
四--第一个程序

1.一个源程序从写出到执行的过程

  编写源程序

  对源程序进行编译链接

    编译产生目标文件,连接程序对目标文件进行连接,生成可执行文件,包含程序(机器码)和数据(定义的数据)、相关描述信息(程序多大)

  执行

2.源程序

  

 

   伪指令:

    (1)段名 segment

        ...

        段名 ends

      segment和ends成对使用,定义一个段的开始和结束

      一个程序至少有一个段,用来存放代码

    (2)end

      汇编程序结束标记

    (3)assume

      含义是“假设”,他假设某个段寄存器和程序中的某一个用segment...ends定义的段相关联

      本程序用assume cs:codesg将用作代码段的codesg与cs联系起来

  程序返回:

    一个程序P2在可执行文件中,则必须有一个正在运行的程序P1,将P2从可执行文件中加载入内存后,将CPU的控制权交给P2,P2才得以运行,P1停止运行。

    P2运行完毕后,将CPU的控制权还给使他得以运行的程序的过程:程序返回

    mov ax.4c00H

    int 21H

    以上指令实现程序返回

4.编译

  

 

  简化的编译连接

  

 

 8.谁将可执行文件中的程序装载进入内存并使他运行?

  任何通用的操作系统都要提供一个称为shell(外壳)的程序,用户使用这个程序来操作计算机系统进行工作

  dos中有一个commmand.com,此程序称为命令解释器,即dos的shell

  dos启动时,先初始化,然后运行command,执行完其他相关任务,就在屏幕显示由当前盘符和当亲路径组成的提示符,等待用户输入

  要执行一个程序,输入该程序的可执行文件的名称

  cmd找到该文件,将这个可执行文件中的程序加载入内存,设置CS:IP指向程序的入口,然后cmd停止运行。程序运行结束,返回cmd,继续显示提示符

9.程序执行过程的跟踪

  debug可以将程序加载入内存,设置CS:IP指向程序入口,但debug不放弃对CPU的控制

  debug后,cx中存放的是程序的长度

   exe文件中程序的加载过程:

    

 

     程序加载后,ds存放程序的段地址,偏移地址为0,所以程序所在的内存区的地址为ds:0

    此内存区的前256个字节(100H)存放PSP,是dos用来和程序进行通信的,后面是程序

    程序的物理地址:SA+10H:0  

    ds=129E,则psp的地址为129e:0,程序地址为12AE:0

    所以cs=12AE,IP=0000

      

 

    

 

   程序结束返回到debug,因为是debug加载的程序

  用Q命令退出debug,返回到cmd,因为debug是cmd加载的

 

  

posted on 2022-08-24 15:48  仓式茜  阅读(44)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3