汇编语言 王爽(第三版) 实验3 编程、编译、连接、跟踪
2016-11-04 19:04
696 查看
已做好的准备
t1.asm文件已保存到C盘根目录下masm 5.0 需要自己从网上下载,然后安装,已保存到C盘根目录下
执行过程中问题的出现与解决
进入DOS方式,显示C:\DOCUME~1\ADMINI~1>,此时如何进入C盘根目录?在后面输入
cd..,会显示
C:\DOCUME~1,即此时已回退到Documents文件夹,再次输入
cd..,会显示
C:\>,即此时到达C盘根目录,输入
cd masm,显示
C:\MASM>,即进入C盘根目录下的MASM文件夹;
编译过程,
Source filename [.ASM]输入
t1,按下几个ENTER,出现
Unable to open input file: t1.ASM,问题在哪?仔细看了书,发现只有当asm文件在MASM文件夹下,才可以仅输入文件名,更改输入
c:\t1.asm,编译成功;
Debug中
-d ds:10 18是指查看1000:10~1000:18的内容
此实验源程序中的程序部分:
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 21H
根据我对程序的理解,程序的前四行是将2000H:0~2000H:9设置为栈,此时栈顶SS:SP指向2000AH,此时栈为空。第一个指令,pop ax,是弹出一个栈元素,从数据结构的学习中考虑,这样会导致错误,然而实际上并没有问题。
(摘自网络)
栈空间里没有内容,此时能弹堆栈?
首先说什么是栈空间,栈空间无非是一段由SS:SP指示的内存空间而已,一般情况下我们能够用栈操作指令访问它,当然,我们也可以用访问内存地址的任何一种合理方式访问这段空间。其次,我们说 栈空 表明的意思是:栈顶设置之初,我们没有栈操作的时候,这段空间的数据我们是未知的,所以通常也是没有用的,但是并不代表这时栈顶SS:SP所指向的内存字单元中没有数据!再有一点:无论是push还是pop操作,栈的操作在任何情况下都是有效的(但不一定在任何情况下都是合理的,对于不合理的栈操作正如问题 1 的回答中所讲,会有操作系统的干预。)相关文章推荐
- 汇编语言(王爽)实验三 编程、编译、连接、跟踪
- 汇编语言(王爽)实验三 编程、编译、连接、跟踪
- 汇编语言:实验三 编程、编译、连接、跟踪
- 汇编语言 第三版 王爽 实验9 根据材料编程
- 汇编语言(王爽第三版)实验9根据材料编程
- 汇编语言 王爽(第三版)实验十五
- 汇编语言 第三版 王爽 实验6 更改大写字母
- 汇编语言 王爽(第三版)实验十六
- 汇编语言 王爽(第三版) 实验九
- 汇编语言 王爽(第三版) 实验4 [bx]和loop的使用
- 汇编语言(王爽 第三版)实验七
- 汇编语言(王爽 第三版)实验十六
- 汇编语言 第三版 王爽 实验10-1 编写子程序 之 显示字符串
- 王爽 汇编语言 第三版 实验10 编写子程序
- 王爽 汇编语言第二版 实验9 根据材料编程 代码及分析
- 汇编语言(王爽 第三版)实验十三
- 汇编语言(王爽 第三版)实验九
- 汇编语言(王爽 第三版)实验五
- 汇编语言 第三版 王爽 实验10-2 编写子程序 之 解决除法溢出问题 divdw
- 汇编语言 王爽(第三版)实验十一