汇编第四节-第一个程序

第四节:第一个程序

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

第一步:编写汇编源程序

第二步:对源程序进行编译连接,产生可在操作系统中直接运行的可执行文件。

可执行文件包含两部分内容: 程序和数据,相关的描述信息

第三步:执行可执行文件中的程序

 

2. 源程序:

Eg

assume  cscodesg

Codesg  segment

Mov ax,0123H

Mov bx,0456H

Add ax,bx

Add ax,ax

Mov ax,4c00H

Int 21H

Codesg ends

End

1. 伪指令:xxxsegment   xxx ends

Segment ends 成对使用的伪指令,在中间存放代码

2.  end:汇编程序结束标记

3. Assume:假设 假设某一段寄存器和程序中的某一个用segment...ends定义的段相关联。

  比如上面就是 assume cscodesg将用作代码段的codeshCPU中的段寄存器CS联系

4. 标号  codesg 一个标号指代了一个地址,作为一个段的名称,这个段的名称最终被编 译,连接程序处理为一个段的段地址。

5. 程序返回:程序末尾使用这两条指令实现程序返回mov ax4c00H  int 21H

 

3. 汇编程序从写出到执行的过程:

编程->1.asm->编译->1.obj->连接->1.exe->加载->内存中的程序->运行

Edit)    (masm)   (link)    (command)        (CPU

由于本人电脑为64位,不兼容不能运行DOSBOX,也懒得下XP的镜像,所以代码就没有敲

 

4. 程序执行过程的跟踪:

CSIP一指向程序的入口,command就放弃了CPU的控制权,CPU立即开始运行程序

使用Debug可以将程序加载入内存,设置CSIP指向程序的入口,但Debug不放弃对CPU的控制。

CX中存放的是程序的长度。

在内存的程序运行之前有一段PSPSA0)段,256字节,程序的物理地址是:SA+10H0

如何计算程序地址?

EgDS=129E,则PSP=129E0 程序地址为12AE0(即129E+100

-p 命令执行int 21H

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值