Вывод даты (день месяца) в файл - 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 точек и символ конца строки).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д