title: Четвертая лекция
layout: math
toc: true
Пример кода с метками
.globl _start
.text
_start:
#	jmp	d0
#============
#	jmp	*eee
#============
#	 movq	$d0, %rbx
#	 pushq	%rbx
#	 retq
#============
#	mov eee, %rbx
#	jmp	*%rbx
#============
#	mov eee, %rbx
#	jmp	*(%rbx)
#============
#	pushq eee
#	retq
#============
#	mov		$xxx, %rbx
#	jmp		*32(%rbx)
#============
#	mov		$xxx, %rbx
#	call	*32(%rbx)
metka1: .byte	0, 1, 0xf	#данные в секции
		.align	4
metka2: .word	2, 2, 0x0, 0x25
		.align	8
metka3: .long	3, 3, 23
		.align	4
metka4:
		.quad	1, 2, 3, 4, 5
d0:
		 mov	$1, %eax
		 mov	$1, %edi
		 mov	$mess, %rsi
		 mov	$lmess, %edx
		 syscall
#
		 mov	$60, %eax
		 mov    $1, %edi
		 mov	$mess, %rsi
		 mov	$lmess, %edx
Младшие биты регистра флагов процессора и соответствующие им условные переходы
| 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 
|---|---|---|---|---|---|---|---|---|---|---|---|
| O | D | T | T | S | Z | x | A | x | P | 1 | C | 
A→ above, больше
E→ equal, равно
B→ below, меньше
G→ greater, больше со знаком
N→ not, не
L→ less, меньше со знаком
J→ jmp
И их сочетания (JA, JNBE, JAE, JNB…)
#	cmp	%al, %bl
#	ja	if
#	jg	if
#	jns	if
	mov	$15, %cx
1:
	inc		%al
	dec		%bl
	dec		%cx
	jnz		lb
#	loop	lb - аналогично последним двум, но МЕДЛЕННЕЕ!!!
#
	cmp		%al, %bl
	ja		if
#
	movq	$mesl, %rsi
	movq	$l1, %rdx
	jmp	2f
1:
	movq	$mes2, %rsi
	movq	$l2, %rdx
2:
	movq	$1, %rax
	movq	$1, %rdi
	syscall
	movq	$60, %rax
	syscall
1:
.data
mes1:	.ascii :Условие не выполнено!\n:
li=.	-mes1
mes2:	.ascii "Условие выполнено!\n"