Lazar
Гость
|
|
« : 12-05-2007 06:12 » |
|
Здравствуйте, уважаемые эксперты. Появилась новая проблема. Есть своеобразная задачка в Linux. Ввожу данные со стандартного ввода посредством двух процедур input_first_value и input_second_value в buffer1 и buffer2 соответственно. Можно ли сделать общую процедуру ввода данных в разные buffer'ы? И каким образом?
Общая задача у меня такова: ввести два десятичных числа, преобразовать их в двоичные, сложить и вывести на экран...
GLOBAL _start SEGMENT .txt _start: ;------------------------------------------ call output_titl1
call input_first_value
call output_titl3
call output_first_value ;------------------------------------------ call output_titl2
call input_second_value
call output_titl4
call output_second_value
call output_result ;------------------------------------------ input_first_value: mov eax,3 mov ebx,0 mov ecx,buffer1 mov edx,20 int 80h ret
input_second_value: mov eax,3 mov ebx,0 mov ecx,buffer2 mov edx,20 int 80h ret
output_first_value: mov eax,4 mov ebx,1 mov ecx,buffer1 mov edx,20 int 80h ret
output_second_value: mov eax,4 mov ebx,1 mov ecx,buffer2 mov edx,20 int 80h ret
output_titl1: mov eax,4 mov ebx,1 mov ecx,titl1 mov edx,24 int 80h ret
output_titl2: mov eax,4 mov ebx,1 mov ecx,titl2 mov edx,26 int 80h ret
output_titl3: mov eax,4 mov ebx,1 mov ecx,titl3 mov edx,30 int 80h ret
output_titl4: mov eax,4 mov ebx,1 mov ecx,titl4 mov edx,31 int 80h ret
output_result: mov eax,1234567890 mov esi,10 mov ecx,0 pov: mov edx,0 div esi add dl,'0' push edx inc ecx cmp eax,0 jne pov mov [cnt],ecx izv: pop edx mov [digit],dl mov eax,4 mov edx,1 mov ecx,digit mov edx,1 int 80h dec dword [cnt] cmp dword [cnt],0 jne izv mov eax,1 int 80h ret
SEGMENT .data digit db 0 cnt dd 0 titl1 db 'Enter the first value:',13,10 titl2 db 'Enter the second value: ',13,10 titl3 db 'Buffer control. First value:',13,10 titl4 db 'Buffer control. Second value:',13,10 buffer1 times 20 db 0 buffer2 times 20 db 0
|