Вывод даты (день месяца) в файл - Assembler
Формулировка задачи:
Всем доброго времени суток.
в бинарный файл выводит дату не так как нужно (N.05.2016)
предполагаю что просто число не "обработано" для вывода (вывод осуществляется в бинарный файл lab8end.txt)
вот собственно и проблемка!
вот файлы для программы :
Листинг программы
- .model small
- .stack 100h
- .data
- c dw ?
- i dw ?
- j dw ?
- razmer equ 4
- razmer_1 equ 9
- massiv db 10 dup(?),'$'
- min db 10 dup(?),'$'
- hor db 4 dup(':'),'$'
- tim db 10 dup(?),'$'
- time db 10 dup('.'),'$'
- mas db 35 dup(?),'$'
- sum_1 db 20 dup(' '),'$'
- handle dw 0
- sum dw 0
- hour db 10 dup('.'),'$'
- fname db 'lab8end.txt',0
- FileName db 'Massiv.txt',0
- Ent db 0dh,0ah,10 dup(?),'$'
- Summa_2 db 0dh,0ah,'Kolichestvo polojitel elementov: ','$'
- FileNamee db 0dh,0ah,'File name: ','$'
- Date db 0dh,0ah,'Date: ',5 dup(?),'$'
- Timeee db 0dh,0ah,'Time: ',5 dup(?),'$'
- Suuum db 0dh,0ah,'Kolichestvo polojitel elementov: ',31 dup(?),'$'
- .code
- timee proc
- mov ah, 2aH
- int 21h
- ret
- timee endp
- start:
- mov ax,@data
- mov ds,ax
- mov ah, 3dh
- mov al, 0
- lea dx, FileName ; открываем файл, в котором находится матрица
- int 21h
- mov bx, ax
- xor cx, cx
- xor dx, dx
- mov ax, 4200h
- int 21h
- mov ah, 3fh
- mov cx, 40 ; считываем матрицу
- lea dx, mas-5
- int 21h
- mov ah, 09h
- lea dx, mas ; выводим матрицу на консоль
- int 21h
- mov c, 0
- mov ah,0
- mov bp,0
- mov si,0
- mov i, 0
- mov sum,0
- mov j, 0
- mov di,-1
- summa:
- ;сумма столбцов
- cmp bp, razmer
- je exit_1
- mov ax,razmer_1
- mul i
- mov bx,ax
- mov al,mas[bx][si]
- sub al,30h ; высчитываем сумму столбцов матрицы
- mov ah,0
- sal ax,15
- cmp ax,0
- je loop_2
- inc bp
- inc i
- jmp summa
- loop_2:
- inc bp
- inc i
- inc c
- jmp summa
- exit_1:
- cmp si, 6
- je exit_3
- inc si
- inc si
- mov i, 0
- mov bp,0
- jmp summa
- exit_3:
- mov ax, c
- mov cx,10
- mov dx,-1
- push dx
- sym_3:
- cmp ax,0
- je symb_3
- mov dx,0
- div cx
- push dx
- jmp sym_3
- symb_3:
- pop dx
- cmp dx, -1
- je loop_1
- inc di
- add dl,30h
- mov byte ptr[sum_1+di],dl
- jmp sym_3
- loop_1:
- mov sum,0
- inc di
- inc si
- inc si
- mov bp,0
- mov i,0
- cmp si,razmer+2
- jg exit_2
- jmp summa
- exit_2:
- mov ah, 09h
- lea dx, Summa_2
- int 21h
- mov ah, 09h
- lea dx, sum_1
- int 21h
- ;День
- call timee
- add dl,30h ; получаем день, когда был создан файл
- mov byte ptr[hour],dl
- ;Месяц
- call timee
- add dh,30h ; получаем месяц, когда был создан файл
- mov byte ptr[time],dh
- ;Год
- call timee
- mov ax,cx
- mov cx,10 ; получаем год, когда был создан файл
- mov si,-1
- mov dx,-1
- push dx
- sym:
- cmp ax,0
- je symb
- mov dx,0
- div cx
- push dx
- jmp sym
- symb:
- pop dx
- cmp dx, -1
- je viv
- inc si
- add dl,30h
- mov byte ptr[tim+si],dl
- jmp symb
- viv:
- ;Часы
- mov ah, 2ch
- int 21h
- mov al,ch
- mov ah,0 ; получаем часы, когда был создан файл
- mov cx,10
- mov si,-1
- mov dx,-1
- push dx
- sym_1:
- cmp ax,0
- je symb_1
- mov dx,0
- div cx
- push dx
- jmp sym_1
- symb_1:
- pop dx
- cmp dx, -1
- je viv_1
- inc si
- add dl,30h
- mov byte ptr[hor+si],dl
- jmp sym_1
- viv_1:
- ;Минуты
- mov ah, 2ch
- int 21h
- mov al, cl
- mov ah, 0
- mov cx,10 ; получаем минуты, когда был создан файл
- mov si,-1
- mov dx,-1
- push dx
- sym_2:
- cmp ax,0
- je symb_2
- mov dx,0
- div cx
- push dx
- jmp sym_2
- symb_2:
- pop dx
- cmp dx, -1
- je begin
- inc si
- add dl,30h
- mov byte ptr[min+si],dl
- jmp sym_2
- Mass proc
- mov ah, 40h
- mov bx, handle ; процедура вывода
- int 21h
- ret
- Mass endp
- begin:
- mov ah, 3ch
- mov cx, 0
- lea dx, fname ; создаём файл
- int 21h
- mov handle,ax
- lea dx, mas
- mov cx, 35 ; записываем в файл матрицу
- call Mass
- lea dx, FileNamee
- mov cx, 13
- call Mass
- lea dx, FileName
- mov cx, 11
- call Mass ; записываем в файл название файла, где хранится матрица
- lea dx, Date
- mov cx, 13
- call Mass
- lea dx, hour
- mov cx, 2
- call Mass ;дней
- lea dx, time
- mov cx, 2
- call Mass ;месяц
- lea dx, tim
- mov cx, 5
- call Mass ; rog
- lea dx, Timeee
- mov cx, 13
- call Mass
- lea dx, hor
- mov cx, 3
- call Mass ; часы
- lea dx, min
- mov cx, 5
- call Mass ; мину
- lea dx, suuum
- mov cx, 35
- call Mass
- lea dx, sum_1
- mov cx, 15
- call Mass ; записываем в файл сумму нечётных элементов в каждом столбце
- mov ah, 3eh ; закрываем файл
- mov bx, handle
- int 21h
- mov ax, 4c00h
- int 21h
- end start ; конец программы
Решение задачи: «Вывод даты (день месяца) в файл»
textual
Листинг программы
- day db 10 dup('.'),'$'
Объяснение кода листинга программы
- Переменная
day
содержит значение 10. - Дубликатор
.
повторяет символ '.' 10 раз. - Знак доллара '$' обозначает конец строки.
- В результате в файл выводится строка
..........
(10 точек и символ конца строки).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д