Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .model SMALL
- .stack 100h
- input_buff_size EQU 1024
- output_buff_size EQU 1024
- .data
- input_file DB "duom.txt", 0
- output_file DB "rez.txt", 0
- input_buff DB input_buff_size dup (?)
- output_buff DB output_buff_size dup (?)
- enteris DB 10, 13, "$"
- error_read DB "Klaida atidarant duomenu faila", 10, 13, "$"
- error_write DB "Klaida atidarant rezultatu faila", 10, 13, "$"
- error_reading DB "Klaida skaitant duomenu faila", 10, 13, "$"
- error_writing DB "Klaida rasant i rezultatu faila", 10, 13, "$"
- incomplete_writing DB "Nevisi duomenys surasyti i rezultatu faila", 10, 13, "$"
- error_closing DB "Nepavyko uzdaryti failo", 10, 13, "$"
- zero DB "nulis", 10, 13, "$"
- one DB "vienas", 10, 13, "$"
- two DB "du", 10, 13, "$"
- three DB "trys", 10, 13, "$"
- four DB "keturi", 10, 13, "$"
- five DB "penki", 10, 13, "$"
- six DB "sesi", 10, 13, "$"
- seven DB "septyni", 10, 13, "$"
- eight DB "astuoni", 10, 13, "$"
- nine DB "devyni", 10, 13, "$"
- input_handle DW ?
- output_handle DW ?
- .code
- pradzia:
- MOV AX, @data
- MOV DS, AX
- CALL open_input_file
- CALL open_output_file
- read:
- MOV BX, input_handle
- CALL read_input_file
- CMP AX, 0
- JE close_output_file
- ; darbas su nuskaityta info
- MOV CX, AX
- PUSH AX
- MOV AX, 5
- LEA SI, input_buff
- LEA DI, output_buff
- LEA BX, zero
- ; tikrinam ar current symbol == '0'
- lyginimas:
- MOV DL, [SI]
- CMP DL, '0'
- JE write_zero
- JNE tesinys ; tesk jeigu nera 0
- write_zero:
- MOV DX, [BX]
- MOV [DI], DX
- INC DI
- INC BX
- CMP DI, AX
- JE write_zero
- JNE tesinys
- tesinys:
- INC SI
- LOOP lyginimas
- ; rezultatu irasymas
- POP AX
- MOV CX, AX
- MOV BX, output_handle
- CALL output_buffer
- CMP AX, input_buff_size
- JE read
- JMP pabaiga
- close_output_file:
- MOV AH, 3Eh
- MOV BX, output_handle
- INT 21h
- JC error_closing_file
- JMP pabaiga
- close_input_file:
- MOV AH, 3Eh
- MOV BX, input_handle
- INT 21h
- JC error_closing_file
- JMP pabaiga
- ; ***** klaidos *****
- error_opening_read:
- MOV AH, 9
- LEA DX, error_read
- INT 21h
- JMP pabaiga
- error_opening_write:
- MOV AH, 9
- LEA DX, error_write
- INT 21h
- JMP pabaiga
- error_closing_file:
- MOV AH, 9
- LEA DX, error_closing
- INT 21h
- JMP pabaiga
- PROC open_input_file
- MOV AH, 3Dh
- MOV AL, 00
- LEA DX, input_file
- INT 21h
- JC error_opening_read
- MOV input_handle, AX
- RET
- open_input_file ENDP
- PROC open_output_file
- MOV AH, 3Ch
- MOV CX, 0
- LEA DX, output_file
- INT 21h
- JC error_opening_write
- MOV output_handle, AX
- RET
- open_output_file ENDP
- PROC read_input_file
- PUSH CX
- PUSH DX
- MOV AH, 3Fh
- MOV CX, input_buff_size
- LEA DX, input_buff
- INT 21h
- JC error_while_reading
- read_input_file_end:
- POP DX
- POP CX
- RET
- error_while_reading:
- MOV AX, 0
- MOV AH, 9
- LEA DX, error_reading
- INT 21h
- JMP read_input_file_end
- read_input_file ENDP
- PROC output_buffer
- PUSH DX
- MOV AH, 40h
- LEA DX, output_buff
- INT 21h
- JC error_while_writing
- CMP CX, AX
- JNE incomplete_write
- incomplete_write:
- MOV AH, 9
- LEA DX, incomplete_writing
- INT 21h
- JMP write_output_end
- write_output_end:
- POP DX
- RET
- error_while_writing:
- MOV AX, 0
- MOV AH, 9
- LEA DX, error_writing
- INT 21h
- JMP write_output_end
- output_buffer ENDP
- pabaiga:
- MOV AH, 4Ch
- MOV AL, 0
- INT 21h
- END pradzia
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement