조건분기명령(cmp, jmp) 명령어 사용을 최소한으로 사용하여
두 값들 중 최댓값을 찾는 프로그램
max.asm
%include "asm_io.inc"
segment .data
message1 db "Enter a number: ",0
message2 db "Enter another number: ",0
message3 db "The larger number is: ",0
segment .bss
input1 resd 1
segment .text
global _asm_main
_asm_main:
enter 0,0
pusha
mov eax,message1
call print_string
call read_int
mov [input1],eax
mov eax, message2
call print_string
call read_int
xor ebx,ebx
cmp eax,[input1]
setg bl
neg ebx
mov ecx,ebx
and ecx,eax
not ebx
and ebx,[input1]
or ecx,ebx
mov eax,message3
call print_string
mov eax,ecx
call print_int
call print_nl
popa
mov eax,0
leave
ret
setg두번째 입력값(eax>[input1])이 최대값이면 1, 아니면 0으로 BL 레지스터를 설정한다.
neg
명령어는 2의 보수로 만드는 명령어이다. 즉 값에 (-1)을 곱한값을 준다.