汇编语言王爽第四版实验三(第一个程序)
在完成实验之前复习一下重点的知识我们将编写的文件一步步编译成为可执行程序运行可执行程序p1是由一个运行中的程序p2将p1从可执行文件中加载进入内存,将CPU的控制权交给它才能运行当p1运行结束后应该将CPU的控制权交给p2实验3 编程、编译、链接、跟踪有的同学可能DosBox配置的不好,可以参考我上一篇文章DosBox配置将下面的程序保存为t1.asm文件,生成可执行文件t1.exeassume
·
在完成实验之前复习一下重点的知识
-
我们将编写的文件一步步编译成为可执行程序
-
运行可执行程序p1是由一个运行中的程序p2将p1从
可执行文件中加载进入内存,将CPU的控制权交给它
才能运行
-
当p1运行结束后应该将CPU的控制权交给p2
实验3 编程、编译、链接、跟踪
有的同学可能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)]](https://i-blog.csdnimg.cn/blog_migrate/32e705fd652651580c4c3245c4bc7b43.png)
其实直接link t1;就可以直接进行链接,但是我忘记加;了,不过无所谓的
这时候已经成功链接,生成了可执行文件

Debug追踪执行过程
使用debug t1.exe进入debug
用u命令查看一下是不是我们写的程序
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nRcu28n7-1641220236649)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220103221740181.png)]](https://i-blog.csdnimg.cn/blog_migrate/1a896d7f87ee4fe215f72f8424a9e2bf.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)]](https://i-blog.csdnimg.cn/blog_migrate/225cd23b9bc25a4dab2f8bf220589059.png)
可以发现CD 20确实是两个头字节,并且t1.exe就在这个位置
更多推荐



所有评论(0)