📄 utility.lst
字号:
0035 ed82 LDY 2,SP
0037 c604 LDAB #4
0039 160000 JSR _ISHRS
003c 6c82 STD 2,SP
600: tx_char0(echo); //send bs the char on screen
003e e686 LDAB 6,SP
0040 160000 JSR tx_char0
601: tx_char0(' '); //send space to clear the char
0043 c620 LDAB #32
0045 160000 JSR tx_char0
602: tx_char0(echo); //send bs again to move back the cursor
0048 e686 LDAB 6,SP
004a 160000 JSR tx_char0
603: }
604: }
605: if (count<3) //update 4 bit data to buffer
004d ec84 LDD 4,SP
004f 8c0003 CPD #3
0052 2c21 BGE *+35 ;abs = 0075
606: {
607: if((echo<='9') && (echo>='0'))
0054 e686 LDAB 6,SP
0056 c030 SUBB #48
0058 c109 CMPB #9
005a 2219 BHI *+27 ;abs = 0075
608: {
609: if ((echo>='0') && (echo<='9'))
610: cdata=echo-0x30;
611: count++;
005c ee84 LDX 4,SP
005e 08 INX
005f 6e84 STX 4,SP
612: tx_char0(echo); //send echo to screen
0061 37 PSHB
0062 e687 LDAB 7,SP
0064 160000 JSR tx_char0
613: i_data=(i_data<<4);
0067 ec83 LDD 3,SP
0069 59 ASLD
006a 59 ASLD
006b 59 ASLD
006c 59 ASLD
006d 6c83 STD 3,SP
614: i_data+=cdata;
006f 33 PULB
0070 87 CLRA
0071 e382 ADDD 2,SP
0073 6c82 STD 2,SP
0075 e68d LDAB 13,SP
0077 041197 DBEQ B,*-102 ;abs = 0011
615: }
616: }
617: }
618:
619: if (echo==DOT||echo ==ESC){
007a e686 LDAB 6,SP
007c c12e CMPB #46
007e 2704 BEQ *+6 ;abs = 0084
0080 c11b CMPB #27
0082 2606 BNE *+8 ;abs = 008a
620: *c_ptr=echo;
0084 ee80 LDX 0,SP
0086 6b00 STAB 0,X
621: return(OK);
0088 204f BRA *+81 ;abs = 00d9
622: }
623:
624: if(count!=0 && echo==CR)
008a ec84 LDD 4,SP
008c 274e BEQ *+80 ;abs = 00dc
008e e686 LDAB 6,SP
0090 c10d CMPB #13
0092 2648 BNE *+74 ;abs = 00dc
625: {
626: for (i=0;i<count;i++)
0094 c7 CLRB
0095 87 CLRA
0096 6c87 STD 7,SP
0098 2039 BRA *+59 ;abs = 00d3
627: {
628: i_data1 = ((i_data)>>((unsigned char)(4*i))&0xf);
009a e688 LDAB 8,SP
009c 58 ASLB
009d 58 ASLB
009e ed82 LDY 2,SP
00a0 160000 JSR _ISHRS
00a3 c40f ANDB #15
00a5 87 CLRA
00a6 6c8e STD 14,SP
629: i_data2=1;
00a8 02 INY
00a9 6d8b STY 11,SP
630: for(j=0;j<i;j++)
00ab c7 CLRB
00ac 6c89 STD 9,SP
00ae 200d BRA *+15 ;abs = 00bd
631: i_data2 *= 10;
00b0 c60a LDAB #10
00b2 87 CLRA
00b3 ed8b LDY 11,SP
00b5 13 EMUL
00b6 6c8b STD 11,SP
00b8 ee89 LDX 9,SP
00ba 08 INX
00bb 6e89 STX 9,SP
00bd ec89 LDD 9,SP
00bf ac87 CPD 7,SP
00c1 2ded BLT *-17 ;abs = 00b0
632: *c_ptr+= i_data1*i_data2;
00c3 e68f LDAB 15,SP
00c5 a68c LDAA 12,SP
00c7 12 MUL
00c8 ee80 LDX 0,SP
00ca eb00 ADDB 0,X
00cc 6b00 STAB 0,X
00ce ee87 LDX 7,SP
00d0 08 INX
00d1 6e87 STX 7,SP
00d3 ec87 LDD 7,SP
00d5 ac84 CPD 4,SP
00d7 2dc1 BLT *-61 ;abs = 009a
633: }
634: return(OK);
00d9 c601 LDAB #1
00db 21 SKIP1
635: }
636: else
637: return(NOTOK);
00dc c7 CLRB
638: }
00dd 1bf010 LEAS 16,SP
00e0 3d RTS
639:
640: /*******************************************************************
641: * Display internal memory to screen subroutine
642: * Description : User inputs the internal memory start address
643: * : and end address
644: * :
645: * Example : start_add=0x1000; end_add=0x1200
646: * Input : start_add and end_add
647: * Output : N/A
648: * Modify : register D
649: * Return : status (OK or NOTOK)
650: *********************************************************************/
651: void data_display()
652: {
Function: data_display
Source : D:\Code S12\Utility\S12DP256\S12 Ex4 Portb ICD\sources\utility.c
Options : -Env"GENPATH=D:\Code S12\Utility\S12DP256\S12 Ex4 Portb ICD;D:\Code S12\Utility\S12DP256\S12 Ex4 Portb ICD\bin;D:\Code S12\Utility\S12DP256\S12 Ex4 Portb ICD\cmd;D:\Code S12\Utility\S12DP256\S12 Ex4 Portb ICD\prm;D:\Code S12\Utility\S12DP256\S12 Ex4 Portb ICD\sources;D:\Metrowerks\CodeWarrior CW12_V2.0\lib\HC12c\LIB;D:\Metrowerks\CodeWarrior CW12_V2.0\lib\HC12c\SRC;D:\Metrowerks\CodeWarrior CW12_V2.0\lib\HC12c\INCLUDE" -Env"LIBPATH=D:\Metrowerks\CodeWarrior CW12_V2.0\lib\HC12c\INCLUDE" -Env"OBJPATH=D:\Code S12\Utility\S12DP256\S12 Ex4 Portb ICD\bin" -Env"TEXTPATH=D:\Code S12\Utility\S12DP256\S12 Ex4 Portb ICD\bin" -Lasm=%n.lst -ObjN="D:\Code S12\Utility\S12DP256\S12 Ex4 Portb ICD\S12_Ex4_Portb_ICD_Data\Flash_Application\ObjectCode\utility.c.o" -Ol0
0000 1bf1ee LEAS -18,SP
653: unsigned int *word,temp,start_add,end_add,i,j;
654: unsigned int itemp;
655: byte *ptr,add_status,lf;
656:
657: word=&temp;
0003 1a8c LEAX 12,SP
0005 6e8a STX 10,SP
658:
659: printf0("\n\r");
0007 cc0000 LDD #"\012\015"
000a 160000 JSR printf0
660: printf0(" Start Address = \r");
000d cc0000 LDD #"\011Start Address = \015"
0010 160000 JSR data_display:233
661: if(input_word(word)==OK)
0013 260b BNE *+13 ;abs = 0020
662: {
663: start_add = *word;
0015 ee8a LDX 10,SP
0017 ec00 LDD 0,X
0019 6c82 STD 2,SP
664: add_status = OK;
001b c601 LDAB #1
001d 6b8f STAB 15,SP
665: }
001f 8f SKIP2
666: else
667: add_status = NOTOK;
0020 698f CLR 15,SP
668:
669: printf0("\n\r");
0022 cc0000 LDD #"\012\015"
0025 160000 JSR printf0
670: printf0(" End Address = \r");
0028 cc0000 LDD #"\011End Address = \015"
002b 160000 JSR data_display:233
671: if(input_word(word)==OK)
002e 2606 BNE *+8 ;abs = 0036
672: end_add = *word;
0030 ee8a LDX 10,SP
0032 ec00 LDD 0,X
0034 2005 BRA *+7 ;abs = 003b
673: else
674: end_add = start_add+0x100;
0036 ec82 LDD 2,SP
0038 c30100 ADDD #256
003b 6c88 STD 8,SP
675:
676: itemp=end_add-start_add;
003d a382 SUBD 2,SP
003f 6cf010 STD 16,SP
677: if((itemp)>0)
0042 1827009f LBEQ *+163 ;abs = 00e5
678: {
679: ptr=(byte *)start_add; //point to start address
0046 ec82 LDD 2,SP
0048 6c80 STD 0,SP
680: j=16;
004a c610 LDAB #16
004c 87 CLRA
004d 6c86 STD 6,SP
681: for (i=0; i<(end_add-start_add);i++)
004f c7 CLRB
0050 6c84 STD 4,SP
0052 060000 JMP data_display:213
682: {
683: if (j>=16)
0055 ec86 LDD 6,SP
0057 8c0010 CPD #16
005a 251e BCS *+32 ;abs = 007a
684: {
685: printf0("\n\r");
005c cc0000 LDD #"\012\015"
005f 160000 JSR printf0
686: temp=(int)ptr;
0062 ec80 LDD 0,SP
0064 6c8c STD 12,SP
687: hex_asc((byte)(temp>>8));
0066 e68c LDAB 12,SP
0068 160000 JSR hex_asc
688: hex_asc((byte)(temp));
006b e68d LDAB 13,SP
006d 160000 JSR hex_asc
689: printf0(" : \r");
0070 cc0000 LDD #" : \015"
0073 160000 JSR printf0
690: j=0;
0076 c7 CLRB
0077 87 CLRA
0078 6c86 STD 6,SP
691: }
692: hex_asc(*ptr++);
007a ee80 LDX 0,SP
007c e630 LDAB 1,X+
007e 6e80 STX 0,SP
0080 160000 JSR hex_asc
693: tx_char0(' ');
0083 c620 LDAB #32
0085 160000 JSR tx_char0
694: j++;
0088 ee86 LDX 6,SP
008a 08 INX
008b 6e86 STX 6,SP
695: if(j>=16)
008d 8e0010 CPX #16
0090 2532 BCS *+52 ;abs = 00c4
696: {
697: ptr-=16;
0092 ec80 LDD 0,SP
0094 830010 SUBD #16
0097 6c80 STD 0,SP
698: for(lf=0;lf<16;lf++)
0099 698e CLR 14,SP
699: {
700: if((*ptr>='0')&&(*ptr<'z'))
009b ee80 LDX 0,SP
009d e600 LDAB 0,X
009f c030 SUBB #48
00a1 c149 CMPB #73
00a3 2204 BHI *+6 ;abs = 00a9
701: tx_char0(*ptr);
00a5 e600 LDAB 0,X
00a7 200b BRA *+13 ;abs = 00b4
702: else if (*ptr==' ')
00a9 e600 LDAB 0,X
00ab c120 CMPB #32
00ad 2603 BNE *+5 ;abs = 00b2
703: tx_char0(' ');
00af c620 LDAB #32
00b1 8f SKIP2
704: else
705: tx_char0('.');
00b2 c62e LDAB #46
00b4 160000 JSR tx_char0
706: *ptr++;
00b7 ee80 LDX 0,SP
00b9 08 INX
00ba 6e80 STX 0,SP
00bc 628e INC 14,SP
00be e68e LDAB 14,SP
00c0 c110 CMPB #16
00c2 25d7 BCS *-39 ;abs = 009b
707: }
708: }
709: if(check_user_abort()==OK)
00c4 160000 JSR check_user_abort
00c7 042106 DBNE B,*+9 ;abs = 00d0
710: i=(end_add-start_add);
00ca ec88 LDD 8,SP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -