汇编语言问题
movbpmovbpsp书上问为什么tc2.0生成的程序的函数前面都有这两条指令是为什么?...
mov bp
mov bp sp
书上问为什么tc2.0生成的程序的函数前面都有这两条指令是为什么? 展开
mov bp sp
书上问为什么tc2.0生成的程序的函数前面都有这两条指令是为什么? 展开
展开全部
你列出的这两条指令,前一条不完整,缺少参数,后一条语法不对,漏了逗号。
C语言(和其它大多数高级语言)的函数和子程序(过程)在调用时的参数传递,是通过堆栈实现的。
调用时,先PUSH那些参数进栈,再CALL函数或子程序。
进入子程序后,需要用BP寄存器作为指针去访问堆栈中(不在栈顶)的这些传过来的参数。
8086 CPU 设计时就有了这样的考虑,寻址方式中规定BP作间址寄存器时缺省的段寄存器是SS,就是这样的目的。
于是,函数前面,总会有那么几条设置BP寄存器的指令。这是为取出那些函数调用时传递的参数而做的准备工作。
C语言(和其它大多数高级语言)的函数和子程序(过程)在调用时的参数传递,是通过堆栈实现的。
调用时,先PUSH那些参数进栈,再CALL函数或子程序。
进入子程序后,需要用BP寄存器作为指针去访问堆栈中(不在栈顶)的这些传过来的参数。
8086 CPU 设计时就有了这样的考虑,寻址方式中规定BP作间址寄存器时缺省的段寄存器是SS,就是这样的目的。
于是,函数前面,总会有那么几条设置BP寄存器的指令。这是为取出那些函数调用时传递的参数而做的准备工作。
追问
打错了。。。
是:
push bp
mov bp,sp
追答
呵呵,我想也该是PUSH BP……
展开全部
嘿,你这是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纪念品数据类型是正确
哦满意选择一个满意的答复
关于你的问题:原来的操作数和目的操作数至少有一个寄存器操作数做?
答案是:这不一定。汇编通用传送指令类型
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纪念品数据类型是正确
哦满意选择一个满意的答复
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
推DS
小斧头,斧头
PUSH AX
COM程序通常使用,储存在DS:0000一个INT 20H指令,执行上面的代码,以便使用RETF INT 20H ,从而使该程序结束。
小斧头,斧头
PUSH AX
COM程序通常使用,储存在DS:0000一个INT 20H指令,执行上面的代码,以便使用RETF INT 20H ,从而使该程序结束。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
保存下一条指令的地址,函数返回后,恢复过来就可以继续执行下一条指令了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询