Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Turbo Assembler Version 4.1 03/02/13 03:06:09 Page 1
- pro2.asm
- 1 ;===========MACROS==========
- 2 ;-----INPUT MACROS
- 3 INPUT_BCD_SUB MACRO DIGIT
- 4 CALL COMMON_INP_PROC
- 5 MOV DIGIT_PLACE, DIGIT
- 6 CALL NUM_CONVERTOR
- 7 ENDM
- 8
- 9 INPUT_BCD MACRO VAR
- 10 XOR BX,BX
- 11 SHOW T_MSG2
- 12 INPUT_BCD_SUB 1000
- 13 INPUT_BCD_SUB 0100
- 14 INPUT_BCD_SUB 0010
- 15 INPUT_BCD_SUB 0001
- 16 MOV VAR, BX
- 17 XOR BX,BX
- 18 ENDM
- 19
- 20 ;-----SHOW MACRO
- 21 SHOW MACRO MSG
- 22 MOV AH, 09H
- 23 LEA DX, MSG
- 24 INT 21H
- 25 ENDM
- 26 ;-----END: SHOW MACRO
- 27
- 28 ;-----KILLME MACRO
- 29 KILLME MACRO
- 30 MOV AH, 4CH
- 31 INT 21H
- 32 ENDM
- 33 ;-----END: KILLME MACRO
- 34
- 35 0000 .MODEL SMALL
- 36 0000 .DATA
- 37 0000 0A 0D 45 6E 74 65 72+ T_MSG1 DB 10,13,'Enter a number: $'
- 38 20 61 20 6E 75 6D 62+
- 39 65 72 3A 20 24
- 40 0013 0A 0D 59 6F 75 20 68+ T_MSG2 DB 10,13,'You have entered: $'
- 41 61 76 65 20 65 6E 74+
- 42 65 72 65 64 3A 20 24
- 43 0028 0A 0D 41 6E 20 65 72+ ERR_MSG DB 10,13, 'An error has occured: Invalid digit entered. Please use digits 0 to +
- 44 72 6F 72 20 68 61 73+ 9 $'
- 45 20 6F 63 63 75 72 65+
- 46 64 3A 20 49 6E 76 61+
- 47 6C 69 64 20 64 69 67+
- 48 69 74 20 65 6E 74 65+
- 49 72 65 64 2E 20 50 6C+
- 50 65 61 73 65 20 75 73+
- 51 65 20 64 69 67 69 74+
- 52 73 20 30 20 74 6F 20+
- 53 39 20 24
- 54 0071 0001 VAR_NUM1 DW 1 ;DUP(0)
- 55 0073 0001 DIGIT_PLACE DW 1 ;DUP(0)
- 56 0075 .CODE
- 57
- Turbo Assembler Version 4.1 03/02/13 03:06:09 Page 2
- pro2.asm
- 58 0000 COMMON_INP_PROC PROC
- 59 0000 B4 01 MOV AH, 01H
- 60 0002 CD 21 INT 21H
- 61 0004 3C 30 CMP AL, 30H
- 62 0006 72 04 JB ERR1
- 63 0008 3C 39 CMP AL, 39H
- 64 000A 76 0B JBE SUBT_30
- 65 000C ERR1: SHOW ERR_MSG
- 1 66 000C B4 09 MOV AH, 09H
- 1 67 000E BA 0028r LEA DX, ERR_MSG
- 1 68 0011 CD 21 INT 21H
- 69 KILLME
- 1 70 0013 B4 4C MOV AH, 4CH
- 1 71 0015 CD 21 INT 21H
- 72 0017 2C 1E SUBT_30: SUB AL, 30
- 73 0019 C3 RET
- 74 001A COMMON_INP_PROC ENDP
- 75
- 76 001A NUM_CONVERTOR PROC
- 77 001A 8A C8 MOV CL,AL
- 78 001C 03 1E 0073r COUNT: ADD BX, DIGIT_PLACE
- 79 0020 8B 16 0073r MOV DX, DIGIT_PLACE
- 80 0024 B4 02 MOV AH, 02H
- 81 0026 CD 21 INT 21H
- 82 0028 E2 F2 LOOP COUNT
- 83 002A NUM_CONVERTOR ENDP
- 84
- 85 002A MAIN PROC
- 86 002A B8 0000s MOV AX, @DATA
- 87 002D 8E D8 MOV DS, AX
- 88
- 89 SHOW T_MSG1
- 1 90 002F B4 09 MOV AH, 09H
- 1 91 0031 BA 0000r LEA DX, T_MSG1
- 1 92 0034 CD 21 INT 21H
- 93 INPUT_BCD VAR_NUM1
- 1 94 0036 33 DB XOR BX,BX
- 1 95 SHOW T_MSG2
- 2 96 0038 B4 09 MOV AH, 09H
- 2 97 003A BA 0013r LEA DX, T_MSG2
- 2 98 003D CD 21 INT 21H
- 1 99 INPUT_BCD_SUB 1000
- 2 100 003F E8 FFBE CALL COMMON_INP_PROC
- 2 101 0042 C7 06 0073r 03E8 MOV DIGIT_PLACE, 1000
- 2 102 0048 E8 FFCF CALL NUM_CONVERTOR
- 1 103 INPUT_BCD_SUB 0100
- 2 104 004B E8 FFB2 CALL COMMON_INP_PROC
- 2 105 004E C7 06 0073r 0064 MOV DIGIT_PLACE, 0100
- 2 106 0054 E8 FFC3 CALL NUM_CONVERTOR
- 1 107 INPUT_BCD_SUB 0010
- 2 108 0057 E8 FFA6 CALL COMMON_INP_PROC
- 2 109 005A C7 06 0073r 000A MOV DIGIT_PLACE, 0010
- 2 110 0060 E8 FFB7 CALL NUM_CONVERTOR
- 1 111 INPUT_BCD_SUB 0001
- 2 112 0063 E8 FF9A CALL COMMON_INP_PROC
- 2 113 0066 C7 06 0073r 0001 MOV DIGIT_PLACE, 0001
- 2 114 006C E8 FFAB CALL NUM_CONVERTOR
- Turbo Assembler Version 4.1 03/02/13 03:06:09 Page 3
- pro2.asm
- 1 115 006F 89 1E 0071r MOV VAR_NUM1, BX
- 1 116 0073 33 DB XOR BX,BX
- 117 KILLME
- 1 118 0075 B4 4C MOV AH, 4CH
- 1 119 0077 CD 21 INT 21H
- 120 0079 MAIN ENDP
- 121 END MAIN
- Turbo Assembler Version 4.1 03/02/13 03:06:09 Page 4
- Symbol Table
- Symbol Name Type Value
- ??DATE Text "03/02/13"
- ??FILENAME Text "pro2 "
- ??TIME Text "03:06:09"
- ??VERSION Number 040A
- @32BIT Text 0
- @CODE Text _TEXT
- @CODESIZE Text 0
- @CPU Text 0101H
- @CURSEG Text _TEXT
- @DATA Text DGROUP
- @DATASIZE Text 0
- @FILENAME Text PRO2
- @INTERFACE Text 000H
- @MODEL Text 2
- @STACK Text DGROUP
- @WORDSIZE Text 2
- COMMON_INP_PROC Near _TEXT:0000
- COUNT Near _TEXT:001C
- DIGIT_PLACE Word DGROUP:0073
- ERR1 Near _TEXT:000C
- ERR_MSG Byte DGROUP:0028
- MAIN Near _TEXT:002A
- NUM_CONVERTOR Near _TEXT:001A
- SUBT_30 Near _TEXT:0017
- T_MSG1 Byte DGROUP:0000
- T_MSG2 Byte DGROUP:0013
- VAR_NUM1 Word DGROUP:0071
- Macro Name
- INPUT_BCD
- INPUT_BCD_SUB
- KILLME
- SHOW
- Groups & Segments Bit Size Align Combine Class
- DGROUP Group
- _DATA 16 0075 Word Public DATA
- _TEXT 16 0079 Word Public CODE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement