请问大家,这个汇编中的子程序调用指令ACALL 和LCALL该怎么用呢?课本程序没有看懂啊
LCALL和ACALL
它们的区别是送给CPU的子程序地址的格式不同。
CALL是通常意义的助记符,如果程序
员不考虑跳转语句的编码即代码占用几个字节时可以使用它LCALL指令使用的是
16位数据格式子程序可以在64K程序存储器空间的任何地方ACALL指令使用11位格
式子程序必须与ACALL指令的下一条指令在同一个2K字节的块里
在所有的情况下程序员都是以相同的方法对汇编程序指定子程序地址一个表或一
个16位的常数汇编程序将按正确的格式把地址送给指令
它们的区别LCALL和ACALL子程序的被发送到CPU的地址格式。
通常意义上的CALL助记符LCALL指令,使用它可以占用几个字节
16位数据格式的子程序
不考虑编码,在任何地方使用64K的程序代码跳转语句内存空间ACALL指令11格
子程序必须与ACALL下一条指令。
在所有情况下,程序员都遵循同一个2K字节的块同样的方法汇编子程序或
指定的地址表中的16位常数的汇编指令以正确的格式地址发送
LCALL长调用指令可以调用64kb范围内程序存储器中的任何一个子程序。
ACALL是短调用指令。短表现在所调用的子程序地址必须与ACALL指令下一条指令的第一个字节在同一个2KB区内(即16位地址中的高5位地址相同),否则将引起程序转移混乱。本指令为双字节、双周期指令。
LCALL是长调用指令可以调用程序存储器中的任何一个子程序。本指令为三字节、双周期指令。
两种调用的使用效果是一样的,不同的是调用的空间和速度。
ACALL执行速度快,适合调用存储在附近的子程序。
LCALL多占存储空间,执行也慢适合调用存储在远处的子程序。
如果是个小程序可以只使用ACALL
如果程序大,一般没有太高要求,程序存储器又足够大,编程经验不多的多使用LCALL。可以减少程序跑飞的BUG。
如果可以帮到你别忘采纳哦!
问大家一个非常简单的问题,汇编语言中跳转指令子程序执行完了以后跳转到...
如果是程序调用 就是回到你调用的地方 举个例子:call loop mov a, r2 .loop:mov a,34h .ret mov r0,#40h 上面的ret就是回到调用的那(call loop ),执行它的下条语句(mov a,r2),而不是mov r0,#40h 不知道你的水平,我尽量详细的解说,希望你能看懂,也许有点罗嗦………...
问大家个关于易语言的问题,为什么下面这串代码里没有在_按钮1_被单击...
版本 2 .程序集 窗口程序集1 .子程序 _按钮1_被单击 .如果 (通用对话框1.打开 () = 假) 信息框 (“您还没有选择文件”, 0, ) .否则 信息框 (取文件名 (通用对话框1.文件名, 假), 0, ) .如果结束 然后再看下面这个 版本 2 .程序集 窗口程序集1 .子程序 _按钮1_被单击 可有...