ВИДЫ ПЕРЕМЕННЫХ
НА ЯЗЫКЕ 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'; НА ЯЗЫКЕ 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(c) Veliant