您现在的位置是:主页 > news > 本网站建设在美国/目前推广平台都有哪些
本网站建设在美国/目前推广平台都有哪些
admin2025/6/24 9:25:50【news】
简介本网站建设在美国,目前推广平台都有哪些,郑州权威发布,网站做不下去下面,将学会: 如何设置,程序的起始位置;将数据,程序、栈放入不同的段;清楚的理解它们在内存中的位置分布。 最开始(首先),咱们将数据段,栈段,程序…
本网站建设在美国,目前推广平台都有哪些,郑州权威发布,网站做不下去下面,将学会:
如何设置,程序的起始位置;将数据,程序、栈放入不同的段;清楚的理解它们在内存中的位置分布。 最开始(首先),咱们将数据段,栈段,程序…
下面,将学会:
- 如何设置,程序的起始位置;
- 将数据,程序、栈放入不同的段;
- 清楚的理解它们在内存中的位置分布。
- 最开始(首先),咱们将数据段,栈段,程序段,放在一个程序中(不分段)。
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,它们也会有对应的命令。
- 所以,咱们要跳过前面的数据,直接执行后面的代码(
可以通过修改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除了通知编译器程序结束外,还可以通知程序的入口在什么地方。
- 上面可以看出,数据和代码在同一个段中。但是,我们将数据、代码、栈放入不同的段中。逻辑和管理或许或更清晰一些。
题目:编写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