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

📄 counter.lst

📁 自制的计算器程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
Turbo Assembler	 Version 4.1	    08/05/25 15:11:43	    Page 1
F:\MICROC~1\计算器\counter.ASM



      1				      ;显示字符的宏定义
      2					     DISP  MACRO     CHAR
      3						   PUSH	     AX
      4						   PUSH	     DX		 ;保存DX和AX
      5						   MOV	     DL,CHAR	 ;显示字符
      6						   MOV	     AH,2
      7						   INT	     21H
      8						   POP	     DX
      9						   POP	     AX
     10						   ENDM
     11				     ;
     12
     13				     ;
     14	0000				     DSEG  SEGMENT
     15
     16	0000  0A*(??)			     DATA  DB	     10	DUP (?)
     17	000A  05*(??)			   RESULT  DB	     5 DUP (?)
     18	000F  54 68 65 20 73 79	6D+	   TABLE1  DB	     'The symbol is wrong!',0AH,0DH,'$'
     19	      62 6F 6C 20 69 73	20+
     20	      77 72 6F 6E 67 21	0A+
     21	      0D 24
     22	0026  54 68 65 20 72 65	73+	   TABLE2  DB	     'The result is:',0AH,0DH,'$'
     23	      75 6C 74 20 69 73	3A+
     24	      0A 0D 24
     25	0037  61 6E 64 20 74 68	65+	   TABLE3  DB	     'and the arithmetical compliment is:','$'
     26	      20 61 72 69 74 68	6D+
     27	      65 74 69 63 61 6C	20+
     28	      63 6F 6D 70 6C 69	6D+
     29	      65 6E 74 20 69 73	3A+
     30	      24
     31	005B  50 6C 65 61 73 65	20+	   TABLE4  DB	     'Please import the	expressions:',0AH,0DH,'$'
     32	      69 6D 70 6F 72 74	20+
     33	      74 68 65 20 65 78	70+
     34	      72 65 73 73 69 6F	6E+
     35	      73 3A 0A 0D 24
     36	007C  45 58 50 4C 41 49	4E+	   TABLE5  DB	     'EXPLAIN:Please the mun less than 255.After you improt the	first mun,  +
     37	      3A 50 6C 65 61 73	65+  please import space.afte the second mun,import enter',0AH,0DH,'$'
     38	      20 74 68 65 20 6D	75+
     39	      6E 20 6C 65 73 73	20+
     40	      74 68 61 6E 20 32	35+
     41	      35 2E 41 66 74 65	72+
     42	      20 79 6F 75 20 69	6D+
     43	      70 72 6F 74 20 74	68+
     44	      65 20 66 69 72 73	74+
     45	      20 6D 75 6E 2C 70	6C+
     46	      65 61 73 65 20 69	6D+
     47	      70 6F 72 74 20 73	70+
     48	      61 63 65 2E 61 66	74+
     49	      65 20 74 68 65 20	73+
     50	      65 63 6F 6E 64 20	6D+
     51	      75 6E 2C 69 6D 70	6F+
     52	      72 74 20 65 6E 74	65+
     53	      72 0A 0D 24
     54
     55	00F7				     DSEG  ENDS
     56	0000				     SSEG  SEGMENT   STACK 'STACK'
     57	0000  64*(??)				   DB	     100 DUP (?)
Turbo Assembler	 Version 4.1	    08/05/25 15:11:43	    Page 2
F:\MICROC~1\计算器\counter.ASM



     58	0064				     SSEG  ENDS
     59				     ;
     60	0000				     CSEG  SEGMENT
     61						   ASSUME    CS:CSEG,DS:DSEG,SS:SSEG
     62	0000				   START:
     63	0000  B8 0000s				   MOV	     AX,DSEG	 ;初始化数据段
     64	0003  8E D8				   MOV	     DS,AX
     65	0005  B8 0000s				   MOV	     AX,SSEG
     66	0008  8E D0				   MOV	     SS,AX
     67	000A  BA 007Cr				   LEA	     DX,TABLE5
     68	000D  B4 09				   MOV	     AH,9
     69	000F  CD 21				   INT	     21H
     70	0011  B4 01			   BEGIN:  MOV	     AH,1
     71	0013  CD 21				   INT	     21H
     72	0015  3C 0D				   CMP	     AL,0DH
     73	0017  74 0A				   JZ	     L0
     74	0019  3C 1B				   CMP	     AL,1BH
     75	001B  74 02				   JZ	     LLL
     76	001D  EB F2				   JMP	     BEGIN
     77	001F				     LLL:
     78	001F  B4 4C				   MOV	     AH,4CH
     79	0021  CD 21				   INT	     21H
     80
     81	0023				      L0:
     82	0023  BA 005Br				   LEA	     DX,TABLE4
     83	0026  B4 09				   MOV	     AH,9
     84	0028  CD 21				   INT	     21H
     85	002A  BE 0000r				   MOV	     SI,OFFSET DATA
     86	002D  B1 00				   MOV	     CL,0
     87				     ;以下为输入数据程序段
     88	002F				      L1:
     89	002F  B4 01				   MOV	     AH,1
     90	0031  CD 21				   INT	     21H
     91	0033  3C 20				   CMP	     AL,20H
     92	0035  74 07				   JZ	     L2		 ;yes
     93	0037  88 04				   MOV	     [SI],AL
     94	0039  46				   INC	     SI
     95	003A  FE C1				   INC	     CL
     96	003C  EB F1				   JMP	     L1
     97	003E				      L2:
     98	003E  80 F9 02				   CMP	     CL,2
     99	0041  74 10				   JZ	     L3
    100	0043  80 F9 03				   CMP	     CL,3
    101	0046  74 23				   JZ	     L4
    102	0048  A0 0000r				   MOV	     AL,DATA	 ; ONE BIT
    103	004B  2C 30				   SUB	     AL,30H
    104	004D  A2 0006r				   MOV	     DATA+6,AL
    105	0050  EB 3E 90				   JMP	     L5
    106					      ;TWO BIT
    107	0053				      L3:
    108	0053  A0 0000r				   MOV	     AL,DATA
    109	0056  2C 30				   SUB	     AL,30H
    110	0058  8A 3E 0001r			   MOV	     BH,DATA+1
    111	005C  80 EF 30				   SUB	     BH,30H
    112	005F  B3 0A				   MOV	     BL,10
    113	0061  F6 E3				   MUL	     BL
    114	0063  02 C7				   ADD	     AL,BH
Turbo Assembler	 Version 4.1	    08/05/25 15:11:43	    Page 3
F:\MICROC~1\计算器\counter.ASM



    115	0065  A2 0006r				   MOV	     DATA+6,AL
    116	0068  EB 26 90				   JMP	     L5
    117					       ; THREE BIT
    118	006B				      L4:
    119	006B  A0 0001r				   MOV	     AL,DATA+1
    120	006E  2C 30				   SUB	     AL,30H
    121	0070  8A 3E 0002r			   MOV	     BH,DATA+2
    122	0074  80 EF 30				   SUB	     BH,30H
    123	0077  B3 0A				   MOV	     BL,10
    124	0079  F6 E3				   MUL	     BL
    125	007B  02 C7				   ADD	     AL,BH
    126	007D  8A F8				   MOV	     BH,AL
    127	007F  A0 0000r				   MOV	     AL,DATA
    128	0082  2C 30				   SUB	     AL,30H
    129	0084  B3 64				   MOV	     BL,100
    130	0086  F6 E3				   MUL	     BL
    131	0088  02 C7				   ADD	     AL,BH
    132	008A  A2 0006r				   MOV	     DATA+6,AL
    133	008D  EB 01 90				   JMP	     L5
    134				     ;输入运算符号
    135	0090				      L5:
    136	0090  B4 01				   MOV	     AH,1
    137	0092  CD 21				   INT	     21H
    138	0094  A2 0007r				   MOV	     DATA+7,AL
    139						   DISP	     20H
1   140	0097  50				   PUSH	     AX
1   141	0098  52				   PUSH	     DX		 ;保存DX和AX
1   142	0099  B2 20				   MOV	     DL,20H	;显示字符
1   143	009B  B4 02				   MOV	     AH,2
1   144	009D  CD 21				   INT	     21H
1   145	009F  5A				   POP	     DX
1   146	00A0  58				   POP	     AX
    147	00A1  BE 0000r				   MOV	     SI,OFFSET DATA
    148	00A4  B1 00				   MOV	     CL,0
    149				     ;
    150	00A6				      L6:
    151	00A6  B4 01				   MOV	     AH,1
    152	00A8  CD 21				   INT	     21H
    153	00AA  3C 0D				   CMP	     AL,0DH
    154	00AC  74 07				   JZ	     L7		 ;yes
    155	00AE  88 04				   MOV	     [SI],AL
    156	00B0  46				   INC	     SI
    157	00B1  FE C1				   INC	     CL
    158	00B3  EB F1				   JMP	     L6
    159	00B5				      L7:
    160	00B5  80 F9 02				   CMP	     CL,2
    161	00B8  74 10				   JZ	     L8
    162	00BA  80 F9 03				   CMP	     CL,3
    163	00BD  74 23				   JZ	     L9
    164	00BF  A0 0000r				   MOV	     AL,DATA	 ; ONE BIT
    165	00C2  2C 30				   SUB	     AL,30H
    166	00C4  A2 0008r				   MOV	     DATA+8,AL
    167	00C7  EB 3E 90				   JMP	     M1
    168					      ;TWO BIT
    169	00CA				      L8:
    170	00CA  A0 0000r				   MOV	     AL,DATA
    171	00CD  2C 30				   SUB	     AL,30H
Turbo Assembler	 Version 4.1	    08/05/25 15:11:43	    Page 4
F:\MICROC~1\计算器\counter.ASM



    172	00CF  8A 3E 0001r			   MOV	     BH,DATA+1
    173	00D3  80 EF 30				   SUB	     BH,30H
    174	00D6  B3 0A				   MOV	     BL,10
    175	00D8  F6 E3				   MUL	     BL
    176	00DA  02 C7				   ADD	     AL,BH
    177	00DC  A2 0008r				   MOV	     DATA+8,AL
    178	00DF  EB 26 90				   JMP	     M1
    179					       ; THREE BIT
    180	00E2				      L9:
    181	00E2  A0 0001r				   MOV	     AL,DATA+1
    182	00E5  2C 30				   SUB	     AL,30H
    183	00E7  8A 3E 0002r			   MOV	     BH,DATA+2
    184	00EB  80 EF 30				   SUB	     BH,30H
    185	00EE  B3 0A				   MOV	     BL,10
    186	00F0  F6 E3				   MUL	     BL
    187	00F2  02 C7				   ADD	     AL,BH
    188	00F4  8A F8				   MOV	     BH,AL
    189	00F6  A0 0000r				   MOV	     AL,DATA
    190	00F9  2C 30				   SUB	     AL,30H
    191	00FB  B3 64				   MOV	     BL,100
    192	00FD  F6 E3				   MUL	     BL
    193	00FF  02 C7				   ADD	     AL,BH
    194	0101  A2 0008r				   MOV	     DATA+8,AL
    195	0104  EB 01 90				   JMP	     M1
    196
    197				     ; 以下为计算过程
    198	0107				      M1:
    199	0107  B2 0A				   MOV	     DL,0AH
    200	0109  B4 02				   MOV	     AH,2
    201	010B  CD 21				   INT	     21H
    202	010D  B2 0D				   MOV	     DL,0DH
    203	010F  B4 02				   MOV	     AH,2
    204	0111  CD 21				   INT	     21H
    205	0113  BA 0026r				   LEA	     DX,TABLE2
    206	0116  B4 09				   MOV	     AH,9
    207	0118  CD 21				   INT	     21H
    208	011A				      M2:
    209	011A  A0 0007r				   MOV	     AL,DATA+7
    210	011D  3C 2B				   CMP	     AL,2BH
    211	011F  74 20				   JE	     M4
    212	0121  3C 2D				   CMP	     AL,2DH
    213	0123  74 33				   JE	     M5
    214	0125  3C 2A				   CMP	     AL,2AH
    215	0127  74 43				   JE	     M6
    216	0129  3C 2F				   CMP	     AL,2FH
    217	012B  74 52				   JE	     M7
    218	012D  B4 02				   MOV	     AH,2
    219	012F  B0 0A				   MOV	     AL,0AH
    220	0131  CD 21				   INT	     21H
    221	0133  B4 02				   MOV	     AH,2
    222	0135  CD 15				   INT	     21
    223	0137  BA 000Fr				   LEA	     DX,TABLE1
    224	013A  B4 09				   MOV	     AH,9
    225	013C  CD 21				   INT	     21H
    226	013E  E9 FEBF				   JMP	     START
    227	0141  B4 00			      M4:  MOV	     AH,0
    228	0143  A0 0006r				   MOV	     AL,DATA+6
Turbo Assembler	 Version 4.1	    08/05/25 15:11:43	    Page 5
F:\MICROC~1\计算器\counter.ASM



    229	0146  B7 00				   MOV	     BH,0
    230	0148  8A 1E 0008r			   MOV	     BL,DATA+8
    231	014C  03 C3				   ADD	     AX,BX
    232	014E  88 26 000Br			   MOV	     RESULT+1,AH
    233	0152  A2 000Ar				   MOV	     RESULT,AL
    234	0155  EB 45 90				   JMP	     M8
    235	0158				      M5:
    236	0158  A0 0006r				   MOV	     AL,DATA+6
    237	015B  8A 1E 0008r			   MOV	     BL,DATA+8
    238	015F  2A C3				   SUB	     AL,BL
    239	0161  C6 06 000Br 00			   MOV	     RESULT+1,0
    240	0166  A2 000Ar				   MOV	     RESULT,AL
    241	0169  EB 31 90				   JMP	     M8
    242	016C				      M6:
    243	016C  A0 0006r				   MOV	     AL,DATA+6
    244	016F  8A 1E 0008r			   MOV	     BL,DATA+8
    245	0173  F6 E3				   MUL	     BL
    246	0175  A2 000Ar				   MOV	     RESULT,AL
    247	0178  88 26 000Br			   MOV	     RESULT+1,AH
    248	017C  EB 1E 90				   JMP	     M8
    249	017F  B4 00			      M7:  MOV	     AH,0
    250	0181  A0 0006r				   MOV	     AL,DATA+6
    251	0184  8A 1E 0008r			   MOV	     BL,DATA+8
    252	0188  F6 F3				   DIV	     BL
    253	018A  C6 06 000Br 00			   MOV	     RESULT+1,0
    254	018F  A2 000Ar				   MOV	     RESULT,AL
    255	0192  88 26 000Cr			   MOV	     RESULT+2,AH
    256	0196  EB 04 90				   JMP	     M8
    257	0199  E9 FE75			      LL:  JMP	     BEGIN
    258				     ;以下为显示程序
    259	019C				      M8:
    260	019C  A0 000Ar				   MOV	     AL,RESULT
    261	019F  8A 26 000Br			   MOV	     AH,RESULT+1
    262				     ;FIVE BITS
    263	01A3  3D 2710				   CMP	     AX,2710H
    264	01A6  72 5B				   JB	     M13
    265	01A8  BA 0000				   MOV	     DX,0
    266	01AB  BB 2710				   MOV	     BX,2710H
    267	01AE  F7 F3				   DIV	     BX
    268	01B0  8B CA				   MOV	     CX,DX
    269	01B2  D4 0A				   AAM
    270	01B4  04 30				   ADD	     AL,30H
    271						   DISP	     AL
1   272	01B6  50				   PUSH	     AX
1   273	01B7  52				   PUSH	     DX		 ;保存DX和AX
1   274	01B8  8A D0				   MOV	     DL,AL     ;显示字符
1   275	01BA  B4 02				   MOV	     AH,2
1   276	01BC  CD 21				   INT	     21H
1   277	01BE  5A				   POP	     DX
1   278	01BF  58				   POP	     AX
    279	01C0  8B C1				   MOV	     AX,CX
    280	01C2  B3 64				   MOV	     BL,100
    281	01C4  F6 F3				   DIV	     BL
    282	01C6  8A CC				   MOV	     CL,AH
    283	01C8  B4 00				   MOV	     AH,0
    284	01CA  D4 0A				   AAM
    285	01CC  05 3030				   ADD	     AX,3030H

⌨️ 快捷键说明

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