王爽汇编实验

Posted otakus

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了王爽汇编实验相关的知识,希望对你有一定的参考价值。

  王爽汇编浅显易懂,虽然前面两个实验都做完了,但是都是吊儿郎当做完的。

  看到第三次实验比较好写心得,就写了。

 

原码如下,用提到的LINK.EXE和MASM.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 21H
codesg ends
end


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

技术图片

程序即将开始运行,这时候给出了下一条指令 mov ax,2000H

这时候ax至FFFF,DS和CS差10H,IP偏移地址为0。

技术图片

输入t执行,可以看到ax已经变成2000H了,因为是寄存器和立即数,所以占3个字节,IP变成0003,其他未变。

继续t执行。

技术图片

ss变成了ax内存放的2000H。中间原本有一行指令 mov sp,0但是因为debug的对栈操作,直接在mov ss,ax后立刻执行,所以下一条语句是add sp,10

 

技术图片

 

 

sp变成了000AH

技术图片

 

因为pop的缘故,栈向上增长,sp增加了2字节,变成000CH

技术图片

同理sp=000EH,这时候发现了AX从2000H变成了0000H,因为栈本来就是空的,又无故出栈,pop把SS:SP当时的字单元给到了AX,于是AX置0,如果BX有值的话也为0。

技术图片

 

SP变了回去,因为POP和PUSH都用一个字节,IP每次增长1H。

技术图片

 

后面其实也可以看到,SP又反弹了=-=。

 

技术图片

最后两个是返回语句,AX变成4C00H,IP+3,指令地址又变成CS:IP=F000:14A0。

至此第二问结束。

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

 

PSP就是DS和CS之间的0010H*16=256字节

 

技术图片

 

下面就不必要看了,就是这256字节就是t1.exe的说明。

实验结束,开开心心

 

以上是关于王爽汇编实验的主要内容,如果未能解决你的问题,请参考以下文章

汇编语言 王爽 第四版 课后检测点 课后实验 包括解释 持续更新~~

汇编语言 王爽 第四版 实验1

汇编语言 王爽 第四版 实验2

汇编语言 王爽 第四版 实验3

汇编语言(王爽) 实验十一

汇编语言 王爽 第四版 实验5