- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
.386
.model flat,stdcall
option casemap:none
include c:\masm32\includes\windows.inc
include c:\masm32\includes\user32.inc
include c:\masm32\includes\kernel32.inc
includelib c:\masm32\lib\user32.lib
includelib c:\masm32\lib\kernel32.lib
bufsize EQU 12
.data
a dd 300
b dd 500
d dd 300
fmt db "Max = %2d",0
buf db bufsize dup(0)
ctrlf db 0dh,0ah
stdout dd ?
cWritten dd ?
result dd ?
.code
start:
invoke GetStdHandle,STD_OUTPUT_HANDLE
mov stdout,eax
mov eax,a
mov result,eax ; изначально максимальный это a
cmp eax,b ; сравниваем со вторым числом
jbe big1 ; если a<=b , значит b больше a
ja min1 ; иначе a ещё максимальное
big1:
mov eax,b
mov result,eax ;теперь b максимальное
cmp eax,d
jbe big2 ; максимальное c
jmp print
big2:
mov eax,d
mov result,eax ;максимальный c
jmp print
min1:
mov eax,d
cmp eax,a
jbe big3
mov result,eax
jmp print
big3:
mov eax,a
mov result,eax
jmp print
print:
mov edx,result
invoke wsprintf, ADDR buf, ADDR fmt, edx
invoke WriteConsoleA, stdout, ADDR buf, bufsize, ADDR cWritten, NULL
invoke WriteConsoleA, stdout, ADDR ctrlf, 2, ADDR cWritten, NULL
end start
С ума сойти. И это сравнение трёх чисел, которое делается в два простейших условия...
Govnocoder#0xFF 19.04.2011 17:57 # 0
JeremyW 19.04.2011 19:59 # 0
RaZeR 19.04.2011 21:19 # +6
JeremyW 19.04.2011 21:33 # 0
guest 19.04.2011 18:11 # +3
Ymilij 19.04.2011 19:49 # +2
guest 19.04.2011 20:49 # 0
Ymilij 19.04.2011 20:54 # 0
Govnocoder#0xFF 19.04.2011 21:15 # 0
TheCalligrapher 19.04.2011 21:22 # 0
Ymilij 20.04.2011 05:44 # 0
monobogdan 25.08.2021 07:46 # 0