Учусь програмировать на ассамблере. Делаю задачу про Систменый таймер. После использовании функции прерывания.ЗНачения времени помещаются в регистры. И я например хочу вывести время на экран HH:MM:SS Как вывести содержимое регистров на экран ,например в com программе. Пробывал вторую функцию и шестую.Но на экране пусто.Помогите пожалкйста. Приведите мне пример : Например у нас что то в регистре cx.Например счётчик. mov cx,16 Как мне вывести на экран что там 16 ? Заранне спасибо
Exorcist Код (Text): conv_w_to_ascii proc ;di result ;bx input push dx push cx push ax mov ax, bx xor bx, bx xor dx, dx mov cx, 10000 div cx test ax, ax jz _next_1 add al, '0' mov [di], al inc di mov bx, 1 _next_1: mov ax, dx xor dx, dx mov cx, 1000 div cx test ax, ax jz next_2 add al, '0' mov [di], al inc di mov bx, 1 jmp _next_2 next_2: test bx, bx jz _next_2 mov byte ptr [di], '0' inc di _next_2: mov ax, dx xor dx, dx mov cx, 100 div cx test ax, ax jz next_3 add al, '0' mov [di], al inc di mov bx, 1 jmp _next_3 next_3: test bx, bx jz _next_3 mov byte ptr [di], '0' inc di _next_3: mov ax, dx xor dx, dx mov cx, 10 div cx test ax, ax jz next_4 add al, '0' mov [di], al inc di mov bx, 1 jmp _next_4 next_4: test bx, bx jz _next_4 mov byte ptr [di], '0' inc di _next_4: add dl, '0' mov [di], dl inc di mov byte ptr[di], 0 pop ax pop cx pop dx ret endp conv_w_to_ascii функция преобразования слова в строку(не оптимальная, но наглядная) и вообще срочно почитай зубкова
Код (Text): Procedure_BIN2STRHEX: push ebp mov ebp,esp push ebx push edi mov ebx,[ebp+8] mov edi,[ebp+12] push eax push ecx mov ecx,8 mov ax,"0x" stosw Procedure_BIN2STRHEX_NEXT: rol ebx,4 mov al,bl and al,0x0f add al,0x30 cmp al,0x3A jc @f add al,7 @@: stosb loop Procedure_BIN2STRHEX_NEXT mov al,0 stosb pop ecx pop eax pop edi pop ebx pop ebp ret Procedure_UBIN2STRDEC: push ebp mov ebp,esp push eax push edi mov eax,[ebp+8] mov edi,[ebp+12] push edx push ebx test eax,eax jnz @f mov ax,"0" stosw jmp Procedure_BIN2STRDEC_ZERO @@: cmp eax,1000000000 jnc Procedure_UBIN2STRDEC1000000000 cmp eax,100000000 jnc Procedure_UBIN2STRDEC100000000 cmp eax,10000000 jnc Procedure_UBIN2STRDEC10000000 cmp eax,1000000 jnc Procedure_UBIN2STRDEC1000000 cmp eax,100000 jnc Procedure_UBIN2STRDEC100000 cmp eax,10000 jnc Procedure_UBIN2STRDEC10000 cmp eax,1000 jnc Procedure_UBIN2STRDEC1000 cmp eax,100 jnc Procedure_UBIN2STRDEC100 cmp eax,10 jnc Procedure_UBIN2STRDEC10 jmp Procedure_UBIN2STRDEC1 Procedure_UBIN2STRDEC1000000000: xor edx,edx mov ebx,1000000000 div ebx add al,0x30 stosb mov eax,edx Procedure_UBIN2STRDEC100000000: xor edx,edx mov ebx,100000000 div ebx add al,0x30 stosb mov eax,edx Procedure_UBIN2STRDEC10000000: xor edx,edx mov ebx,10000000 div ebx add al,0x30 stosb mov eax,edx Procedure_UBIN2STRDEC1000000: xor edx,edx mov ebx,1000000 div ebx add al,0x30 stosb mov eax,edx Procedure_UBIN2STRDEC100000: xor edx,edx mov ebx,100000 div ebx add al,0x30 stosb mov eax,edx Procedure_UBIN2STRDEC10000: xor edx,edx mov ebx,10000 div ebx add al,0x30 stosb mov eax,edx Procedure_UBIN2STRDEC1000: xor edx,edx mov ebx,1000 div ebx add al,0x30 stosb mov eax,edx Procedure_UBIN2STRDEC100: xor edx,edx mov ebx,100 div ebx add al,0x30 stosb mov eax,edx Procedure_UBIN2STRDEC10: xor edx,edx mov ebx,10 div ebx add al,0x30 stosb mov al,dl Procedure_UBIN2STRDEC1: add al,0x30 stosb mov al,0 stosb Procedure_BIN2STRDEC_ZERO: pop ebx pop edx pop edi pop eax pop ebp ret Procedure_SBIN2STRDEC: push ebp mov ebp,esp push eax push edi mov eax,[ebp+8] mov edi,[ebp+12] test eax,0x80000000 jz @f push eax mov al,'-' stosb pop eax xor eax,0xFFFFFFFF inc eax @@: push edi push eax call Procedure_UBIN2STRDEC add esp,8 pop edi pop eax pop ebp ret