Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; Melnik Victor ISPR A1
- ; LR_6 10 var
- ; Если длина симв. файла меньше N байт, то дополнить пробелами
- ; иначе урезать до размера N.
- CODESG SEGMENT PARA 'CODE'
- ASSUME CS: CODESG, DS: CODESG, SS: CODESG, ES: CODESG
- ORG 100h
- BEGIN: JMP MAIN
- FILENAME db 'text.txt$'
- SYMBOLS db '%'
- cmd db 3 dup(0), '$'
- cmd_N dw 0
- handle dw 0
- file_len dw 0
- MAIN PROC NEAR
- CALL GET_PARAM
- mov cmd_N, bx
- ; open file RW
- mov ax, 3d02h
- lea dx, FILENAME
- int 21h
- mov handle, ax
- ; get file size
- mov ax, 4202h
- mov bx, handle
- mov cx, 0
- mov dx, 0
- int 21h
- mov file_len, ax
- ; if (file_len < cmd_N)
- mov bx, cmd_N
- cmp ax, bx
- jae @greater
- ; get count of symbols to write
- mov cx, cmd_N
- sub cx, ax
- @write_symbols:
- push cx
- mov ah, 40h
- mov cx, 1
- mov bx, handle
- lea dx, SYMBOLS
- int 21h
- pop cx
- loop @write_symbols
- jmp @close_file
- @greater: ; if (file_len > cmd_N)
- ; move pointer to cmd_N
- mov ax, 4200h
- mov bx, handle
- mov cx, 0
- mov dx, cmd_N
- int 21h
- ; write EOF
- mov ah, 40h
- mov bx, handle
- mov cx, 0
- int 21h
- @close_file:
- mov ah, 3eh
- mov bx, handle
- int 21h
- mov ah, 01h
- int 21h
- ret
- MAIN ENDP
- ; get parameters from cmd
- GET_PARAM PROC NEAR
- mov al, ds:82h
- sub al, 30h
- mov dl, al
- cbw
- mov bl, 10
- imul bl
- mov bx, ax
- mov al, ds:83h
- sub al, 30h
- js @one_symb
- cbw
- add bx, ax
- ret
- @one_symb:
- xor bx, bx
- mov bl, dl
- ret
- GET_PARAM ENDP
- CODESG ENDS
- END BEGIN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement