只有DOS才有,Windows程序没有PSP段
嘿,你这是8086CPU的汇编指令
关于你的问题:原来的操作数和目的操作数至少有一个寄存器操作数做?
答案是:这不一定。汇编通用传送指令类型
1 8086CPU:
MOV REG,数据
MOV REG,MEM
MOV MEM,第
MOV MEM,数据BR / MOV MEM ,第
MOV SREG寄存器
可以看出:MOV [1000H,1234H是可以,可以直接1234H给内存1000H单元
2 MOV [1000H],表是错误的吗?
答案是:这不一定。
看如何定义数据表被定义为一个内存变量是错误??
MOV纪念品,纪念品指令
如果表被定义为一个常数,应立即
相比,MOV纪念品数据类型是正确
哦满意选择一个满意的答复
您列出两个指令之前,缺乏完整的参数,后一个语法错误,错过了一个逗号。
C语言(和大多数其他高级语言)的函数和子程序(程序)被称为通过堆栈传递的参数。
称为第一把这些参数压入堆栈,调用函数或子程序。
子程序需要使用BP寄存器作为指针来访问这些参数通过在栈(堆栈顶部)。
8086 CPU设计有这样的考虑,BP在指定索引寄存器默认的段寄存器SS目的寻址模式。
因此,该函数的前面,有总是那么几个设置的BP寄存器指令。它准备做的工作,以消除那些在函数调用的参数传递。
这里有两个问题:
代码和格式的一部分,是一个古老的算法,以确保正确的程序结束返回到DOS提示符框架。
START PROC FAR;必须使用的FAR定义,以确保最后的RET被编译成远调用返回RETF
PUSH DS;三个指令从这里,在一个堆叠以形成一个PSP的第一个地址指向的远指针
MOV AX,0
PUSH AX
......;程序主要代码
RET;返回远返回到
START ENDP
该框架是一个固定的格式。
原则可以参考的相关信息。它涉及到DOS加载PSP EXE程序结构,以及低版本的DOS INT 20H的功能要求。
高版本DOS,用4CH号的DOS功能调用,你不需要使用这个框架格式。
2。 DSEG段的名字,对应的网段地址,这个程序被加载到内存时确定的常数。段名DSEG指令的操作数是立即寻址。 MOV指令寻址组合,不要让眼前的数据直接发送到段寄存器。
所以,为了要加载到DS段寄存器只能借一个通用寄存器运输。
所以说:
MOV AX,DSEG段地址,这个数字可以立即发送到通用寄存器。 AX取代BX,SI,等也可使用。
MOV DS,AX;通用寄存器,可以传递给段寄存器