汇编语言中 代码段开头的这几个语句是什么意思?

来源:百度知道 编辑:UC知道 时间:2024/05/11 00:17:05
汇编语言中代码段开头的这几个语句是什么意思?

...............
Code segment
assume cs:code, ds:data, ss:stack
Main proc far
Begin:
......................................................................
push ds
xor ax, ax
push ax
........................................................................
mov ax,data
mov ds, ax
....................

我看过一些参考书,说的是保护数据。这个我也知道.我不明白的是压入堆栈之前为什么要给AX赋0,这个0值有必要把它压入堆栈去保护它吗?等以后把它弹出的时候再给它赋0 也不迟啊,如果非要给它 xor ax, ax的话
。请哪位前辈解释一下。

不一定要为0 了 你只要知道,函数的调用者学要保存那几个寄存器
被调用者要保存 哪几个寄存器就好了,ax的值是由程序功能决定的,
一般程序也许会把寄存器初始化,这样比较好点。。。

保护数据.....

把ds和0放到堆栈中去,只要在主函数的最后用ret就可以跳到ds:[00]去执行int 20h返回dos