msdos源代码/为什么我们在栈中推送ss寄存器,然后我们进入ds寄存器

时间:2018-03-08 14:33:46

标签: assembly x86 push dos x86-16

我正在浏览msdos源代码文件,我发现了一些惊人的汇编指令 为什么我们在堆栈中推送ss寄存器,然后我们进入ds寄存器。

实际上更多的代码在这里: 为了更方便,我正在写" save_world"过程

Start procedure save_world:
    Push ax
    Push bx
    Push cx
    Push dx
    Push si
    Push di
    Push cs
    Push es
    Push ds
    End procedure,

Invoke save_world:
    pop ds
    push ss
    pop es
    push ss
    pop ds
    ASSUME DS:DOSGROUP

更多代码如下。为清楚起见,我想说我正在浏览msdos源代码文件。

1 个答案:

答案 0 :(得分:0)

见Jester的评论。 x86-16中没有mov ds, ss指令。他们可以使用中间寄存器:

mov ax, ss
mov ds, ax

但要么他们想要节省空间,要么没有寄存器来破坏。