push CRD
push STDOUT
call SetConsoleCursorPosition@8
call mexit
ret
working endp
;получение описателей консоли
getHandles proc NEAR
push STD_OUTPUT_HANDLE
call GetStdHandle@4
mov STDOUT, eax
push STD_INPUT_HANDLE
call GetStdHandle@4
mov STDIN, eax
ret
getHandles endp
;процедура возвращает сумму
getSum proc NEAR,
recv : DWORD
mov esi, sumptr
mov edi, recv
mov ecx, 10
rep movsb
mov eax, nsum
ret
getSum endp
;вывод в консоль числа в десятичном виде
putDec proc NEAR
push CRD
mov CRD.X, 35
push CRD
push STDOUT
call SetConsoleCursorPosition@8
push number
push offset fmt
push offset buf
call wsprintfA
ADD ESP, 12
push 0
push offset lens
push eax
push offset buf
push STDOUT
call WriteConsoleA@20
mov CRD.X, 21
pop CRD
push CRD
push STDOUT
call SetConsoleCursorPosition@8
mov eax,0
ret
putDec endp
;вывод в консоль числа в шестнадцатеричном виде виде
putHex proc NEAR
push CRD
mov CRD.X, 13
push CRD
push STDOUT
call SetConsoleCursorPosition@8
mov ebx, 0f0000000h ;инициализировали битовый шаблон
mov ecx, 7 ;количество проверяемых hex знаков
mov edi, ptr1
@1: shr ebx, 4 ;сдвинули шаблон
pusha ;сохранили регистры
mov eax, 4
mul ecx
sub eax, 4
mov cl, al ;получили коэффициент
mov edx, number
and edx, ebx ;сверили число с шаблоном
shr edx, cl ;сдвинули результат
cmp edx, 10
jl @3
add edx, 'a'-10
jmp @2
@3: add edx, '0' ;добавили символ нуля
@2: push edx
call _putch ;вывели символ
pop edx
mov al, dl
stosb ;переслали символ в строку
popa
inc edi
loop @1 ;ещё не всё число осмотрено
;установили позицию курсора
mov CRD.X, 21
pop CRD
push CRD
push STDOUT
call SetConsoleCursorPosition@8
mov eax,0
ret
putHex endp
;процедура для выхода только по q
mexit proc NEAR
mov eax, emlen
push 0 ;
push offset lens ;
push emlen ;
push offset exitMsg ;приглашение к выходу
push STDOUT ;
call WriteConsoleA@20 ;
again: call _getch ;считали символ
cmp al, 'q'
jne again
mov eax, 0
ret
mexit endp
end
4) Набор тестов:
№ п.п. |
Входные данные |
Перевод чисел |
Результат (сумма двух чисел) |
||
HEX_1 |
HEX_2 |
DEC_1 |
DEC_2 |
||
1. |
0 |
0 |
0 |
0 |
0 (0) |
2. |
ffffff |
ffffff |
16777215 |
16777215 |
1fffffe (33554430) |
3. |
a |
0 |
10 |
0 |
a (10) |
4. |
1cd |
8a34 |
461 |
35380 |
8c01 (35841) |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.