一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 1991|回复: 5
收起左侧

[51单片机] 请教一个汇编编译的问题

[复制链接]
发表于 2017-3-5 21:45 | 显示全部楼层 |阅读模式
玩C51一直是c语言,现在同事拿来一个汇编asm文件叫我帮忙转成hex好下载,说是高手编的,应该没有错误。以为很简单,按照C语言的方式建立了个工程,并将asm用记事本打开全部复制进了keil,添加进工程。
也选择了单片机,生成hex……
点击了编译报错:

cw64\d6481.asm(58): error A9: SYNTAX ERROR
cw64\d6481.asm(62): error A37: OPERATION INVALID IN THIS SEGMENT
cw64\d6481.asm(63): error A37: OPERATION INVALID IN THIS SEGMENT
cw64\d6481.asm(64): error A9: SYNTAX ERROR
cw64\d6481.asm(457): error A22: EXPRESSION TYPE DOES NOT MATCH INSTRUCTION
cw64\d6481.asm(506): error A22: EXPRESSION TYPE DOES NOT MATCH INSTRUCTION
cw64\d6481.asm(514): error A9: SYNTAX ERROR



点击错误,定位到:
error A9: SYNTAX ERROR  --------------- ENDS
error A37: OPERATION INVALID IN THIS SEGMENT ---------------F5MS:        DS        1
error A22: EXPRESSION TYPE DOES NOT MATCH INSTRUCTION -------  PUSH        R0




keil C51 V9.54 版本。
希望懂汇编的坛友给指点指点!
发表于 2017-3-5 21:57 | 显示全部楼层
ENDS 的前后一行是什么
发表于 2017-3-5 22:14 | 显示全部楼层
ENDS 是什么?标号吗?这里有问题哦
 楼主| 发表于 2017-3-6 08:45 | 显示全部楼层
chjj0 发表于 2017-3-5 21:57
ENDS 的前后一行是什么

DSEG
                ORG        8H
        DISBUF:DS        8        ;显示缓冲区(BCD码)
        IBUF:        DS        8        ;
        DISCON:DS        1        ;显示位选字(全程)
        PDBUF:        DS        1        ;显示缓冲区刷新指针(全程)
        TIM201:DS        1        ;20MS计数器(看门狗复位间隔定时)
        TIM21:        DS        1        ;2.5MS计数器
        TIMS01:DS        1        ;0.1S计数器(发令间隔定时)
        TIME0:        DS        1        ;TIM201定时
        TIME1:        DS        1        ;TIMS01定时
        WDCON:        DS        1        ;看门狗定时计数(全程)
        BZ:        DS        1
        PAR:        DS        1        ;数据接收缓冲区地址指针
        PAT:        DS        1        ;数据发送缓冲区地址指针
        TBUF:        DS        8        ;数据收发缓冲区

        ARSP:        DS        1        ;堆栈初始指针
ENDS
;/////////////////////////////////////////////
BSEG
                ORG        (BZ-20H)*8
        F5MS:        DS        1        ;T0定时中断计数        
        FSI:        DS        1        ;已收到数据标志
ENDS
;/////////////////////////////////////////////////
CSEG
                ORG        0
.......................
 楼主| 发表于 2017-3-6 08:46 | 显示全部楼层
快活丞 发表于 2017-3-5 22:14
ENDS 是什么?标号吗?这里有问题哦

详见楼下
发表于 2017-3-6 12:57 | 显示全部楼层
有些编译器对这种写法通不过,换编译器试试.
PUSH R0   R0换用直接地址,试试.

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-4-25 23:47 , Processed in 0.061050 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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