⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setiobit.asm

📁 在凌阳科技教育推广中心的兴趣产品智能机器人的基础上
💻 ASM
📖 第 1 页 / 共 5 页
字号:
.INCLUDE  hardware.inc
.DATA
  Bit:   .DW 0xfffe,0xfffd,0xfffb,0xfff7,0xffef,0xffdf,0xffbf,0xff7f,0xfeff,0xfdff,0xfbff,0xf7ff,0xefff,0xdfff,0xbfff,0x7fff;//'0''1''2''3''4''5''6''7''8''9'的代码
  One:   .DW 0x0001,0x0002,0x0004,0x0008,0x0010,0x0020,0x0040,0x0080,0x0100,0x0200,0x0400,0x0800,0x1000,0x2000,0x4000,0x8000;

.CODE
.public _Set_IOA_Bit
.public Set_IOA_Bit
_Set_IOA_Bit: .PROC
Set_IOA_Bit:
    push bp to [sp];  
    bp = sp + 3  
    r4 = [bp+1]
    r1=  [P_IOA_Dir]
    r2= r4+Bit
    r2= [r2]
    r1= r1&r2
    r3 = [bp+2]
    cmp r3,0
    je AZeroDir
    r2= r4+One
    r2= [r2]
    r1= r1|r2
    [P_IOA_Dir]=r1
AZeroDir:
    [P_IOA_Dir]=r1 
    r1=  [P_IOA_Attrib]
    r2= r4+Bit
    r2= [r2]
    r1= r1&r2
    r3 = [bp+3]
    cmp r3,0
    je AZeroAttrib
    r2= r4+One
    r2= [r2]
    r1= r1|r2
    [P_IOA_Attrib]=r1
AZeroAttrib:
    [P_IOA_Attrib]=r1
    r1=  [P_IOA_Buffer]
    r2= r4+Bit
    r2= [r2]
    r1= r1&r2
    r3 = [bp+4]
    cmp r3,0
    je AZeroBuffer
    r2= r4+One
    r2= [r2]
    r1= r1|r2
    [P_IOA_Buffer]=r1
AZeroBuffer:
    [P_IOA_Buffer]=r1
    r1=  [P_IOA_Buffer]
    r2= r4+Bit
    r2= [r2]
    r1= r1&r2
    r3 = [bp+4]
    cmp r3,0
    je AZeroData
    r2= r4+One
    r2= [r2]
    r1= r1|r2
    [P_IOA_Data]=r1
AZeroData:
    [P_IOA_Data]=r1
    pop bp from [sp]
    retf;
.ENDP

.public _Set_IOB_Bit
.public Set_IOB_Bit
_Set_IOB_Bit: .PROC
Set_IOB_Bit:
    push bp to [sp];  
    bp = sp + 3 
    r4 = [bp+1]
    r1=  [P_IOB_Dir]
    r2= r4+Bit
    r2= [r2]
    r1= r1&r2
    r3 = [bp+2]
    cmp r3,0
    je BZeroDir
    r2= r4+One
    r2= [r2]
    r1= r1|r2
    [P_IOB_Dir]=r1
BZeroDir:
    [P_IOB_Dir]=r1 
    r1=  [P_IOB_Attrib]
    r2= r4+Bit
    r2= [r2]
    r1= r1&r2
    r3 = [bp+3]
    cmp r3,0
    je BZeroAttrib
    r2= r4+One
    r2= [r2]
    r1= r1|r2
    [P_IOB_Attrib]=r1
BZeroAttrib:
    [P_IOB_Attrib]=r1
    r1=  [P_IOB_Buffer]
    r2= r4+Bit
    r2= [r2]
    r1= r1&r2
    r3 = [bp+4]
    cmp r3,0
    je BZeroBuffer
    r2= r4+One
    r2= [r2]
    r1= r1|r2
    [P_IOB_Buffer]=r1
BZeroBuffer:
    [P_IOB_Buffer]=r1
    r1=  [P_IOB_Buffer]
    r2= r4+Bit
    r2= [r2]
    r1= r1&r2
    r3 = [bp+4]
    cmp r3,0
    je BZeroData
    r2= r4+One
    r2= [r2]
    r1= r1|r2
    [P_IOB_Data]=r1
BZeroData:
    [P_IOB_Data]=r1
    pop bp from [sp]
    retf;
.ENDP

.PUBLIC _Get_IOA_Bit
.PUBLIC Get_IOA_Bit
_Get_IOA_Bit:.PROC
Get_IOA_Bit:
    push bp to [sp];  
    bp = sp + 3 
    r3 = [bp+2]
    cmp r3,0
    je  AGetBufferBit
    r4 = [bp+1]
    r1=  [P_IOA_Data]
    r2= r4+Bit
    r2= [r2]
    r1= r1|r2
    cmp r1,r2
    je AReturnData0
    r1=1
    pop bp from [sp]
    retf;
AReturnData0:
    r1=0 
    pop bp from [sp]
    retf;
AGetBufferBit:
    r4 = [bp+1]
    r1=  [P_IOA_Buffer]
    r2= r4+Bit
    r2= [r2]
    r1= r1|r2
    cmp r1,r2
    je AReturnBuffer0
    r1=1
    pop bp from [sp]
    retf;
AReturnBuffer0:
    r1=0 
    pop bp from [sp]
    retf;  
    .ENDP
    
.PUBLIC _Get_IOB_Bit
.PUBLIC Get_IOB_Bit
_Get_IOB_Bit:.PROC
Get_IOB_Bit:
    push bp to [sp];  
    bp = sp + 3 
    r3 = [bp+2]
    cmp r3,0
    je  BGetBufferBit
    r4 = [bp+1]
    r1=  [P_IOB_Data]
    r2= r4+Bit
    r2= [r2]
    r1= r1|r2
    cmp r1,r2
    je BReturnData0
    r1=1
    pop bp from [sp]
    retf;
   
BReturnData0:
    r1=0 
    pop bp from [sp]
    retf;
BGetBufferBit:
    r4 = [bp+1]
    r1=  [P_IOB_Buffer]
    r2= r4+Bit
    r2= [r2]
    r1= r1|r2
    cmp r1,r2
    je BReturnBuffer0
    r1=1
    pop bp from [sp]
    retf;
BReturnBuffer0:
    r1=0 
    pop bp from [sp] 
    retf;
    .ENDP
    
.public _Set_IOA0_Dir0
.public Set_IOA0_Dir0
_Set_IOA0_Dir0: .PROC
Set_IOA0_Dir0:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xfffe
    r1= r1&r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA0_Dir1
.public Set_IOA0_Dir1
_Set_IOA0_Dir1: .PROC
Set_IOA0_Dir1:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xfffe
    r1= r1&r2
    r2=  0x0001
    r1=r1|r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA1_Dir0
.public Set_IOA1_Dir0
_Set_IOA1_Dir0: .PROC
Set_IOA1_Dir0:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xfffd
    r1= r1&r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA1_Dir1
.public Set_IOA1_Dir1
_Set_IOA1_Dir1: .PROC
Set_IOA1_Dir1:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xfffd
    r1= r1&r2
    r2=  0x0002
    r1=r1|r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA2_Dir0
.public Set_IOA2_Dir0
_Set_IOA2_Dir0: .PROC
Set_IOA2_Dir0:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xfffb
    r1= r1&r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA2_Dir1
.public Set_IOA2_Dir1
_Set_IOA2_Dir1: .PROC
Set_IOA2_Dir1:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xfffb
    r1= r1&r2
    r2=  0x0004
    r1=r1|r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA3_Dir0
.public Set_IOA3_Dir0
_Set_IOA3_Dir0: .PROC
Set_IOA3_Dir0:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xfff7
    r1= r1&r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA3_Dir1
.public Set_IOA3_Dir1
_Set_IOA3_Dir1: .PROC
Set_IOA3_Dir1:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xfff7
    r1= r1&r2
    r2=  0x0008
    r1=r1|r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA4_Dir0
.public Set_IOA4_Dir0
_Set_IOA4_Dir0: .PROC
Set_IOA4_Dir0:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xffef
    r1= r1&r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA4_Dir1
.public Set_IOA4_Dir1
_Set_IOA4_Dir1: .PROC
Set_IOA4_Dir1:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xffef
    r1= r1&r2
    r2=  0x0010
    r1=r1|r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA5_Dir0
.public Set_IOA5_Dir0
_Set_IOA5_Dir0: .PROC
Set_IOA5_Dir0:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xffdf
    r1= r1&r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA5_Dir1
.public Set_IOA5_Dir1
_Set_IOA5_Dir1: .PROC
Set_IOA5_Dir1:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xffdf
    r1= r1&r2
    r2=  0x0020
    r1=r1|r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA6_Dir0
.public Set_IOA6_Dir0
_Set_IOA6_Dir0: .PROC
Set_IOA6_Dir0:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xffbf
    r1= r1&r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA6_Dir1
.public Set_IOA6_Dir1
_Set_IOA6_Dir1: .PROC
Set_IOA6_Dir1:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xffbf
    r1= r1&r2
    r2=  0x0040
    r1=r1|r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA7_Dir0
.public Set_IOA7_Dir0
_Set_IOA7_Dir0: .PROC
Set_IOA7_Dir0:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xff7f
    r1= r1&r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA7_Dir1
.public Set_IOA7_Dir1
_Set_IOA7_Dir1: .PROC
Set_IOA7_Dir1:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xff7f
    r1= r1&r2
    r2=  0x0080
    r1=r1|r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA8_Dir0
.public Set_IOA8_Dir0
_Set_IOA8_Dir0: .PROC
Set_IOA8_Dir0:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xfeff
    r1= r1&r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA8_Dir1
.public Set_IOA8_Dir1
_Set_IOA8_Dir1: .PROC
Set_IOA8_Dir1:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xfeff
    r1= r1&r2
    r2=  0x0100
    r1=r1|r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA9_Dir0
.public Set_IOA9_Dir0
_Set_IOA9_Dir0: .PROC
Set_IOA9_Dir0:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xfdff
    r1= r1&r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA9_Dir1
.public Set_IOA9_Dir1
_Set_IOA9_Dir1: .PROC
Set_IOA9_Dir1:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xfdff
    r1= r1&r2
    r2=  0x0200
    r1=r1|r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA10_Dir0
.public Set_IOA10_Dir0
_Set_IOA10_Dir0: .PROC
Set_IOA10_Dir0:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xfbff
    r1= r1&r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA10_Dir1
.public Set_IOA10_Dir1
_Set_IOA10_Dir1: .PROC
Set_IOA10_Dir1:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xfbff
    r1= r1&r2
    r2=  0x0400
    r1=r1|r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA11_Dir0
.public Set_IOA11_Dir0
_Set_IOA11_Dir0: .PROC
Set_IOA11_Dir0:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xf7ff
    r1= r1&r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA11_Dir1
.public Set_IOA11_Dir1
_Set_IOA11_Dir1: .PROC
Set_IOA11_Dir1:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xf7ff
    r1= r1&r2
    r2=  0x0800
    r1=r1|r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA12_Dir0
.public Set_IOA12_Dir0
_Set_IOA12_Dir0: .PROC
Set_IOA12_Dir0:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xefff
    r1= r1&r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA12_Dir1
.public Set_IOA12_Dir1
_Set_IOA12_Dir1: .PROC
Set_IOA12_Dir1:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xefff
    r1= r1&r2
    r2=  0x1000
    r1=r1|r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA13_Dir0
.public Set_IOA13_Dir0
_Set_IOA13_Dir0: .PROC
Set_IOA13_Dir0:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xdfff
    r1= r1&r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA13_Dir1
.public Set_IOA13_Dir1
_Set_IOA13_Dir1: .PROC
Set_IOA13_Dir1:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xdfff
    r1= r1&r2
    r2=  0x2000
    r1=r1|r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA14_Dir0
.public Set_IOA14_Dir0
_Set_IOA14_Dir0: .PROC
Set_IOA14_Dir0:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xbfff
    r1= r1&r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA14_Dir1
.public Set_IOA14_Dir1
_Set_IOA14_Dir1: .PROC
Set_IOA14_Dir1:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0xbfff
    r1= r1&r2
    r2=  0x4000
    r1=r1|r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA15_Dir0
.public Set_IOA15_Dir0
_Set_IOA15_Dir0: .PROC
Set_IOA15_Dir0:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0x7fff
    r1= r1&r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA15_Dir1
.public Set_IOA15_Dir1
_Set_IOA15_Dir1: .PROC
Set_IOA15_Dir1:
    push r1,r5 to [sp];
    r1=  [P_IOA_Dir]
    r2= 0x7fff
    r1= r1&r2
    r2=  0x8000
    r1=r1|r2
    [P_IOA_Dir]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA0_Attrib0
.public Set_IOA0_Attrib0
_Set_IOA0_Attrib0: .PROC
Set_IOA0_Attrib0:
    push r1,r5 to [sp];
    r1=  [P_IOA_Attrib]
    r2= 0xfffe
    r1= r1&r2
    [P_IOA_Attrib]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA0_Attrib1
.public Set_IOA0_Attrib1
_Set_IOA0_Attrib1: .PROC
Set_IOA0_Attrib1:
    push r1,r5 to [sp];
    r1=  [P_IOA_Attrib]
    r2= 0xfffe
    r1= r1&r2
    r2=  0x0001
    r1=r1|r2
    [P_IOA_Attrib]=r1 
    pop r1,r5 from [sp]
    retf;
    .ENDP
.public _Set_IOA1_Attrib0
.public Set_IOA1_Attrib0
_Set_IOA1_Attrib0: .PROC
Set_IOA1_Attrib0:
    push r1,r5 to [sp];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -