Microsoft (R) Macro Assembler Version 6.11 05/03/10 09:06:29 2.asm Page 1 - 1 include IO.ASM C C .nolist ;§ ¯à¥â § ¯¨á¨ í⮣® ä ©«  ¢ «¨á⨭£ C .list C 0000 data segment 0000 45 72 72 6F 72 21 Big db 'Error! U entered more than 100 symbols! Enter again plz$' 20 55 20 65 6E 74 65 72 65 64 20 6D 6F 72 65 20 74 68 61 6E 20 31 30 30 20 73 79 6D 62 6F 6C 73 21 20 45 6E 74 65 72 20 61 67 61 69 6E 20 70 6C 7A 24 0038 0065 [ X db 101 dup (?) 00 ] 009D 4F 6C 64 20 74 65 Src db 'Old text: $' 78 74 3A 20 24 00A8 52 75 6C 65 3A 20 Rule db 'Rule: $' 24 00AF 4E 65 77 20 74 65 New db 'New text: $' 78 74 3A 20 24 00BA data ends 0000 stack segment stack 0000 0080 [ db 128 dup (?) 00 ] 0080 stack ends 0000 code segment assume cs: code, ds: data, ss: stack 0000 B8 ---- R start: mov ax, data 2.asm(14): warning A4012: line number information for segment without class 'CODE' : code 0003 8E D8 mov ds, ax ;Ââîä òåêñòà 0005 Retry: outch '>' 0005 52 1 push dx 0006 50 1 push ax 0007 B2 3E 1 mov dl,'>' 0009 B4 02 1 mov ah,2 000B CD 21 1 int 21h 000D 58 1 pop ax 000E 5A 1 pop dx 000F B9 0001 mov cx, 1 0012 2B F6 sub si, si 0014 Next: inch X[si] 0014 50 1 push ax 0015 B0 00 1 mov al,0 0017 9A ---- 0000 E 1 call procinch 001C 88 84 0038 R 1 mov X[si],al 0020 58 1 pop ax 0021 80 BC 0038 R 2E cmp X[si], '.' 0026 74 1F je EndInp 0028 83 F9 64 cmp cx, 64h 002B 73 04 jae NdLess 002D 41 inc cx 002E 46 inc si 002F EB E3 jmp Next 0031 8D 16 0000 R NdLess: lea dx, Big outstr 0035 50 1 push ax 0036 B4 09 1 mov ah,9 0038 CD 21 1 int 21h 003A 58 1 pop ax flush 003B 9A ---- 0000 E 1 call procflush newline 0040 9A ---- 0000 E 1 call procnl 0045 EB BE jmp Retry 0047 C6 84 0038 R 24 EndInp: mov X[si], '$' 004C 8D 16 009D R lea dx, Src outstr 0050 50 1 push ax 0051 B4 09 1 mov ah,9 0053 CD 21 1 int 21h 0055 58 1 pop ax 0056 8D 16 0038 R lea dx, x outstr 005A 50 1 push ax 005B B4 09 1 mov ah,9 005D CD 21 1 int 21h 005F 58 1 pop ax newline 0060 9A ---- 0000 E 1 call procnl 0065 8D 06 0038 R lea ax, x 0069 50 push ax 006A E8 0052 call Prop 006D 8D 16 00A8 R lea dx, Rule outstr 0071 50 1 push ax 0072 B4 09 1 mov ah,9 0074 CD 21 1 int 21h 0076 58 1 pop ax outint ax 0077 50 2 push ax 0078 52 2 push dx 0079 B2 00 2 mov dl,0 007B 8B C0 2 mov ax,ax 007D B6 01 2 mov dh,1 007F 9A ---- 0000 E 2 call procoutnum 0084 5A 2 pop dx 0085 58 2 pop ax newline 0086 9A ---- 0000 E 1 call procnl 008B 83 F8 01 cmp ax, 1 008E 75 0A jne LRule2 0090 8D 06 0038 R lea ax, x 0094 50 push ax 0095 E8 005F call Rule1 0098 EB 08 jmp End4 Art3as (15:29:44 01/05/2010) 2.asm(52): error A2008: syntax error : ( 009A 8D 06 0038 R LRule2: lea ax, x 009E 50 push ax 009F E8 0081 call Rule2 00A2 8D 16 00AF R End4: lea dx, New outstr 00A6 50 1 push ax 00A7 B4 09 1 mov ah,9 00A9 CD 21 1 int 21h 00AB 58 1 pop ax 00AC 8D 16 0038 R lea dx, x outstr 00B0 50 1 push ax 00B1 B4 09 1 mov ah,9 00B3 CD 21 1 int 21h 00B5 58 1 pop ax newline 00B6 9A ---- 0000 E 1 call procnl finish 00BB B4 4C 1 mov ah,4Ch 00BD CD 21 1 int 21h ;Function checks the property ;ax=1 - true. ax=2 - false 00BF Prop proc 00BF 55 push bp 00C0 8B EC mov bp, sp 00C2 53 push bx 00C3 56 push si 00C4 2B F6 sub si, si 00C6 8B 5E 04 mov bx, [bp+4] 00C9 80 38 30 CheckD: cmp [bx][si], byte ptr '0' 00CC 72 20 jb No 00CE 80 38 39 cmp [bx][si], byte ptr '9' 00D1 77 1B ja No 00D3 83 FE 00 cmp si, 0 00D6 75 0D jne Ok 00D8 46 Next2: inc si 00D9 80 38 24 cmp byte ptr [bx][si], '$' 00DC 75 FA jne Next2 00DE 83 EE 01 sub si, 1 00E1 8A 00 mov al, [bx][si] 00E3 EB E4 jmp CheckD 00E5 3A 07 Ok: cmp al, [bx] 00E7 74 05 je No 00E9 B8 0001 mov ax, 1 00EC EB 03 jmp End1 00EE B8 0002 No: mov ax, 2 00F1 5E End1: pop si 00F2 5B pop bx 00F3 5D pop bp 00F4 C2 0004 ret 2*2 00F7 Prop endp 00F7 Rule1 proc 00F7 55 push bp 00F8 8B EC mov bp, sp 00FA 53 push bx 00FB 56 push si 00FC 51 push cx 00FD 2B F6 sub si, si 00FF 8B 5E 04 mov bx, [bp+4] 0102 80 38 61 Next3: cmp [bx][si], byte ptr 'a' 0105 72 0F jb No2 0107 80 38 7A cmp [bx][si], byte ptr 'z' 010A 77 0A ja No2 010C B9 0061 mov cx, 'a' 010F 29 08 sub [bx][si], cx 0111 B9 0041 mov cx, 'A' 0114 01 08 add [bx][si], cx 0116 46 No2: inc si 0117 83 38 24 cmp [bx][si], '$' 011A 75 E6 jne Next3 011C 59 pop cx 011D 5E pop si 011E 5B pop bx 011F 5D pop bp 0120 C2 0004 ret 2*2 0123 Rule1 endp 0123 Rule2 proc 0123 55 push bp 0124 8B EC mov bp, sp 0126 53 push bx 0127 56 push si 0128 51 push cx 0129 50 push ax 012A 2B F6 sub si, si 012C 8B 5E 04 mov bx, [bp+4] 012F 80 78 01 24 Next4: cmp byte ptr [bx][si+1], '$' 0133 74 20 je End5 0135 8A 40 01 mov al, [bx][si+1] 0138 3A 00 cmp al, [bx][si] 013A 75 16 jne Not1 013C 8B CE mov cx, si 013E 88 00 Retry1: mov byte ptr [bx][si], al 0140 46 inc si 0141 8A 40 01 mov al, [bx][si+1] 0144 80 78 01 24 cmp byte ptr [bx][si+1], '$' 0148 74 02 je GG 014A EB F2 jmp Retry1 014C 88 00 GG: mov byte ptr [bx][si], al 014E 8B F1 mov si, cx 0150 EB DD jmp Next4 0152 46 Not1: inc si 0153 EB DA jmp Next4 0155 58 End5: pop ax 0156 59 pop cx 0157 5E pop si 0158 5B pop bx 0159 5D pop bp 015A C2 0004 ret 2*2 015D Rule2 endp 015D code ends end start Microsoft (R) Macro Assembler Version 6.11 05/03/10 09:06:29 2.asm Symbols 2 - 1 Macros: N a m e Type finish . . . . . . . . . . . . . Proc flush . . . . . . . . . . . . . Proc inch . . . . . . . . . . . . . . Proc inint . . . . . . . . . . . . . Proc newline . . . . . . . . . . . . Proc outch . . . . . . . . . . . . . Proc outint . . . . . . . . . . . . . Proc outnum . . . . . . . . . . . . . Proc outstr . . . . . . . . . . . . . Proc outword . . . . . . . . . . . . Proc same . . . . . . . . . . . . . . Proc Segments and Groups: N a m e Size Length Align Combine Class code . . . . . . . . . . . . . . 16 Bit 015D Para Private data . . . . . . . . . . . . . . 16 Bit 00BA Para Private stack . . . . . . . . . . . . . 16 Bit 0080 Para Stack Procedures, parameters and locals: N a m e Type Value Attr Prop . . . . . . . . . . . . . . P Near 00BF code Length= 0038 Private Rule1 . . . . . . . . . . . . . P Near 00F7 code Length= 002C Private Rule2 . . . . . . . . . . . . . P Near 0123 code Length= 003A Private Symbols: N a m e Type Value Attr ??0000 . . . . . . . . . . . . . Number 0000h ??0001 . . . . . . . . . . . . . Number 0000h Big . . . . . . . . . . . . . . Byte 0000 data CheckD . . . . . . . . . . . . . L Near 00C9 code End1 . . . . . . . . . . . . . . L Near 00F1 code End4 . . . . . . . . . . . . . . L Near 00A2 code End5 . . . . . . . . . . . . . . L Near 0155 code EndInp . . . . . . . . . . . . . L Near 0047 code GG . . . . . . . . . . . . . . . L Near 014C code LRule2 . . . . . . . . . . . . . L Near 009A code NdLess . . . . . . . . . . . . . L Near 0031 code New . . . . . . . . . . . . . . Byte 00AF data Next2 . . . . . . . . . . . . . L Near 00D8 code Next3 . . . . . . . . . . . . . L Near 0102 code Next4 . . . . . . . . . . . . . L Near 012F code Next . . . . . . . . . . . . . . L Near 0014 code No2 . . . . . . . . . . . . . . L Near 0116 code Not1 . . . . . . . . . . . . . . L Near 0152 code No . . . . . . . . . . . . . . . L Near 00EE code Ok . . . . . . . . . . . . . . . L Near 00E5 code Retry1 . . . . . . . . . . . . . L Near 013E code Retry . . . . . . . . . . . . . L Near 0005 code Rule . . . . . . . . . . . . . . Byte 00A8 data Src . . . . . . . . . . . . . . Byte 009D data X . . . . . . . . . . . . . . . Byte 0038 data procflush . . . . . . . . . . . L Far 0000 External procinch . . . . . . . . . . . . L Far 0000 External procinint . . . . . . . . . . . L Far 0000 External procnl . . . . . . . . . . . . . L Far 0000 External procoutnum . . . . . . . . . . . L Far 0000 External start . . . . . . . . . . . . . L Near 0000 code 1 Warnings 1 Errors