QQ624353765 发表于 2023-3-30 12:25:09

请一份简易汇编例程




自己写了个无参数汇编函数,我现在想要一个带参汇编函数,不会写,请大神给个模板

需要带三个参数,类型分别是unsigned int,unsigned int,unsigned char

zxy 发表于 2023-3-30 15:48:13

去网上查一下吧,有相关的贴子。

本帖最后由 zxy 于 2023-3-30 16:33 编辑

去网上查一下吧,有相关的贴子。
你这三个参数分别传递到R3-R7,第一个参数传递到R6-R7,第二个参数传递到R4-R5,第三个参数传递到R3
三个参数为0X1234,0X5678,9,下面是调用时传递三个参数的汇编代码,从其中代码可以看到数据传递情况。

zxy 发表于 2023-3-30 17:46:45

本帖最后由 zxy 于 2023-3-30 17:56 编辑


本测试程序在主程序中调用外部TEST子程序,该子程序传递三个参数,0x1234,0x5678,0x90

测试例程可以C51中调用汇编程,在汇编中将数据保存到数据区100开始处:分别为12,34,56,78,90

C51中的源程序:

#include    "reg51.h"       //包含此头文件后,里面声明的寄存器不需要再手动输入,避免重复定义
#include    "intrins.h"

extern void TEST(unsigned int a,unsigned int b,unsigned char c);

main()

{

TEST(0x1234,0x5678,0x90);

while(1);

}


汇编程序:

NAME DELAY
?PR?_TEST?DELAY SEGMENT CODE

PUBLIC _TEST

RSEG ?PR?_TEST?DELAY

_TEST:

MOV R0,#100
MOV A,R6
MOV @R0,A
INC R0
MOV A,R7
MOV @R0,A
INC R0
MOV A,R4
MOV @R0,A
INC R0
MOV A,R5
MOV @R0,A
INC R0
MOV A,R3
MOV @R0,A
INC R0

RET

END
      


页: [1]
查看完整版本: 请一份简易汇编例程