您现在的位置是:主页 > news > 本网站建设在美国/目前推广平台都有哪些

本网站建设在美国/目前推广平台都有哪些

admin2025/6/24 9:25:50news

简介本网站建设在美国,目前推广平台都有哪些,郑州权威发布,网站做不下去下面,将学会: 如何设置,程序的起始位置;将数据,程序、栈放入不同的段;清楚的理解它们在内存中的位置分布。 最开始(首先),咱们将数据段,栈段,程序…

本网站建设在美国,目前推广平台都有哪些,郑州权威发布,网站做不下去下面,将学会: 如何设置,程序的起始位置;将数据,程序、栈放入不同的段;清楚的理解它们在内存中的位置分布。 最开始(首先),咱们将数据段,栈段,程序…

下面,将学会:

  1. 如何设置,程序的起始位置;
  2. 将数据,程序、栈放入不同的段;
  3. 清楚的理解它们在内存中的位置分布。

  1. 最开始(首先),咱们将数据段,栈段,程序段,放在一个程序中(不分段)。
assume cs:codecode segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hmov bx,0mov ax,0mov cx,8s:add ax,cs:[bx]add bx,2loop smov ax,4c00hint 21h
code endsend

但是这样,会导致,程序是从数据段(开头),开始向下执行。因为,虽然这些单元中存储的是数据,但它们也是二进制形式。如果,debug-u,它们也会有对应的命令。

  1. 所以,咱们要跳过前面的数据,直接执行后面的代码(可以通过修改IP的值) 。至于前面的数据,在程序读入内存的时候,已经写入内存。它们并不需要执行。这里,我们增加start标号
assume cs:codecode segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hstart:  mov bx,0mov ax,0mov cx,8s:add ax,cs:[bx]add bx,2loop smov ax,4c00hint 21h
code endsend start

end除了通知编译器程序结束外,还可以通知程序的入口在什么地方。

  1. 上面可以看出,数据和代码在同一个段中。但是,我们将数据、代码、栈放入不同的段中。逻辑和管理或许或更清晰一些。

题目:编写code段中的代码,将a段和b段中的数据依次相加,将结果存放在c段中。

assume cs:codea segmentdw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh
a endsb segmentdw 0,0,0,0,0,0,0,0
b endscode segment
start:  mov ax,amov ds,axmov ax,bmov ss,ax ;设置段基址mov sp,16mov bx,0 ;指针mov cx,8 ;循环次数s:  push [bx]add bx,2loop smov ax,4c00hint 21h  code ends
end start

经过调试,跟踪。
你会发现:
a=0710h,b=0712h,c=0713h。即数据段在程序段的前面,且,每个段的大小是16的整数倍(因为上面的是基址)。


参考文章:https://blog.csdn.net/u013018721/article/details/51219127