Created
March 12, 2012 15:54
-
-
Save spellancer/2022929 to your computer and use it in GitHub Desktop.
laba3
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.DATA | |
usl DB 13,10,'### B=(a*a-b*b) + a if a*a/g<8, else b=8 ',13,10,0 | |
error DB 13,10,' Error! division by zero! Enter correct #g!',13,10,0 | |
zapa DB 13,10,'Enter value #a:',13,10,0 | |
zapb DB 13,10,'Enter value #b:',13,10,0 | |
zapg DB 13,10,'Enter value #g (g<>0 !):',13,10,0 | |
ots db 13,10,'---------------------',13,10,0 | |
result DB 13,10,'Result:',13,10,0 | |
res db " ",0 | |
.DATA? | |
inbuf DB 100 DUP (?) | |
Buffer DB 10 DUP (?) | |
a sdword ? | |
b sdword ? | |
g sdword ? | |
.CODE | |
Start: | |
;ввод исходных данных | |
Invoke StdOut,ADDR usl | |
Invoke StdOut,ADDR zapa | |
Invoke StdIn,ADDR Buffer,LengthOf Buffer | |
Invoke StripLF,ADDR Buffer | |
; Преобразование в SDWORD | |
Invoke atol,ADDR Buffer | |
mov a,EAX | |
Invoke StdOut,ADDR zapb | |
Invoke StdIn,ADDR Buffer,LengthOf Buffer | |
Invoke StripLF,ADDR Buffer | |
; Преобразование в SDWORD | |
Invoke atol,ADDR Buffer | |
mov b,eax | |
begin: | |
Invoke StdOut,ADDR zapg | |
Invoke StdIn,ADDR Buffer,LengthOf Buffer | |
Invoke StripLF,ADDR Buffer | |
; Преобразование в SDWORD | |
Invoke atol,ADDR Buffer | |
mov g,eax | |
;начало | |
mov eax,a | |
imul eax | |
;проверка деления на ноль | |
cmp g,0 | |
JNE neravno | |
; при g=0 выдаем ошибку, и возвращаемся к вводу значения g | |
Invoke StdOut,ADDR error | |
jmp begin | |
;g<>0, выполняем вычисления | |
neravno: | |
mov ecx,g | |
cdq | |
idiv ecx | |
cmp eax,8 | |
;проверка a*a/g < 8 | |
JL inache | |
;при больше или равно | |
mov ebx,8 | |
mov b,ebx | |
jmp next | |
;при меньше | |
inache: ; | |
mov eax,a | |
imul eax | |
mov ebx,eax | |
mov eax,b | |
imul eax | |
sub ebx,eax | |
add ebx,a | |
mov b,ebx | |
next: | |
;вывод результатов | |
Invoke StdOut,ADDR ots | |
Invoke StdOut,ADDR result | |
Invoke dwtoa,b,ADDR res | |
Invoke StdOut,ADDR res |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment