📄 ex3_utility.lst
字号:
0049 ec83 LDD 3,SP
004b 8c0004 CPD #4
004e 2c3f BGE *+65 ;abs = 008f
417: {
418: if((echo<='f') && (echo>='0'))
0050 e682 LDAB 2,SP
0052 c030 SUBB #48
0054 c136 CMPB #54
0056 2237 BHI *+57 ;abs = 008f
419: {
420: if (echo>='a') echo-=(0x20); //covert upper case
0058 e682 LDAB 2,SP
005a c161 CMPB #97
005c 2504 BCS *+6 ;abs = 0062
005e c020 SUBB #32
0060 6b82 STAB 2,SP
421: if ((echo>='0') && (echo<='9'))
0062 e682 LDAB 2,SP
0064 c030 SUBB #48
0066 c109 CMPB #9
0068 2202 BHI *+4 ;abs = 006c
422: cdata=echo-0x30;
006a 2004 BRA *+6 ;abs = 0070
423: else
424: cdata=echo-0x37;
006c e682 LDAB 2,SP
006e c037 SUBB #55
0070 6b85 STAB 5,SP
425: count++;
0072 ee83 LDX 3,SP
0074 08 INX
0075 6e83 STX 3,SP
426: tx_char0(echo); //send echo to screen
0077 e682 LDAB 2,SP
0079 160000 JSR tx_char0
427: *i_ptr=(*i_ptr<<4);
007c ee80 LDX 0,SP
007e ec00 LDD 0,X
0080 59 ASLD
0081 59 ASLD
0082 59 ASLD
0083 59 ASLD
0084 6c00 STD 0,X
428: *i_ptr+=cdata;
0086 b746 TFR D,Y
0088 e685 LDAB 5,SP
008a 87 CLRA
008b 19ee LEAY D,Y
008d 6d00 STY 0,X
008f e686 LDAB 6,SP
0091 04117a DBEQ B,*-131 ;abs = 000e
429: }
430: }
431: }
432:
433: if(count!=0 && echo==CR)
0094 ec83 LDD 3,SP
0096 2709 BEQ *+11 ;abs = 00a1
0098 e682 LDAB 2,SP
009a c10d CMPB #13
009c 2603 BNE *+5 ;abs = 00a1
434: return(OK);
009e c601 LDAB #1
00a0 21 SKIP1
435: else
436: return(NOTOK);
00a1 c7 CLRB
437: }
00a2 1b87 LEAS 7,SP
00a4 3d RTS
438:
439: /*******************************************************************
440: * Input byte (hex) subroutine
441: * Description : Get the data(byte) from user
442: * :
443: * :
444: * Example : N/A
445: * Input : N/A
446: * Output : *c_ptr
447: * Modify : N/A
448: * Return : status [OK for ('0'-'z') or NOTOK for others chars]
449: *********************************************************************/
450: byte input_byte(byte *c_ptr)
451: {
Function: input_byte
Source : D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\sources\ex3_utility.c
Options : -DNON_BANK -Env"GENPATH=D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31;D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\bin;D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\cmd;D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\prm;D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\sources;C:\Program Files\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\LIB;C:\Program Files\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\SRC;C:\Program Files\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\INCLUDE" -Env"LIBPATH=C:\Program Files\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\INCLUDE" -Env"OBJPATH=D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\bin" -Env"TEXTPATH=D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\bin" -Lasm=%n.lst -ObjN="D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\S12_Ex4_Portb_ICD_CW31_Data\Flash_Application\ObjectCode\ex3_utility.c.o" -Ol0
0000 6ca9 STD 7,-SP
452: byte echo,cdata,loop=ENABLE;
0002 c601 LDAB #1
0004 6b86 STAB 6,SP
453: int count=0;
0006 c7 CLRB
0007 87 CLRA
0008 6c83 STD 3,SP
454:
455: *c_ptr=0;
000a ee80 LDX 0,SP
000c 6b00 STAB 0,X
456:
457: while(loop == ENABLE)
458: {
459: echo=rx_char0();
000e 160000 JSR rx_char0
0011 6b82 STAB 2,SP
460: if((echo==ESC)||(echo==DOT)||(echo==CR))
0013 c11b CMPB #27
0015 2708 BEQ *+10 ;abs = 001f
0017 c12e CMPB #46
0019 2704 BEQ *+6 ;abs = 001f
001b c10d CMPB #13
001d 2602 BNE *+4 ;abs = 0021
461: loop = DISABLE; //break the while loop
001f 6986 CLR 6,SP
462: if (echo==BS || echo==DEL)
0021 c108 CMPB #8
0023 2704 BEQ *+6 ;abs = 0029
0025 c17f CMPB #127
0027 2620 BNE *+34 ;abs = 0049
463: {
464: if(count>0) //del 4 bit data in buffer
0029 ee83 LDX 3,SP
002b 2f1c BLE *+30 ;abs = 0049
465: {
466: count--;
002d 09 DEX
002e 6e83 STX 3,SP
467: *c_ptr=*c_ptr>>4;
0030 ee80 LDX 0,SP
0032 e600 LDAB 0,X
0034 54 LSRB
0035 54 LSRB
0036 54 LSRB
0037 54 LSRB
0038 6b00 STAB 0,X
468: tx_char0(echo); //send bs the char on screen
003a e682 LDAB 2,SP
003c 160000 JSR tx_char0
469: tx_char0(' '); //send space to clear the char
003f c620 LDAB #32
0041 160000 JSR tx_char0
470: tx_char0(echo); //send bs again to move back the cursor
0044 e682 LDAB 2,SP
0046 160000 JSR tx_char0
471: }
472: }
473: if (count<2) //update 4 bit data to buffer
0049 ec83 LDD 3,SP
004b 8c0002 CPD #2
004e 2c39 BGE *+59 ;abs = 0089
474: {
475: if((echo<='f') && (echo>='0'))
0050 e682 LDAB 2,SP
0052 c030 SUBB #48
0054 c136 CMPB #54
0056 2231 BHI *+51 ;abs = 0089
476: {
477: if (echo>='a') echo-=(0x20); //covert upper case
0058 e682 LDAB 2,SP
005a c161 CMPB #97
005c 2504 BCS *+6 ;abs = 0062
005e c020 SUBB #32
0060 6b82 STAB 2,SP
478: if ((echo>='0') && (echo<='9'))
0062 e682 LDAB 2,SP
0064 c030 SUBB #48
0066 c109 CMPB #9
0068 2202 BHI *+4 ;abs = 006c
479: cdata=echo-0x30;
006a 2004 BRA *+6 ;abs = 0070
480: else
481: cdata=echo-0x37;
006c e682 LDAB 2,SP
006e c037 SUBB #55
0070 6b85 STAB 5,SP
482: count++;
0072 ee83 LDX 3,SP
0074 08 INX
0075 6e83 STX 3,SP
483: tx_char0(echo); //send echo to screen
0077 e682 LDAB 2,SP
0079 160000 JSR tx_char0
484: *c_ptr=(*c_ptr<<4);
007c ee80 LDX 0,SP
007e e600 LDAB 0,X
0080 8610 LDAA #16
0082 12 MUL
0083 6b00 STAB 0,X
485: *c_ptr+=cdata;
0085 eb85 ADDB 5,SP
0087 6b00 STAB 0,X
0089 e686 LDAB 6,SP
008b 041180 DBEQ B,*-125 ;abs = 000e
486: }
487: }
488: }
489:
490: if (echo==DOT||echo ==ESC){
008e e682 LDAB 2,SP
0090 c12e CMPB #46
0092 2704 BEQ *+6 ;abs = 0098
0094 c11b CMPB #27
0096 2606 BNE *+8 ;abs = 009e
491: *c_ptr=echo;
0098 ee80 LDX 0,SP
009a 6b00 STAB 0,X
492: return(OK);
009c 2008 BRA *+10 ;abs = 00a6
493: }
494:
495: if(count!=0 && echo==CR)
009e ee83 LDX 3,SP
00a0 2707 BEQ *+9 ;abs = 00a9
00a2 c10d CMPB #13
00a4 2603 BNE *+5 ;abs = 00a9
496: return(OK);
00a6 c601 LDAB #1
00a8 21 SKIP1
497: else
498: return(NOTOK);
00a9 c7 CLRB
499: }
00aa 1b87 LEAS 7,SP
00ac 3d RTS
500:
501: /*******************************************************************
502: * Input String (ASCII) subroutine
503: * Description : Get the data(byte) from user
504: * :
505: * :
506: * Example : N/A
507: * Input : N/A
508: * Output : *c_ptr
509: * Modify : N/A
510: * Return : status [OK for ('0'-'z') or NOTOK for others chars]
511: *********************************************************************/
512: byte input_string(byte *c_ptr, byte *n)
513: {
Function: input_string
Source : D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\sources\ex3_utility.c
Options : -DNON_BANK -Env"GENPATH=D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31;D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\bin;D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\cmd;D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\prm;D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\sources;C:\Program Files\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\LIB;C:\Program Files\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\SRC;C:\Program Files\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\INCLUDE" -Env"LIBPATH=C:\Program Files\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\INCLUDE" -Env"OBJPATH=D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\bin" -Env"TEXTPATH=D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\bin" -Lasm=%n.lst -ObjN="D:\Profiles\r63492.FSL\My Documents\技术资料\培训教材\HCS12\S12 Ex4 Portb ICD CW31\S12_Ex4_Portb_ICD_CW31_Data\Flash_Application\ObjectCode\ex3_utility.c.o" -Ol0
0000 6cab STD 5,-SP
514: byte echo,loop=ENABLE;
0002 c601 LDAB #1
0004 6b84 STAB 4,SP
515: byte count=0;
0006 6982 CLR 2,SP
516:
517: while(loop == ENABLE)
518: {
519: echo=rx_char0();
0008 160000 JSR rx_char0
000b 6b83 STAB 3,SP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -