6.1 在代码段中使用数据
这里有个问题,我们希望使用loop的方法将如下数据累加和。
数据如下:
0123H、0456H、0789H、0ABCH、0DEFH、0FEDH、0CBAH、0987H
为此我们进行了编程,代码如下:
cs:code |
对此我们进行编译与连接,并使用debug对其进行调试。

图中我们可以看到数据已经被拷贝到了对应的代码段内(076A:0000~076A:000F),然后我们通过-u命令查看机器指令。

奇怪的是,即使到了076A:000F,偏移地址已经超过了CS中所存储数据的总长度,仍然见不到我们所需要的指令。
原来,CPU错把存储在CS中的数据也当成了指令并进行了编译,运行程序一定会出错。
解决办法很简单,只需要人为指定一个入口,代码如下:
cs:code |
总结一下end的用法:
- 通知编译器程序结束
- 通知编译器程序的入口在什么地方,所以入口的名称’start’可以自定义