📄 read_rom.asm
字号:
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
// Directly Driver.lib Ver1.0
// Writen by: Eagle
// Last modified date:
// 2002/05/10: first version
// Hardware description (M27C4001)
// PA0-PA15===A0-A15 , PB0-PB3===A16-A18/A19
// PB4===-G,PB5===-E , PB8-PB15===D0-D7
// Destory PB6-PB7
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
.include hardware.inc
.CODE
.public F_Initial_Rom_IO;
.public _Initial_Rom_IO;
_Initial_Rom_IO: .PROC
F_Initial_Rom_IO:
PUSH R1,R1 TO [SP];
R1 = 0xFFFF; //
[P_IOA_Dir] = R1; // Set port IOA output
[P_IOA_Attrib] = R1; //
[P_IOA_Data] = R1;
R1 = 0x0F00; // 设置PORTB,低8位为输入口(数据),
[P_IOB_Dir] = R1; // Set port IOB output
[P_IOB_Attrib] = R1; //
R1 = 0x00FF;
[P_IOB_Data] = R1; //
POP R1,R1 FROM [SP];
RETF;
.ENDP
//**************************************************
//Read_Byte函数
//Name:汇编 F_Read_Byte_DRam,C语言Read_Byte_DRam
//Funcation: Read_Byte To Memory
//Input: Memory Address 64K
//C语言M_Address或实参
//Destory:
//Reture:汇编R1,C语言MData_Buffer所读数据
//***************************************************
.public F_Read_Byte_Rom;
.public _Read_Byte_Rom;
F_Read_Byte_Rom: .PROC
[SP--] = R2
[SP--] = R1
CALL _Read_Byte_Rom
SP+ = 2
RETF;
.ENDP
_Read_Byte_Rom: .PROC
PUSH BP,BP TO [SP];
BP = SP + 1;
PUSH R2,R4 TO [SP];
R1 = [BP+4]; //
R1 = R1 LSL 4;
R1 = R1 LSL 4;
R1& = 0x0F00;
[P_IOB_Data] = R1;
R1 = [BP+3]; //
[P_IOA_Data] = R1;
R2 = [P_IOB_Data]
R2& = 0x00FF
R1+ = 1; //
[P_IOA_Data] = R1;
R3 = [P_IOB_Data]
R1 = R3 LSL 4;
R1 = R1 LSL 4;
R1 = R1 + R2;
POP R2,R4 FROM [SP];
POP BP,BP FROM [SP];
RETF;
.ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -