回 帖 发 新 帖 刷新版面

主题:谁帮我看下结果

title example program
data   segment
varx        dw       123h
vary        dw       456h
varz        dw       789h
f1          dw       ?
f2          dw       ?
data     ends

stack1     segment     para  
satck     dw    20h      dup(0)
stack1    ends

code       segment
assume     cs:code,ds:data,ss:stack1

being:     mov   ax,data
           mov   ds,ax
           mov   ax,varx
           add   ax,vary
           mov   bx,10
           mul   bx
           mov   bx,varz
           dec   bx
           mov   cx,bx
           sal   bx,1
           add   bx,cx
           sub   ax,bx
           mov   bx,varx
           add   bx,vary
           add   bx,varz
           xor   dx,dx
           div   bx
           mov   f1,ax
           mov   f2,dx
           mov   ah,4ch
           int   21h
     code   ends


程序编写是没问题的   不过我运行调试之后不知道在什么地方去看结果  诶   那位大哥大姐帮我看下了   谢谢



另外在附带一个问题

假设(ss)=2250h,(sp)=0140h,如果在堆栈中压入5个字,则sp的值变为_________,栈顶的物理地址为_________;如果又从堆栈中弹出3个字,则sp的值变为________,栈顶的物理地址为________.
我做的答案是  0130h,22630h;0136h,22636h.
不过书上的答案是:0136h,22636h,013ch,2263ch   是不是我做错了   还是题目上的5应该改成2   请高手指点,谢谢!!!

回复列表 (共4个回复)

沙发

varx=01f0h
vary=0456h
varz=0789h

附带问题:书上的答案没错,是你没有看清它是十六进制

板凳

还不是太明白  ^_^    书上不是说每压入一个字就   sp <- sp-2   吗?

3 楼

那些数字都是十六进制的
压入5个字,就是sp-2×5
即0140h-10d(h是十六进制,d是十进制)
0140h-10d=0140h-0ah(0ah=10d),所以就等于0136h

4 楼

谢谢   非常感谢   十分的感谢   ^_^   搞笑了  终于明白了

我来回复

您尚未登录,请登录后再回复。点此登录或注册