Íàçàä

ÂÈÄÛ ÏÅÐÅÌÅÍÍÛÕ

ÍÀ ßÇÛÊÅ PASCAL:
	I:INTEGER = 5;
	C:CHAR;
	S:STRING = 'HELLO WORLD!';
	W:WORD;
	A:ARRAY [0..3] OF INTEGER;
	B:BYTE;
	
ÍÀ ßÇÛÊÅ ASSEMBLER:
	I	DD 5			;DOUBLE WORD (ÄÂÎÉÍÎÅ ÑËÎÂÎ) = 4Á
	C	DB ?			;BYTE (ÁÀÉÒ) = 1Á
	S	DB 'HELLO WORLD!'	;BYTE (ÁÀÉÒ) = 1Á
	W	DW ?			;WORD (ÑËÎÂÎ) = 2Á
	A:	DD ?			;DD ÒÀÊ ÊÀÊ Ó ÍÀÑ ÌÀÑÑÈÂ ÒÈÏÀ INTEGER
		RB 4			;ÒÓÒ ÐÀÇÌÅÐ ÌÀÑÑÈÂÀ
	B	DB ?			;BYTE (ÁÀÉÒ) = 1Á
	

ÎÏÅÐÀÖÈß ÏÐÈÑÂÀÈÂÀÍÈß È ÀÐÈÔÌÅÒÈ×ÅÑÊÈÅ ÄÅÉÑÒÂÈß

ÍÀ ßÇÛÊÅ PASCAL:
	X:=1;
	Y:=X+1;
	Z:=X-2;
	W:=Z*5/7;
	
ÍÀ ßÇÛÊÅ ASSEMBLER:
	MOV	[X],1
	MOV	EAX,[X]
	ADD	EAX,1
	MOV	[Y],EAX
	MOV	EAX,[X]
	SUB	EAX,2
	MOV	[Z],EAX
	MOV	EAX,[Z]
	IMUL	EAX,5
	XOR	EDX,EDX		;ÎÑÒÀÒÎÊ ÎÒ ÄÅËÅÍÈß ÇÀÏÈÑÛÂÀÅÒÑß Â EDX ÏÎÝÒÎÌÓ Î×ÈÙÀÅÌ ÅÃÎ
	MOV	EBX,7
	IDIV	EBX
	MOV	[W],EAX			
	

ÎÏÅÐÀÖÈß ÑÐÀÂÍÅÍÈß IF

ÍÀ ßÇÛÊÅ PASCAL:
	IF N=15
	THEN X:=1
	ELSE X:=0;
	
ÍÀ ßÇÛÊÅ ASSEMBLER:
	MOV	EAX,[N]		
	CMP	EAX,15
	JE	.YES
		MOV	[X],0
		JMP	.END
	.YES:
		MOV	[X],1
	.END:
	

ÖÈÊË FOR

ÍÀ ßÇÛÊÅ PASCAL:
	FOR I:=0 TO 10 DO
	BEGIN
		X:=X+1;
	END;
	
ÍÀ ßÇÛÊÅ ASSEMBLER:
	MOV	ECX,0
	.NACHALO:
		MOV	EAX,[X]
		ADD	EAX,[X]
		INC	EAX
		INC	ECX	;ÓÂÅËÈ×ÈÂÀÅÌ Ñ×ÅÒ×ÈÊ
	CMP	ECX,10
	JNE	.NACHALO
	

ÖÈÊË REPEAT-UNTIL

ÍÀ ßÇÛÊÅ PASCAL:
	REPEAT
		X:=X+1;
	UNTIL	(X>Y)
	
ÍÀ ßÇÛÊÅ ASSEMBLER:
	.NACHALO:
		MOV	EAX,[X]
		ADD	EAX,[X]
		INC	EAX
	MOV	EBX,[Y]
	CMP	EAX,EBX
	JLE	.NACHALO	;ÅÑËÈ ÌÅÍÜØÅ ÈËÈ ÐÀÂÍÎ, ÒÎ ÏÐÎÄÎËÆÀÅÌ ÖÈÊË
	

ÎÏÅÐÀÒÎÐ CASE

ÍÀ ßÇÛÊÅ PASCAL:
	CASE I DO
		0: X:='0';
		1: X:='1';
	END;
	
ÍÀ ßÇÛÊÅ ASSEMBLER:
	MOV	EAX,[I]
	CMP	EAX,0
	JNE	.NENULL
		MOV	[X],'0'
		JMP	.ENDCASE
	.NENULL:
	CMP	EAX,1
	JNE	.ENDCASE
		MOV	[X],'1'
		JMP	.ENDCASE
	.ENDCASE:
	

(c) Veliant