《汇编语言》第4章 第一个程序——实验3 编程,编译,连接,跟踪

本篇介绍第4章《第一个程序》的实验,即实验3 编程、编译、连接、跟踪,下面看具体的实验过程:

(1)将下面的程序保存为t1.asm文件,将其生成可执行文件t1.exe。
 

assume cs:codesg
codesg segment
    mov ax,2000H
    mov ss,ax
    mov sp,0
    add sp,10
    pop ax
    pop bx
    push ax
    push bx
    pop ax
    pop bx
    mov ax,4c00H
    int 21
codesg ends
end

使用用masm生成t1.obj

 

使用link生成t1.exe可执行程序

 

(2)用debug跟踪t1.exe的执行过程,写出每一步执行后,相关寄存器中的内容和栈顶的内容。

加载exe

 单步执行命令

 执行pop指令时分两步,第一步是将SS:SP字单元内容送入AX,使用d命令查看SS:SP处的内容,即2000:10处理的内容为0,即AX=0,然后SP=SP+2,即SP=0012

pop BX同理,执行完成后,SP=0014,如下图所示

 push 指令与pop指令两反,但同样也分两步,第一步将SP=SP-2,然后,将AX寄存器的内容送入SS:SP地址处,我们首先查看2000:10~2000:14地址里的内容,然后执行指令,查看2000:10 ~ 2000:14的内容

从上图的结果看到,2000:10~2000:13里的内容都为0了,因为AX和BX的内容都为0,同时SP也减了两次2恢复到0010了。

接着继续执行两条pop指令,SP按规则变化,如下图所示

 最后执行到int 21指令时,输入p结束程序。

 

(3)PSP的头两个字节是CD 20,用Debug加载t1.exe,查看PSP的内容。

 

根据上面的调试信息,PSP的区域为075A:0~100H(75A0~76A0)这256个字节区域。查看PSP的头两个字节如下:

 

  • 9
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux驱动编程编译实验原理涉及以下几个方面: 1. 内核模块编程:Linux驱动程序以内核模块的形式存在,内核模块是一段可以被动态加载和卸载的代码。驱动程序需要使用适当的内核API函数来与硬件设备进行通信,以实现设备的控制和数据传输等功能。 2. 内核编译系统:Linux操作系统由内核和各种用户空间工具组成。内核编译系统负责构建和编译内核源代码,生成可加载模块和内核镜像。内核编译系统通常使用Makefile和一些配置文件来管理构建过程。 3. Makefile:Makefile是一个包含了构建规则和命令的文本文件,用于自动化构建过程。在驱动程序的开发中,Makefile用于指定编译器、链接器、源文件和目标文件等信息,并定义了编译和链接的规则。 4. 编译驱动程序:使用Makefile和相应的内核编译系统,可以将驱动程序源代码编译为可加载模块。编译过程会将源代码翻译成机器代码,并生成与内核版本匹配的模块文件。 5. 加载和卸载驱动程序:通过insmod命令可以将驱动程序加载到内核中,使其成为内核的一部分。加载驱动程序后,它可以与硬件设备进行交互。卸载驱动程序使用rmmod命令,将其从内核中移除。 6. 调试和日志:在驱动程序的开发和调试过程中,通常会使用调试工具和日志来定位问题和记录运行信息。Linux内核提供了printk函数来打印日志信息,可以通过dmesg命令查看系统日志。 以上是Linux驱动编程编译实验原理的基本概述。要深入学习和理解这些原理,需要进一步研究Linux内核开发和驱动程序开发的相关文档和资料。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值