汇编语言问题

movbpmovbpsp书上问为什么tc2.0生成的程序的函数前面都有这两条指令是为什么?... mov bp
mov bp sp
书上问为什么tc2.0生成的程序的函数前面都有这两条指令是为什么?
展开
 我来答
百度网友dd2a4ae
2012-12-18 · TA获得超过1.6万个赞
知道大有可为答主
回答量:2628
采纳率:11%
帮助的人:1658万
展开全部
你列出的这两条指令,前一条不完整,缺少参数,后一条语法不对,漏了逗号。

C语言(和其它大多数高级语言)的函数和子程序(过程)在调用时的参数传递,是通过堆栈实现的。

调用时,先PUSH那些参数进栈,再CALL函数或子程序。
进入子程序后,需要用BP寄存器作为指针去访问堆栈中(不在栈顶)的这些传过来的参数。
8086 CPU 设计时就有了这样的考虑,寻址方式中规定BP作间址寄存器时缺省的段寄存器是SS,就是这样的目的。

于是,函数前面,总会有那么几条设置BP寄存器的指令。这是为取出那些函数调用时传递的参数而做的准备工作。
追问
打错了。。。
是:
push bp
mov bp,sp
追答
呵呵,我想也该是PUSH BP……
asanping
2012-12-30 · TA获得超过3044个赞
知道大有可为答主
回答量:9632
采纳率:0%
帮助的人:920万
展开全部
嘿,你这是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纪念品数据类型是正确

哦满意选择一个满意的答复
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
iro52238
2012-12-26 · TA获得超过1.2万个赞
知道大有可为答主
回答量:3万
采纳率:0%
帮助的人:2972万
展开全部
推DS
小斧头,斧头
PUSH AX
COM程序通常使用,储存在DS:0000一个INT 20H指令,执行上面的代码,以便使用RETF INT 20H ,从而使该程序结束。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
888愚公888
2012-12-18 · TA获得超过728个赞
知道小有建树答主
回答量:329
采纳率:0%
帮助的人:235万
展开全部
保存下一条指令的地址,函数返回后,恢复过来就可以继续执行下一条指令了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式