Программирование и основы алгоритмизации

Контрольная работа - Компьютеры, программирование

Другие контрольные работы по предмету Компьютеры, программирование

x,0

;;; поле2

 

push0

pushhInst

push0

push@@hwnd

push20

push35

push50

push50

pushSTYLEDT

pushoffset CPEDT

pushoffset CLSEDT

push0

callCreateWindowExA

movhh2,eax

moveax,0

 

;;;;;;3

 

push0

pushhInst

push0

push@@hwnd

push20

push35

push50

push90

pushSTYLEDT

pushoffset CPEDT

pushoffset CLSEDT

push0

callCreateWindowExA

movhh3,eax

moveax,0

 

 

;;;;;

 

push0

pushhInst

push0

push@@hwnd

push20

push80

push80

push10

pushSTYLBTN;STYLBTN

pushoffset CPBUT

pushoffset CLSBTN

push0

callCreateWindowExA

movhbtn,eax

moveax,0

 

push0

pushhInst

push0

push@@hwnd

push20

push80

push80

push 100

pushSTYLBTN;STYLBTN

pushoffset CPBUT2

pushoffset CLSBTN

push0

callCreateWindowExA

movhbtn2,eax

moveax,0

 

;возвращаемое значение 0

jmpexit_wndproc

wmcommand:

moveax, hbtn

cmp@@lparam,eax

jecalc

moveax, hbtn2

cmp@@lparam,eax

jeres

 

 

 

 

 

wmnodestroy:

moveax,0

jmpexit_wndproc

 

res:

 

jmp wmdestroy

 

wmpaint:

pushoffsetps

push@@hwnd

callBeginPaint

mov@@hdc,eax

 

pushMesWindowLen

pushoffset MesWindow

push20

push10

push@@hdc

callTextOutA

 

;освободить контекст

pushoffset ps

push@@hdc

callEndPaint

moveax,0;возвращаемое значение 0

jmpexit_wndproc

 

 

 

wmdestroy: ;послать сообщение WM_QUIT

push0

callPostQuitMessage

moveax,0;возвращаемое значение 0

jmpexit_wndproc

 

default:

;обработка по умолчанию

push@@lparam

push@@wparam

push@@mes

push@@hwnd

callDefWindowProcA

jmp exit_wndproc

 

calc:

 

;считываем поле 1

pushoffset TEXTA

push150

pushWM_GETTEXT

pushhh1

callSendMessageA

 

pushoffset TEXTA

callStringToDig

mova,eax

 

 

;поле 2

pushoffset TEXTA

push150

pushWM_GETTEXT

pushhh2

callSendMessageA

 

pushoffset TEXTA

callStringToDig

movb,eax

 

 

;поле 3

pushoffset TEXTA

push150

pushWM_GETTEXT

pushhh3

callSendMessageA

 

pushoffset TEXTA

callStringToDig

movn,eax

 

 

movecx,n

moveax,1d

repeat:

imula

looprepeat

imulb

 

aam

orax,3030h

mov [TEXTB+12],ah

mov [TEXTB+13],al

 

push@@hwnd

callGetDC

mov@@hdc,eax

 

push18

pushoffset TEXTB

push120

push10

push@@hdc

callTextOutA

 

 

exit_wndproc:

 

ret

WindowProcendp

 

 

StringToDig proc near

ARG @@TEXT:DWORD

movesi,@@TEXT

moveax,0

movedx,0

movdl,[esi]

cmp dl,-

jne N

mov temp,1

inc esi

movdl,[esi]

 

N:cmpdl,0

 

jlMRET

cmpdl,9

jgMRET

 

anddl,0Fh ; ASCII->BCD

addeax,edx

multen

incesi

movdl,[esi]

 

cmpdl,0

jlMDIV

cmpdl,9

jgMDIV

 

;multen

anddl,0Fh

addeax,edx

jmpMRET

 

MDIV:divten

MRET:

cmp temp,1

jne n1

imul eax,-1

mov temp,0

 

n1:ret

StringToDig endp

 

 

 

endstart

  1. Схема алгоритма

Вывод результата работы

 

 

 

  1. Проверка правильности программы

 

1)

2)

3)

4)

Данные, полученные в результате вычислений, совпадают с теми, что были получены в результате выполнения программы.