想念高手!原因是你难找!

01jamse 2002-08-02 09:19:45
我手上有一块板子,大体情况是这样的:板子上有80C186,一块专用芯片,两片EPROM,我编了一段程序,主要流程是先对80C186的片选寄存器初始化,然后对专用芯片初始化。我用MASM611汇编,老是出错,错误是"instructions and initialized data not supported in AT segment",我怀疑是不是程序中”Segment AT 0FFFFH"出了问题,但POWER_ON的这段代码是CPU上电时跳转指令所在的代码(80C186上电时自动执行0FFFF0H~0FFFFFH区间的程序,因此跳转指令也只有放在这一区段,所以用Segment AT 0FFFFH),是我从80C186的资料上原样照搬过来的,一点都没有改。

源程序如下(包括初始化CPU和专用芯片):

DATA SEGMENT PUBLIC ‘DATA’
REG_INI DW 02H,0,0,02H.0,1FEH,0,0 ;IC initiate data
DW 3000H,23 DUP(0)
COUNT1 DW ($-REG_INI)/2
CMD_BLK DW 4200H,6024H,0,02H,0,0,3000H,03E3H
COUNT2 DW ($-CMD_BLK)/2
T1_DATA DW 4 DUP(20)
DW 04H,05H,06H,07H
COUNT3 DW ($-T1_DATA)/2
T2_DATA DW 4 DUP(30)
DW 04H,05H,06H,07H
COUNT4 DW ($-T2_DATA)/2
DATA ENDS
;
STACK1 SEGMENT STACK 'STACK'
DW 32 DUP(?)
TOP LABEL WORD
STACK1 ENDS
;
POWER_ON SEGMENT AT 0FFFFH ;POWER_ON CODE(from 80c186 PDF file)
ASSUME CS:POWER_ON
UMCS_REG EQU 0FFA0H
UMCS_VAL EQU 0FC00H
MOV DX,UMCS_REG
MOV AX,UMCS_VAL
OUT DX,AL
JMP FAR PTR FW
POWER_ON ENDS
;
CODE SEGMENT PUBLIC 'CODE'
ASSUME CS:CODE,DS:DATA,SS:STACK1
FW LABEL FAR
MOV AX,STACK1
MOV SS,AX
MOV SP,OFFSET TOP
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
CLI
LMCS_REG EQU 0FFA2H ;initiate cpu chip-select register
LMCS_VAL EQU 01F8H
MPCS_REG EQU 0FFA8H
MPCS_VAL EQU 8878H
MMCS_REG EQU 0FFA6H
MMCS_VAL EQU 11F8H
MOV DX,LMCS_REG
MOV AX,LMCS_VAL
OUT DX,AL
MOV DX,MPCS_REG
MOV AX,MPCS_VAL
OUT DX,AL
MOV DX,MMCS_REG
MOV AX,MMCS_VAL
OUT DX,AL
;
MOV AX,1000H ;initiate special IC
MOV ES,AX
LEA SI,REG_INI
MOV DI,0
MOV CX,COUNT1
CALL NEAR PTR SUUB
;
LEA SI,CMD_BLK
MOV AX,3000H
MOV DI,AX
MOV CX,COUNT2
CALL NEAR PTR SUUB
;
LEA SI,T1_DATA
MOV AX,020H
MOV DI,AX
MOV CX,COUNT3
CALL NEAR PTR SUUB
;
LEA SI,T2_DATA
MOV AX,040H
MOV DI,AX
MOV CX,COUNT4
CALL NEAR PTR SUUB
;
MOV DI,0
MOV AX,8002H
MOV ES:[DI],AX
;
SUUB PROC NEAR
AGAIN: MOV AX,[SI]
MOV ES:[DI],AX
INC SI
INC DI
DEC CX
JNZ AGAIN
RET
SUUB ENDP
CODE ENDS
END FW

另外请问:我的板子上两块EPROM都是8位的数据线,并接组成16位的数据线,源程序编好后,汇编成目标代码后,如何将此目标代码分烧到两块EPROM中?是不是先要用什么工具将目标代码拆成两段8位的代码,然后再分别烧到相应的EPROM中?如果是这样,那工具是什么工具?
...全文
84 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
01jamse 2002-08-19
  • 打赏
  • 举报
回复
我的两片EPROM都是16KX8的,请KWOK_1980(mars)的这位朋友在帮我看一下,谢谢!
eastxing 2002-08-02
  • 打赏
  • 举报
回复
ASM不行,呵呵!
up
heartup 2002-08-02
  • 打赏
  • 举报
回复
真是高手!
看不懂
kwok_1980 2002-08-02
  • 打赏
  • 举报
回复
太长啦!眼都话啦!
不想看啊!
有没有简短一点的?
zf0579 2002-08-02
  • 打赏
  • 举报
回复
麻烦你告诉我你的硬件EPROM的空间有多大啊?是多少KX16啊? 我猜POWER_ON SEGMENT AT 0FFFFH 把程序地址放在16k*8的地方,不知道你的是多大?分拆是不必要的。
mousemice 2002-08-02
  • 打赏
  • 举报
回复
看不懂

帮你up
me_on_line 2002-08-02
  • 打赏
  • 举报
回复
MY GOD!
GZ

69,335

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧