第4章 第一个程序

第4章 第一个程序

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

  • 第一步:编写汇编程序
  • 第二步:对源程序进行编译连接
  • 第三步:执行可执行文件中的程序

4.2.源程序

汇编语言中包含两种指令:汇编指令伪指令

  • 汇编指令:有对应机器码的指令,最终被 CPU 执行
  • 伪指令:由编译器进行执行,进行相关的编译动作

伪指令:

在这里插入图片描述

源程序中的程序

将源程序文件中所有内容称之为源程序,然后通过编译连接后转变为机器码,存储在可执行文件中

image

mov ax,4c00H
int 21H

在程序末尾使用这两条指令就可以实现程序返回

标号

一个标号指代了一个地址,例如:codesg 在 segment 的前面,作为一个段的名称,这个段的名称最终会编译一个段的段地址。

在这里插入图片描述

任务:编程运算 2*3。源程序应该怎样来写?

assume cs:abc
abc segment
	mov ax,2
	mov ax,ax
	mov ax,ax
	
	mov ax,4c00H
	int 21H
abc ends
end

在这里插入图片描述

4.3 谁将可执行文件中的程序装载入内存并使它运行?

在 DOS 中,可执行文件中的程序 P1 若要运行,必须有一个正在运行的程序 P2 ,将 P1 从可执行文件中加载入内存,将 CPU 的控制权交给它,P1 才能得以运行;当 P1 运行完毕后,会将 CPU 的控制权交还给使它得以运行的程序 P2。

这个 P2 程序就是 command.com(命令解释器),也就是 DOS 系统的 shell。具体可看下图。

image

在这里插入图片描述

4.4 程序执行过程的追踪

在 DOS 中运行一个程序时,command 将程序从可执行文件中加载入内存并使其运行,之后就放弃了 CPU 的控制权,并不能对程序的执行过程进行跟踪分析,所以这时需要使用到 Debug。Debug 也可以将程序加载如内存,设置 CS : IP 指向程序的入口,但 Debug 并不放弃对 CPU 的控制,这样就可以使用 Debug 相关的命令来单步执行程序,查看每一条指令的执行结果。但最后还是会把 CPU 控制权交还给 command。

  • 使用 Debug 命令
    • 程序加载的顺序:command 加载 Debug,Debug 加载 1.exe 。
    • 返回的顺序是:1.exe 返回到Debug,从 Debug 返回到 command。

图4.20解释在 DOS 系统中的程序的加载过程。

在这里插入图片描述

调试命令:(不区分大小写)

  • 输入R:查看各个寄存器的设置情况
  • 输入U:查看此程序其他指令
  • 输入T:单步执行程序中的每一条指令
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霜晨月c

谢谢老板地打赏~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值