Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2009, 16:51   #1
ADA
Новичок
Джуниор
 
Регистрация: 10.05.2009
Сообщений: 1
По умолчанию INT 10H Вывод строки

Здравствуйте. Скажите в чём ошибка. Просматривал в TD - при записи данных в ячейки памяти их содержимое почему-то не меняется. ОС Vista, TASM

Код:
.model small
.stack 256
.data
time db 10 dup (?),'$'
counter dw 0000h;

.code
;вызов функции определения времени $2C. Он возвращает:
;CH - часы,CL - минуты,DH - секунды,DL - миллисекунды (с дискретностью 55 мс) 0-48, 1-49; 59=3Bh;9=Bh
setcursor proc
	push ax;
	push bx;
	push dx;
	mov dx,0000;строка и столбец
	mov ax,0200;
	mov bx,0000h;
	int 10h
	pop dx;
	pop bx;
	pop ax;
	ret;
setcursor endp

writetime proc
	lea bp,time;	
	mov cx,8;
	mov ax, 1300h;
	mov bl,3ch;
	mov dx, 0A05h;
	int 10h
	ret
writetime endp

main proc
NI:  mov ah, 2ch
  int 21h
  xor ah,ah
  lea BP, time
  ;
  mov bl,ch
  call HexToDecStr
  mov [ ES : BP ], bx;
  mov [ ES : BP + 2 ], 3ah; :
  ;
  ;
  mov bl,cl
  call HexToDecStr
  mov [ ES : BP + 3 ], bx;
  mov [ ES : BP + 5 ], 3ah; :
  ;
  ;
  mov bl,dh
  call HexToDecStr
  mov [ ES : BP + 6 ], bx;
  mov [ ES : BP + 9 ], 0;36;$
  ;
  call writetime
  ;mov ax, counter;
  ;inc ax;
  ;mov counter, ax
  ;cmp ax, 10h
  ;jae l_exit;
  ;jmp NI;
l_exit: .exit  
main endp

HexToDecStr proc ;bl-Вход, Bh:Bl Выход
	xor ax,ax;
	cmp bl, 50	
	jb HTDS4
	mov bh,5;
	jmp HTDS
HTDS4:	cmp bl, 40	
	jb HTDS3
	mov bh,4
	jmp	HTDS
HTDS3:	cmp bl, 30	
	jb HTDS2
	mov bh,3
	jmp	HTDS
HTDS2:	cmp bl, 20	
	jb HTDS1
	mov bh,2
	jmp	HTDS
HTDS1:	cmp bl, 10	
	jb HTDS0
	mov bh,1
	jmp HTDS
HTDS0: mov bh,0;
HTDS:	mov al, 10
		MUL bh;
		SUB bl,al; bh-старший разряд, bl-младший в hex
		add bl,48;
		add bh,48;		
	ret
HexToDecStr endp
end main
Спасибо.

Последний раз редактировалось rpy3uH; 14.05.2009 в 19:54.
ADA вне форума Ответить с цитированием
Старый 12.05.2009, 08:33   #2
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

а куда вы пишите в памяти полученные значения?
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 14.05.2009, 09:44   #3
Min
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 239
По умолчанию

Вы используете ES. А он у вас на что указывает? и DS тоже не проинициализирован (хотя может его и не надо).
Попробуйте вначале main'а добавить:
Код:
mov ax,cs
mov ds,ax
mov es,ax
Надо бы избавиться от привычки ставить многоточие.....
Min вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод строки с опред. позиции Rekky Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 13.05.2009 10:29
из char в int llin Общие вопросы C/C++ 13 11.07.2008 06:51
mov ax,13h int 10h и Borland Pascal виснет..? Siddharta Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 01.07.2008 11:27
int to str andrey4623 Общие вопросы C/C++ 2 04.02.2008 17:44
Вывод через Int 10h braun Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 11.11.2007 17:46