(5)
一开始写的是两个循环的,结果发现C段里面没相加结果,反汇编发现,第二个循环部分的代码并没有执行,怎么改都不行,数量不多,就换成了直接一个一个入栈,结果那部分代码也不执行,我弄了一个多小时也找不出问题ORZ
后来又换了一种方法,才可以。
不可行1号:(mov ax,4c00h int21h 后来发现了,改了也不行)
不可行2号:
不可行3号:
……
可行的:
(6)
1.感觉无论是什么段,都是我们自己定义的,本质就是一个内存空间,然后我们给他定义一个功能,就像ax寄存器一样,我们可以赋值可以通过它赋值给别的段。
2.8086 汇编中,逻辑段实际分配的空间是16 字节的整数倍。通过反汇编就可以看出每个段占了多少空间。就能知道各个段之间相差几。
3.如果不指名start入口,程序会顺序(从上至下)执行,如果是数据段,本来用来处理的数据会被当做指令代码,可能会影响原本code段指令对数据的处理,从而导致了错误的结果。