标签:个数 min 利用 oop end 查看 程序 机制 控制
assume cs:code, ds:data, ss:stack data segment dw 0123h, 0456h, 0789h, 0abch, 0defh, 0fedh, 0cbah, 0987h data ends stack segment dw 0, 0, 0, 0, 0, 0, 0, 0 stack ends code segment start: mov ax,stack mov ss, ax mov sp,16 mov ax, data mov ds, ax push ds:[0] push ds:[2] pop ds:[2] pop ds:[0] mov ax,4c00h int 21h code ends end start
数据段中的数据:较之前并未改变
第一次找到的数据:原因是076C:0041 不是结束地址
第二次:cs:001d是汇编之后的代码结束地址(cx代表所有指令所占字长?)
程序加载后,code段地址为X,data段地址为X-2,stack段地址为x-1;
assume cs:code, ds:data, ss:stack data segment dw 0123h, 0456h data ends stack segment dw 0, 0 stack ends code segment start: mov ax,stack mov ss, ax mov sp,16 mov ax, data mov ds, ax push ds:[0] push ds:[2] pop ds:[2] pop ds:[0] mov ax,4c00h int 21h code ends end start
查看ds:正误对照如下
结束地址仍然是001d,见上图。
程序加载后,code段地址为X,data段地址为X-2,stack段地址为x-1;
如果段中数据占N个字节,则程序加载后,该段实际占有空间为: [(N+15)/16]*16。内存是以十六个字节为单位进行内存分配的。(来自http://www.cnblogs.com/gemini233/p/10003997.html )
注:需要-g之后用可以查看ds。否则:
cs,ds,ss地址,ds内容分别如下。
程序加载后,code段地址为X,data段地址为X+3,stack段地址为x+4;
如果将(1)、(2)、(3)题中的“end srtart”改为“end” 不指明程序入口,程序执行情况会怎样?
第一次实验结果:和前一次并无二致---针对(3)
修改(1):
上图是拓展名称导致的问题;
与之前代码的明显区别。
修改(2):
也可见明显区别。
(1)和(2)会发生改变,取消 指明代码段开始位置,会从IP=0处开始执行,(1)和(2)对应的而是数据段。
(3)中IP=0处证号就是代码段开始的位置,因此去除“start”不会产生影响。(获得从博客:http://www.cnblogs.com/gemini233/p/10003997.html)
根据定位的规律,以每16个字节为单位进行内存分配。
我使用的其他人的做法。
assume cs:code a1 segment db 1,2,3,4,5,6,7,8 a1 ends b1 segment db 1,2,3,4,5,6,7,8 b1 ends c1 segment ; 在集成软件环境中,请将此处的段名称由c→改为c1或其它名称 db 8 dup(0) c1 ends ; 改的时候要成对一起修改 code segment start: mov ax,a1;数据段a mov ds,ax mov bx,0 mov cx,8 s: mov ax,[bx];指定起始位置 add ax,[bx+10h];段的之间相差整数个10h mov [bx+20h],ax add bx,2;每次增加两个字节 loop s mov ax,4c00h int 21h code ends end start
原理:将[bx],以及[bx+10H]中的数据放在ax寄存器中,c1内存地址是[bx+20h]
实际操作的时候,对内存单元进行add 还是 mov的指令不够明确。
先让一个数据段的内容放入ax寄存器中,利用指针偏移地址(类似数组)进行累加,最后送入c1段中。
思想:栈顶指针随push 进行的元素增加而减小(往上移动),原本大的数字由于栈(由底向上存储的机制)而放在一开始。
我一开还想着要用pop 实在是没有必要,也反映出逻辑条理不够清晰就写代码。
一开始没有做出来,发现是循环控制定位点 给错了。push的过程就是逆序的过程。
标签:个数 min 利用 oop end 查看 程序 机制 控制
原文地址:https://www.cnblogs.com/hongjie-di/p/10048969.html