Вывод даты (день месяца) в файл - 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('.'),'$'

Объяснение кода листинга программы

  1. Переменная day содержит значение 10.
  2. Дубликатор . повторяет символ '.' 10 раз.
  3. Знак доллара '$' обозначает конец строки.
  4. В результате в файл выводится строка .......... (10 точек и символ конца строки).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5
Похожие ответы