汇编壹加壹 发表于 2011-8-11 20:22:16

指令从哪里开始执行?

本帖最后由 汇编壹加壹 于 2011-8-12 21:23 编辑

assume cs:code,ds:data
data segment
dw_a dw 1
dw_b dw 2
dw_e dw 0
dw_i dw 123h,456h,789h,258h,369h
dw_j dw 10h
data ends
code segment
func_add:
      mov bx,dw_a
      mov cx,dw_b
      mov ax,0
r_add:
      add ax,
      inc bx
      inc bx
      loop r_add
      mov dw_j,ax
      jmp dw_e
start:
      mov ax,data
      mov dx,ax
      
      mov ax,offset dw_i
      mov dw_a,ax
      mov dw_b,2h
      mov ax,offset s_end
      mov dw_e,ax
      jmp func_add
s_end:
      mov ax,4c00h
      int 21h
code ends
end start

指令从哪里开始执行???????????????????

汇编壹加壹 发表于 2011-8-11 20:24:31

本帖最后由 weixianlang 于 2011-8-12 08:15 编辑


func_add:
      mov bx,dw_a
      mov cx,dw_b
      mov ax,0


是不是从这里开始??
还是从
start:
      mov ax,data
      mov dx,ax
      
      mov ax,offset dw_i
      mov dw_a,ax
      mov dw_b,2h
      mov ax,offset s_end
      mov dw_e,ax
      jmp func_add


开始执行???

青鱼小小 发表于 2011-8-12 00:54:00

本帖最后由 青鱼小小 于 2011-8-12 00:55 编辑

从代码段开始执行
code segment

说错了勿喷{:5_91:}

bevin 发表于 2011-8-12 06:31:34

本帖最后由 bevin 于 2011-8-12 06:45 编辑

codesegment
.......
start :
........
code ends   
end start      (start是一个标识符,与前面的对应)

程序从start开始执行的 (......处为代码)

parbbo 发表于 2011-8-12 09:32:47

你是要说怎么开始执行这个程序吗?

汇编壹加壹 发表于 2011-8-12 10:31:27

parbbo 发表于 2011-8-12 09:32 static/image/common/back.gif
你是要说怎么开始执行这个程序吗?

恩是对我不确定 是从哪里开始你给我说说

parbbo 发表于 2011-8-12 12:36:42

汇编壹加壹 发表于 2011-8-12 10:31 static/image/common/back.gif
恩是对我不确定 是从哪里开始你给我说说

执行那个程序是由cs和ip决定,当你debug这个程序的时候,cpu会把你的的程序copy进内存,然后把cs的内容设置为start标记处的段地址,ip设置为偏移地址,程序从start处开始按顺序执行!

habou 发表于 2011-8-12 12:50:28

要多从哪开始运行的话,他是先从data segment段开始 到code segment 结束。之后跳到伪指令Start 开始运行,到jmp func_add 就跳到Func_add 之后按顺序执行直到Jmp dw_e 后就跳出循环运行S_send 段的指令,直到int 21h 结束
至于data segment 这里面定义的一些变量我不清楚到底是什么意思。希望能对你有帮助

data segment
dw_a dw 1
dw_b dw 2
dw_e dw 0
dw_i dw 123h,456h,789h,258h,369h
dw_j dw 10h
data ends
code segment

张国祥 发表于 2011-8-12 18:50:31

从start开始,因为伪指令end不仅说明了程序从何处结束,也说明了入口点在哪里
end **,这个**即为开始

汇编壹加壹 发表于 2011-8-12 20:21:24

bevin 发表于 2011-8-12 06:31 static/image/common/back.gif
codesegment
.......
start :


恩 知道了我这样属不属与模块化设计

汇编壹加壹 发表于 2011-8-12 20:22:37

parbbo 发表于 2011-8-12 12:36 static/image/common/back.gif
执行那个程序是由cs和ip决定,当你debug这个程序的时候,cpu会把你的的程序copy进内存,然后把cs的内容设 ...

谢谢   知道了

汇编壹加壹 发表于 2011-8-12 20:25:54

habou 发表于 2011-8-12 12:50 static/image/common/back.gif
要多从哪开始运行的话,他是先从data segment段开始 到code segment 结束。之后跳到伪指令Start 开始运行 ...

谢谢    知道了

汇编壹加壹 发表于 2011-8-12 20:26:25

张国祥 发表于 2011-8-12 18:50 static/image/common/back.gif
从start开始,因为伪指令end不仅说明了程序从何处结束,也说明了入口点在哪里
end **,这个**即为开始

恩对   谢谢了

青鱼小小 发表于 2011-8-13 02:22:45

谢了,又学到一知识点
页: [1]
查看完整版本: 指令从哪里开始执行?