; //*****************************************//
; // //
; // 带中断处理能力的模型机实验指令文件 //
; // //
; // By TangDu CO.,LTD //
; // //
; //*****************************************//
; //***** Start Of Main Memory Data *****//
$P 00 60 ; LDI R0,13H 将立即数13装入R0
$P 01 13
$P 02 30 ; OUT C0H,R0 将R0中的内容写入端口C0中,即写
$P 03 C0 ; ICW1,边沿触发,单片模式,需要ICW4
$P 04 60 ; LDI R0,30H 将立即数30装入R0
$P 05 30
$P 06 30 ; OUT C1H,R0 将R0中的内容写入端口C1中,即写
$P 07 C1 ; ICW2,中断向量为30-37
$P 08 60 ; LDI R0,03H 将立即数03装入R0
$P 09 03
$P 0A 30 ; OUT C1H,R0 将R0中的内容写入端口C1中,即写
$P 0B C1 ; ICW4,非缓冲,86模式,自动EOI
$P 0C 60 ; LDI R0,FCH 将立即数FC装入R0
$P 0D FC
$P 0E 30 ; OUT C1H,R0 将R0中的内容写入端口C1中,即写
$P 0F C1 ; OCW1,只允许IR0, IR1请求
$P 10 63 ; LDI SP,A0H 初始化堆栈指针为A0
$P 11 A0
$P 12 70 ; STI CPU开中断
$P 13 20 ; IN R0,00H 从端口00(IN单元)读入计数初值
$P 14 00
$P 15 22 ; IN R2,00H 从端口00(IN单元)读入计数初值
$P 16 00
$P 17 41 ; LOOP:MOV R1,R0 移动数据,并等待中断
$P 18 E0 ; JMP LOOP 跳转,并等待中断
$P 19 17
; 以下为IR0中断服务程序:
$P 20 80 ; CLI CPU关中断
$P 21 61 ; LDI R1,FFH 将立即数FF装入R1
$P 22 FF
$P 23 04 ; ADD R0,R1 将R0和R1相加,即计数值加1
$P 24 30 ; OUT 40H,R0 将计数值输出到端口40(OUT单元)
$P 25 40
$P 26 70 ; STI CPU开中断
$P 27 B0 ; IRET 中断返回
$P 30 20 ; IR0的中断入口地址20
$P 31 40 ; IR1的中断入口地址40
; 以下为IR1中断服务程序:
$P 40 80 ; CLI CPU关中断
$P 41 61 ; LDI R1,01H 将立即数01装入R2
$P 42 01
$P 43 06 ; ADD R2,R1 将R2和R3相加,即计数值加1
$P 44 38 ; OUT 40H,R2 将计数值输出到端口40(OUT单元)
$P 45 40
$P 46 70 ; STI CPU开中断
$P 47 B0 ; IRET 中断返回
; //***** End Of Main Memory Data *****//
; //** Start Of MicroController Data **//
$M 00 0001C1 ; NOP
$M 01 000102 ; 中断测试, P<4>
$M 02 006D43 ; PC->AR, PC加1
$M 03 107070 ; MEM->IR, P<1>
$M 04 002405 ; RS->B
$M 05 05B201 ; A减B->RD ------------------Here
$M 06 002407 ; RS->B
$M 07 013201 ; A与B->RD
$M 08 106009 ; MEM->AR
$M 09 183001 ; IO->RD
$M 0A 106010 ; MEM->AR
$M 0B 000001 ; NOP
$M 0C 103001 ; MEM->RD
$M 0D 200601 ; RD->MEM
$M 0E 005341 ; A->PC
$M 0F 0000CB ; NOP, P<3>
$M 10 280401 ; RS->IO
$M 11 103001 ; MEM->RD
$M 12 200413 ; RS->MEM
$M 13 001A14 ; SP->A
$M 14 06C201 ; A加1->SP
$M 15 064216 ; A减1->SP
$M 16 006A17 ; SP->AR
$M 17 103001 ; MEM->RD
$M 18 064219 ; A减1->SP
$M 19 006A1A ; SP->AR
$M 1A 105141 ; MEM->PC
$M 1B 005341 ; A->PC
$M 1C 10101D ; MEM->A
$M 1D 10608C ; MEM->AR, P<2>
$M 1E 10601F ; MEM->AR
$M 1F 101020 ; MEM->A
$M 20 10608C ; MEM->AR, P<2>
$M 22 406A23 ; INTA#, SP->AR
$M 23 200C24 ; PC->MEM
$M 24 001A25 ; SP->A
$M 25 06C226 ; A加1->SP
$M 26 406027 ; INTA#, 入口->AR
$M 27 105142 ; MEM->PC
$M 28 101029 ; MEM->A
$M 29 00282A ; RI->B
$M 2A 04E22B ; A加B->AR
$M 2B 04928C ; A加B->A, P<2>
$M 2C 10102D ; MEM->A
$M 2D 002C2E ; PC->B
$M 2E 04E22F ; A加B->AR
$M 2F 04928C ; A加B->A, P<2>
$M 30 001604 ; RD->A
$M 31 001606 ; RD->A
$M 32 006D48 ; PC->AR, PC加1
$M 33 006D4A ; PC->AR, PC加1
$M 34 003401 ; RS->RD
$M 35 000035 ; NOP
$M 36 006D51 ; PC->AR, PC加1
$M 37 000181 ; STI
$M 38 0001C1 ; CLI
$M 39 006A12 ; SP->AR
$M 3A 001A15 ; SP->A
$M 3B 001A18 ; SP->A
$M 3C 006D5C ; PC->AR, PC加1
$M 3D 006D5E ; PC->AR, PC加1
$M 3E 006D68 ; PC->AR, PC加1
$M 3F 006D6C ; PC->AR, PC加1
; //** End Of MicroController Data **//