EXE执行步骤

系统把.EXE程序从磁盘装入存储器时,装入程序是按以下步骤执行的:

1. 从磁盘取.EXE文件

2. 在可用内存储器的一个小段边界上,构造一个256字节(100H)的程序段前缀(PSP)

3. 紧随PSP的下一个地址。把程序装入存储器中

4. 把PSP的地址装入DS与ES寄存器

5. 把代码段地址装入CS寄存器并把IP寄存器设置成代码段中第一条指令的偏移值(通常是0)

6. 把堆栈段地址装入SS寄存器并把SP寄存器设置成堆栈大小

7. 传送控制给要执行的程序,通常从代码段的第一条指令开始

程序的装入程序将CS:IP SS:SP正确的初始化。程序的装入程序在DS和ES中都存放了PSP的地址,而在这些寄存器中你的程序需要数据段的地址

汇编代码

TITLE hello (EXE)  .MODEL SMALL  .STACK 64  .DATA  MSG DB 'hello, lts', '$'  .CODE      MAIN PROC NEAR   MOV AX, @data   MOV DS, AX   PUSH AX   MOV AH, 09H   LEA DX, MSG   INT 21H  MAIN ENDP

 END MAIN

 寄存器和执行状态

-r AX=0000  BX=0000  CX=0019  DX=0000  SP=0040  BP=0000  SI=0000  DI=0000 DS=0B46  ES=0B46  SS=0B58  CS=0B56  IP=0000   NV UP EI PL NZ NA PO NC 0B56:0000 B8560B        MOV     AX,0B56 -t

AX=0B56  BX=0000  CX=0019  DX=0000  SP=0040  BP=0000  SI=0000  DI=0000 DS=0B46  ES=0B46  SS=0B58  CS=0B56  IP=0003   NV UP EI PL NZ NA PO NC 0B56:0003 8ED8          MOV     DS,AX -t

AX=0B56  BX=0000  CX=0019  DX=0000  SP=0040  BP=0000  SI=0000  DI=0000 DS=0B56  ES=0B46  SS=0B58  CS=0B56  IP=0005   NV UP EI PL NZ NA PO NC 0B56:0005 50            PUSH    AX -t

AX=0B56  BX=0000  CX=0019  DX=0000  SP=003E  BP=0000  SI=0000  DI=0000 DS=0B56  ES=0B46  SS=0B58  CS=0B56  IP=0006   NV UP EI PL NZ NA PO NC 0B56:0006 B409          MOV     AH,09 -t

AX=0956  BX=0000  CX=0019  DX=0000  SP=003E  BP=0000  SI=0000  DI=0000 DS=0B56  ES=0B46  SS=0B58  CS=0B56  IP=0008   NV UP EI PL NZ NA PO NC 0B56:0008 8D160E00      LEA     DX,[000E]                          DS:000E=6568

-t

AX=0956  BX=0000  CX=0019  DX=000E  SP=003E  BP=0000  SI=0000  DI=0000 DS=0B56  ES=0B46  SS=0B58  CS=0B56  IP=000C   NV UP EI PL NZ NA PO NC 0B56:000C CD21          INT     21 -p Hello, lts AX=0924  BX=0000  CX=0019  DX=000E  SP=003E  BP=0000  SI=0000  DI=0000 DS=0B56  ES=0B46  SS=0B58  CS=0B56  IP=000E   NV UP EI PL NZ NA PO NC 0B56:000E 68            DB      68

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值