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

📄 interrupt.asm

📁 这是用VerilogHDL描述的一个8位精简指令集处理器
💻 ASM
字号:

 ;-------------------------
 ; Test for interrupts
 ;-------------------------

 org 0x0000       ; reset 
   jmpa al 0x1000
 
 org 0x0004       ; nmi
   jmpa al 0x2000 
 
 org 0x0008       ; div 0
   jmpa al 0x2500 
 
 org 0x0020       ; int 8
   jmpa al 0x3000 

 org 0x0090       ; int 24
   jmpa al 0x3500

 ; reset routine
 org 0x1000

  ldi r0 0xaa
  ldi r1 0x00
  udiv r1         ; create a div0 
  lda r1 0xffe0
  ldi r0 0x23
  cmp r1          ; check weather div-0 routine got executed
  jmpa ne error

  ; nmi 
  ldi r0 0x55
  sta r0 0x6780 ; inmi
  nop
  nop
  ldi r0 0x47
  lda r1 0xff27
  cmp r1          ; check weather nmi routine got executed
  jmpa ne error
  nop
  nop
  nop

  ; int 

  ldi r0 0x10
  wrps        ; enable interrupt
 
  ldi r0 0x08
  sta r0 0x6782  ; int vector adress

  ldi r0 0x55
  sta r0 0x6781  ; int
  nop
  nop
  ldi r1 0xd6
  lda r0 0xff98
  cmp r1          ; check weather int routine got executed
  jmpa ne error
  nop
  nop
  nop

  ; both nmi and int at the same time
  ldi r0 0x22
  sta r0 0xff27
  ldi r0 0x22
  sta r0 0xff98
  ldi r0 0x55
  sta r0 0x6783 ; inmi
  nop
  nop
  ldi r0 0x47
  lda r1 0xff27
  cmp r1          ; check weather nmi routine got executed
  jmpa ne error
  ldi r1 0xd6
  lda r0 0xff98
  cmp r1          ; check weather int routine got executed
  jmpa ne error
  nop
  nop
  nop

  ldi r0 0x24
  sta r0 0x6782  ; int vector adress
 
  ldi r0 0x55
  sta r0 0x6781  ; int
  nop
  nop
  ldi r1 0x45
  lda r0 0xff97
  cmp r1          ; check weather int routine got executed
  jmpa ne error
  nop
  nop
  nop

  ; make sure ie works
  ldi r0 0x00
  wrps        ; disable interrupt 
  ldi r0 0x22
  sta r0 0xff98
  ldi r0 0x55
  sta r0 0x6781  ; int
  ldi r1 0x22
  lda r0 0xff98
  cmp r1          ; check weather int routine didn't get executed
  jmpa ne error
  nop
  nop

 jmpr al finish
error:
  ldi r0 0xa2
  sta r0 0x1234
  jmpr al skip

finish:
  ldi r0 0x55
  sta r0 0xffff

skip:
  nop
  nop

 ; nmi routine
 org 0x2000
  ldi r0 0x47
  sta r0 0xff27
  ret 

 ; div-0 routine
 org 0x2500
  ldi r0 0x23
  sta r0 0xffe0
  ret  

 ; int-8 routine
 org 0x3000
  ldi r0 0xd6
  sta r0 0xff98
  ret 

 ; int-24 routine
 org 0x3500
  ldi r0 0x45
  sta r0 0xff97
  ret
 

⌨️ 快捷键说明

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