汇编语言课后题
下面是汇编语言课后检测题的答案,但是有2个地方看不懂,都用蓝色的笔记写在后面了,希望高人指导,谢谢!
检测点10.5(2)下面的程序执行后,ax和bx中的数值为多少?assume cs:codesgstack segment dw 8 dup(0)stack endscodesg segmentstart: mov ax,stack mov ss,ax mov sp,10h mov word ptr ss:,offset s ;(ss:)=1ah mov ss:,cs ;(ss:)=cs call dword ptr ss: ;cs入栈,ip=19h入栈,转到cs:1ah处执行指令 ;(ss:)=cs,(ss:)=ip 这一步执行后,sp指向的内容不是ss:的内容吗? nops:mov ax,offset s ;ax=1ah sub ax,ss: ;ax=1ah-(ss:)=1ah-19h=1 这一步是怎么出来的?19h这个地址不是存在ss:吗? mov bx,cs ;bx=cs=0c5bh sub bx,ss: ;bx=cs-cs=0 mov ax,4c00h int 21hcodesg endsend start
知道的朋友们指导一下,谢谢了 这一步执行后,sp指向的内容不是ss:的内容吗?
你把压栈的顺序搞反了,call的前面两个往ss:,ss:传数据,你就以为接着的压栈从ss:开始,其实是从栈底开始,即ss: (不是ss:)
这一步是怎么出来的?19h这个地址不是存在ss:吗?
你把10进制和16进制混用。栈底字,ss:的上一个字地址不是ss:而是ss: 这一步执行后,sp指向的内容不是ss:的内容吗?
你把压栈的顺序搞反了,call的前面两个往ss:,ss:传数据,你就以为接着的压栈从ss:开始,其实是从栈底开始,即ss: (不是ss:)
这一步是怎么出来的?19h这个地址不是存在ss:吗?
你把10进制和16进制混用。栈底字,ss:的上一个字地址不是ss:而是ss: SilverMagic 发表于 2013-7-22 00:12 static/image/common/back.gif
虽然版主大人解释了,不过给你执行堆栈图的话,比文字要容易理解些,自己可以DEBUG然后-t单步执行后-d去看看 ...
谢谢你了,费这么大事儿帮我把栈图画出来,现在了解的很明白了! Dardy 发表于 2013-7-21 22:33 static/image/common/back.gif
这一步执行后,sp指向的内容不是ss:的内容吗?
你把压栈的顺序搞反了,call的前面两个往ss:,ss: ...
嗯,明白了,知道哪里有误区了!谢谢{:5_108:} 非常感谢,明白了:lol:
页:
[1]