标题:【8086】刚学汇编语言,start标号很纠结,望学过的学长指教。
只看楼主
黄礼森
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-7-17
结帖率:0
已结贴  问题点数:0 回复次数:4 
【8086】刚学汇编语言,start标号很纠结,望学过的学长指教。
以前还没学到start标号时,将asm编译,连接,运行后用debug的u命令可以看到asm中写的代码。后来学到start标号,再编译,连接,运行,用debug的u命令查看,cs:ip指向的不是asm中的代码,而是一些随机的代码(跟asm中start处开始的代码毫无关系)。用XP的“开始-运行-command”和DOS虚拟机都是这样。我想,初学者们应该都会遇到这种情况,特别是现在很少有真正的DOS系统(不知纯DOS系统会不会出现这种问题)。希望达人指教,这是我的问题还是机器的问题,非常感谢。
附程序一个,可以直接复制黏贴编译(王爽《汇编语言(第二版)》P126):


assume cs:code

code segment
    dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
    start:  mov bx,0
            mov ax,0

            mov cx,8
        s:  add ax,cs:[bx]
            add bx,2
            loop s

            mov ax,4c00h
            int 21h

code ends

end start

[ 本帖最后由 黄礼森 于 2011-7-17 22:07 编辑 ]
搜索更多相关主题的帖子: 虚拟机 start 
2011-07-17 22:03
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:5 
你漏掉了一个问题 就是 你 编译出来的文件 是什么格式的呢?

DOS里面有好几种可执行文件的格式罢 是不是要先执行一些初始化的代码呢

还有 start 只是指示程序开始的位置 可没说 程序的第一句话是你指定的语句诶

类似的例子还有C的main() 你说 程序第一句话是main()么
2011-07-17 22:30
zjsxwc
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:252
专家分:601
注 册:2011-1-20
得分:5 
我这正常


The tools I recommended:
GUI: CSharp(VS), QT;    Core Code: Plain C (Tiny C Compiler);    Web: Python, JavaScript;    Android: Java;    Embedded System: ASM&C (Linux)
2011-07-18 08:07
yulin3192
Rank: 2
等 级:论坛游民
帖 子:17
专家分:34
注 册:2011-6-24
得分:0 
我是新手对这样的基础知识有点迷汒
2011-07-29 12:30
xujian31415
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-5-6
得分:0 
我也曾有过楼主的疑惑,我是这么想的:
“dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h”这串代码编译后,程序运行时会先定义这几个数据,然后将CS:IP指向start的入口。楼主遇到的可能是在定义数据之前的指令。
多说几句,用debug加载时是3楼的情况,但是用反编译器来加载时开始一段代码根本看不懂,有的提示?指令。
2011-07-31 17:15



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




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

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