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

📄 test.asm

📁 这个是专门用在ALtera第二代PLD MAXII上的16位微处理器IP核
💻 ASM
字号:
#include "tinyphy.inc"

    //////////////////////////////////////////////////////////////////////
    // set the stack position in memory
    ldxi    stackstart;
    ldsx;

    //////////////////////////////////////////////////////////////////////
lbl Main;
    ldai    0x0004;
    sta     temp;
    jrs     InitLCD;
    jrs     ReadTemp;
    ldxi    0x2000;
    jrs     Pause;

lbl Main_1;
    jrs     PrintString;

    // setup the 'Temp=' string each 16 bit word holds 2 ascii chars
    // end of string is 0x00 for the last char position.
    data    'T' * 256 + 'e';
    data    'm' * 256 + 'p';
    data    '=' * 256 +0x0000;

    jrs     ReadTemp;
    jrs     PrintHex;

    // set lcd cursor to home
    ldai    0x0080;
    sta     lcd_control;

    // a little pause
    ldxi    0x1000;
    jrs     Pause;

    // invert the led state
    lda     led;
    xori    0x0001;
    sta     led;
    jpr     Main_1;

    //////////////////////////////////////////////////////////////////////
lbl PrintString;
    pula;
    swap;

lbl PrintString_1;
    ldix;
    andi    0xff00;
    jprz    PrintString_Exit;
    ror;
    ror;
    ror;
    ror;
    ror;
    ror;
    ror;
    ror;
    jrs     PrintChar;
    ldix;
    andi    0x00ff;
    jprz    PrintString_Exit;
    jrs     PrintChar;
    inx;
    jpr     PrintString_1;

lbl PrintString_Exit;
    inx;
    swap;
    psha;
    ret;

    //////////////////////////////////////////////////////////////////////
lbl PrintHex;
    ldai    0x0004;
    psha;

lbl PrintHex_1;
    clc;
    swap;
    rol;
    rol;
    rol;
    rol;
    psha;
    rol;
    andi    0x000f;
    addi    0xfff6;
    jprc    PrintHex_3;
    addi    0x003a;

lbl PrintHex_2;
    jrs     PrintChar;
    pula;
    swap;
    pula;
    subi    0x0001;
    jprz    PrintHex_Exit;
    psha;
    jpr     PrintHex_1;

lbl PrintHex_3;
    addi    0x0041;
    jpr     PrintHex_2;

lbl PrintHex_Exit;
    ret;

    //////////////////////////////////////////////////////////////////////
lbl PrintTemp;
    ret;

    //////////////////////////////////////////////////////////////////////
lbl InitLCD;
    lda     lcd_control;
    andi    0x0080;
    jprnz   InitLCD;
    ldai    0x000c;
    sta     lcd_control;
    ret;

    //////////////////////////////////////////////////////////////////////
lbl ReadTemp;
    ldxi    0x0000;
    ldai    0x0009;
    psha;
    ldai    0x0004;
    sta     temp;

lbl ReadTemp_1;
    ldai    0x0000;
    sta     temp;
    lda     temp;
    ror;
    swap;
    rol;
    swap;
    ldai    0x0002;
    sta     temp;
    pula;
    subi    0x0001;
    jprz    ReadTemp_2;
    psha;
    jpr     ReadTemp_1;

lbl ReadTemp_2;
    ldai    0x0004;
    sta     temp;
    ret;

    //////////////////////////////////////////////////////////////////////
lbl PrintChar;
    sta     lcd_data;

lbl PrintChar_1;
    lda     lcd_control;
    andi    0x0080;
    jprnz   PrintChar_1;
    ret;

    //////////////////////////////////////////////////////////////////////
lbl Pause;
    dex;
    jprnz   Pause;
    ret;

#if (pass==4) { dump codestart, mem; }

⌨️ 快捷键说明

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