汇编语言王爽第四版实验三(第一个程序)

本文介绍了如何进行汇编语言的编程、编译、链接及使用Debug进行程序执行的追踪。通过示例程序t1.asm的创建、MASM编译和LINK链接,生成可执行文件t1.exe。在Debug中利用u和r命令查看程序内容和执行过程,了解程序加载到内存以及控制权转移的过程。同时,提到了PSP的内容查看和内存区域的分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

汇编语言所有的实验

在完成实验之前复习一下重点的知识

  • 我们将编写的文件一步步编译成为可执行程序

  • 运行可执行程序p1是由一个运行中的程序p2将p1从

    可执行文件中加载进入内存,将CPU的控制权交给它

    才能运行

  • 当p1运行结束后应该将CPU的控制权交给p2

实验3 编程、编译、链接、跟踪

有的同学可能DosBox配置的不好,可以参考我上一篇文章

DosBox配置

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

assume cs:codesg

codesg segment
	
	mov ax,2000h
	mov ss,ax
	mov sp,10
	pop ax
	pop bx
	push ax
	push bx
	pop ax
	pop bx
	
	mov ax,4c00h
	int 21h
codesg ends
end

其实保存为.txt也是可以的,只要是文本文件就行

我这边保存为.txt文件的形式,只要在编译的时候是编译纯文本文件就行

生成可执行文件

在这里插入图片描述

masm 后面跟的是纯文本文件就行,不论你是.txt 还是.asm都是可以的,注意如果加上’;'就代表

我们默认中间件的生成,直接编译完成

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S0P5aMFW-1641220236648)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220103221302419.png)]

其实直接link t1;就可以直接进行链接,但是我忘记加;了,不过无所谓的

这时候已经成功链接,生成了可执行文件

Debug追踪执行过程

使用debug t1.exe进入debug

用u命令查看一下是不是我们写的程序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nRcu28n7-1641220236649)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220103221740181.png)]

:)是哎

下面就是一直按t执行程序,我就不再一一截图了:(

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

查看PSP的内容

r命令进行查看寄存器内容

在这里插入图片描述

ds=075a

我们用d命令查看一下075a的内存

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N5ujDfbL-1641220236650)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220103222836964.png)]

可以发现CD 20确实是两个头字节,并且t1.exe就在这个位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值