汇编网首页登录博客注册
till的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
好友圈
文章收藏
友情链接

[2008-09-26 15:41] 检测6.1(2) 我的写法:无须定义5个字单元空间

assume cs:codesg 
codesg segment 
    dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,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 
codesg ends 
end start 
书中定义了5个字单元用做栈空间,我觉得没必要,而且还引我走上歧路,看到这个题目时,我就一直在思考,5个字单元怎么能交换8个数据呢,经过多次的DUBEG调试才发现,其实程序只用到一个字单元,其他的都不需要的,因为push每次入栈后就由pop出栈了,SS不变,SP变两次,先减后加也等于没变,所以我觉得应该改为我上面的程序可能更好点
评论次数(1)  |  浏览次数(740)  |  类型(默认类型) |  收藏此文  | 

[  sysnap   发表于  2008-09-26 17:08  ]

实际程序确实只使用了一个字单元,所以足够 :-)

不过由于debug下调试,t单步中断也同样使用到了栈保存数据,所以当sp过小时会有些问题。
不过分析明白就ok了,这是小问题,真实程序运行使用一个字就ok了~

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码