标题:求助,很短的程序,但是很奇怪的结果
取消只看楼主
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-437477-1-1.html




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

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