|
主题 : : 第六章检测点6.1(2)困惑处,望高手指点 [待解决] |
回复[ 2次 ]
点击[ 623次 ] | |
荣誉值:0
信誉值:16
注册日期:2008-03-17 20:21 |
先来正确的代码,如下为栈空间为5个字单元时的代码
ASSUME CS:CODE
CODE SEGMENT
DW 0123H,0456H,0789H,0ABCH,0DEFH,0CBAH,0FEDH,0987H
DW 0,0,0,0,0
START:MOV AX,CS
MOV SS,AX
MOV SP,1AH
MOV AX,0
MOV DS,AX
MOV BX,0
MOV CX,8
S:PUSH [BX]
POP CS:[BX]
ADD BX,2
LOOP S
MOV AX,4C00H
INT 21H
CODE ENDS
END START
再来用4个子单元做栈空间时的代码
ASSUME CS:CODE
CODE SEGMENT
DW 0123H,0456H,0789H,0ABCH,0DEFH,0CBAH,0FEDH,0987H
DW 0,0,0,0
START:MOV AX,CS
MOV SS,AX
MOV SP,18H
MOV AX,0
MOV DS,AX
MOV BX,0
MOV CX,8
S:PUSH [BX]
POP CS:[BX]
ADD BX,2
LOOP S
MOV AX,4C00H
INT 21H
CODE ENDS
END START
debug结果如JCD612-4.jpg所示,可以正确改写。
http://www.asmedu.net/blog/user/bigimg.jsp?neighborId=8606&pic=pic_1210578526953.jpg
再来用3个子单元做栈空间的代码:
ASSUME CS:CODE
CODE SEGMENT
DW 0123H,0456H,0789H,0ABCH,0DEFH,0CBAH,0FEDH,0987H
DW 0,0,0
START:MOV AX,CS
MOV SS,AX
MOV SP,16H
MOV AX,0
MOV DS,AX
MOV BX,0
MOV CX,8
S:PUSH [BX]
POP CS:[BX]
ADD BX,2
LOOP S
MOV AX,4C00H
INT 21H
CODE ENDS
END START
debug结果如JCD612-3.jpg所示,即程序中的0987H没有被正确改写
http://www.asmedu.net/blog/user/bigimg.jsp?neighborId=8606&pic=pic_1210578517187.jpg
再来用2个子单元做栈空间的代码:
ASSUME CS:CODE
CODE SEGMENT
DW 0123H,0456H,0789H,0ABCH,0DEFH,0CBAH,0FEDH,0987H
DW 0,0
START:MOV AX,CS
MOV SS,AX
MOV SP,14H
MOV AX,0
MOV DS,AX
MOV BX,0
MOV CX,8
S:PUSH [BX]
POP CS:[BX]
ADD BX,2
LOOP S
MOV AX,4C00H
INT 21H
CODE ENDS
END START
debug结果如JCD612-2.jpg所示,即程序中的0cbaH,0987H没有被正确改写
http://www.asmedu.net/blog/user/bigimg.jsp?neighborId=8606&pic=pic_1210578505562.jpg
再来只用1个子单元做栈空间的代码:
ASSUME CS:CODE
CODE SEGMENT
DW 0123H,0456H,0789H,0ABCH,0DEFH,0CBAH,0FEDH,0987H
DW 0
START:MOV AX,CS
MOV SS,AX
MOV SP,12H
MOV AX,0
MOV DS,AX
MOV BX,0
MOV CX,8
S:PUSH [BX]
POP CS:[BX]
ADD BX,2
LOOP S
MOV AX,4C00H
INT 21H
CODE ENDS
END START
debug结果如JCD612-1.jpg所示,即程序中的0fedH,0cbaH,0987H没有被正确改写
http://www.asmedu.net/blog/user/bigimg.jsp?neighborId=8606&pic=pic_1210578492015.jpg
不会弄链接,大家自己点过去看看吧!
实在不明白为什么只用1-3个子单元做栈空间时拷贝会出错,还望高手指点。 | | |