找回密码
 立即注册
查看: 790|回复: 2

请一份简易汇编例程

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-05-02 09:52:56
已绑定手机

229

主题

328

回帖

1475

积分

金牌会员

积分
1475
发表于 2023-3-30 12:25:09 | 显示全部楼层 |阅读模式
C%ZXQ[(((AY(UOPZH0E3V.png


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

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

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:95
  • 最近打卡:2024-12-27 09:22:39

13

主题

78

回帖

1919

积分

金牌会员

积分
1919
QQ
发表于 2023-3-30 15:48:13 | 显示全部楼层

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

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

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

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:95
  • 最近打卡:2024-12-27 09:22:39

13

主题

78

回帖

1919

积分

金牌会员

积分
1919
QQ
发表于 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
        


TEST.rar

13.36 KB, 下载次数: 94

回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 20:26 , Processed in 0.185839 second(s), 61 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表