| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3598 人关注过本帖
标题:求助,很短的程序,但是很奇怪的结果
取消只看楼主 加入收藏
lxy199403017
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-10-20
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
求助,很短的程序,但是很奇怪的结果
assume cs:code
code segment
s:  mov ax,bx ;2字节
    mov si,offset s
    mov di,offset s0 ;为何此处可以用s0,s0不是在后面么?编译不应该是顺行的么?为何c和c++都是顺序执行的呢
                     ;那么为何汇编能在还没有s0的时候就使用s0呢???
    mov ax,cs:[si]
    mov cs:[di],ax ;将s处的语句复制到s0处,debug后成功,但是却不执行s0处语句,为何??


s0: nop
    nop

    mov ax,4c00h
    int 21h

code ends
end s
;工具:DOSBox
;编译工具:masm5
;调试工具:debug32 /debug
2014-10-20 17:50
lxy199403017
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-10-20
收藏
得分:0 
回复 2 楼 龙牙
是的,但是s0处语句不执行,将s0偏移地址存入di后,将mov cs:[di],ax,ax里存放的是s地址的内容,即mov ax,bx 的机器码,但是程序执行到s0后却不执行mov ax,bx.
2014-10-22 00:26
快速回复:求助,很短的程序,但是很奇怪的结果
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017326 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved