IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

 
 Ответить  Открыть новую тему 
> Вывод в файл времени
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Объясните пожалуста, почему в ниже приведённой части программы данные о времени не записываются в файл, а происходит вывод на экран??


wywod proc near
push ax
push cx
push dx
; Поделим это число на десять. Остаток - правая цифра -
; получится в AL, частное в AH.
aam
; Запомним младшую цифру, перейдём к частному.
mov cl, al
mov al, ah
; Его тоже поделим на десять. В AL получим вторую цифру,
; в AH - частное от деления исходного числа на 100.
; А это старшая цифра, ведь в один байт помещаются
; максимум трёхзначные числа.
aam
mov ch, al
mov dl, ah
; Итак, теперь цифры числа хранятся в DL, CH, CL.
; Приступим к выводу. Заготовим номер функции.
mov ah, 02h
; Переведём все цифры в символы.
add dl, 30h
add cx, 3030h
; Теперь попытаемся избежать вывода незначащих нулей.
; Если старшая цифра не ноль, начинаем вывод с неё.
cmp dl, 30h
jnz ob1 ;short
; Если ноль, то проверяем вторую цифру.
cmp ch, 30h
jnz ob2 ;short
; Если она тоже ноль, то выведем только младшую,
; даже если и она ноль.
jmp ob2 ;3 ;short
ob1:
mov dl,dl
int 21h
ob2: mov dl,ch
int 21h
ob3: mov dl,cl
int 21h
pop dx
pop cx
pop ax
ret
wywod endp

;....

mov ax,3D01h
mov dx,offset File_Name
int 21h
jc Error_
mov Handle,ax

; если файл открыт успешно...
mov ah,40h
mov bx,Handle
mov cx,10

mov AH,2Ch ; CH - час, CL - мин, DH - сек, DL - 1/100 сек
int 21h

mov al,ch
call wywod
mov al,cl
call wywod
mov al,dh
call wywod


int 21h

mov ah,3Eh
mov bx, Handle
int 21h
;файл закрыт
jmp ex
Error_:
mov AH,09h
mov DX,offset Err
int 21h
ex:

mov ah,08h
int 21h

mov ax,4c00h
int 21h

;....
File_Name db 'g:\file.txt',0
Handle dw 0
Err db 'Error!$'
chas db 0
min db 0
sec db 0



 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 17.10.2021 10:06
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name