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

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

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

 
 Ответить  Открыть новую тему 
> Вывод в файл времени
18192123
сообщение 29.05.2008 9:52
Сообщение #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

 

- Текстовая версия 8.08.2025 2:07
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"